diff --git a/content/abdera.md b/content/abdera.md
deleted file mode 100644
index 9d5fdc5..0000000
--- a/content/abdera.md
+++ /dev/null
@@ -1,201 +0,0 @@
-<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"></meta>--&gt;Title: Abdera Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Abdera project graduated on 2008-11-08</span>
-
-
-The Abdera project is an implementation of the Atom Syndication Format (RFC4287) and the Atom Publishing Protocol specifications published by the IETF Atompub working group.
-
-
-
-- 2008-07-17 - New committer: David Calavera
-
-- 2008-07-17 - New committer: Jim Ancona
-
-- 2008-04-11 - Released version 0.4.0-incubating
-
-- 2007-10-22 - New committer: Dan Diephouse
-
-- 2007-10-05 - Released version 0.3.0-incubating
-
-- 2007-07-25 - New committer: Brian Moseley
-
-- 2007-02-19 - Released version 0.2.2-incubating
-
-- 2006-10-25 - New committer: Ugo Cei
-
-- 2006-10-05 - Released version 0.2.0-incubating
-
-- 2006-08-25 - Released version 0.1.0-incubating
-
-- 2006-07-10 - New committer: Stephen Duncan
-
-- 2006-07-10 - New committer: Garrett Rooney
-
-
--  [http://incubator.apache.org/abdera](http://incubator.apache.org/abdera) 
-
-
--  [Mailing Lists](http://incubator.apache.org/abdera/project.html#lists) 
-
--  [Source](http://svn.apache.org/repos/asf/incubator/abdera/) 
-
--  [Wiki](http://cwiki.apache.org/ABDERA) 
-
-
--  [Status](http://incubator.apache.org/projects/abdera.html) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/abdera/](http://incubator.apache.org/abdera/)  |
-| . | wiki | . |
-| Mailing list | dev |  `abdera-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `abdera-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `abdera-user`  `@`  `incubator.apache.org`  |
-| . | ppmc |  `abdera-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | Jira |  [https://issues.apache.org/jira/browse/ABDERA](https://issues.apache.org/jira/browse/ABDERA)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/abdera/](http://svn.apache.org/repos/asf/incubator/abdera/)  |
-| Mentors | rooneg | Garrett Rooney |
-| . | pquerna | Paul Querna |
-| Committers | eliast | Elias Torres |
-| . | rubys | Sam Ruby |
-| . | yoavs | Yoav Shapira |
-| . | jmsnell | James M Snell |
-| . | ryates | Robert Yates |
-| . | rooneg | Garrett Rooney |
-| . | juduncans | Stephen Duncan |
-| . | ugo | Ugo Cei |
-| . | dandiep | Dan Diephouse |
-
-
--  [February 2008 Report](http://wiki.apache.org/incubator/February2008) 
-
--  [November 2007 Report](http://wiki.apache.org/incubator/November2007) 
-
--  [August 2007 Report](http://wiki.apache.org/incubator/August2007) 
-
--  [May 2007 Report](http://wiki.apache.org/incubator/May2007) 
-
--  [February 2007 Report](http://wiki.apache.org/incubator/February2007) 
-
--  [June 2006 Report](http://wiki.apache.org/incubator/June2006) 
-
--  [July 2006 Report](http://wiki.apache.org/incubator/July2006) 
-
--  [August 2006 Report](http://wiki.apache.org/incubator/August2006) 
-
--  [November 2006 Report](http://wiki.apache.org/incubator/November2006) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| 2006-05-25 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2006-06-05 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-06-05 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-06-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-06-05 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-06-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2006-06-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-06-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2006-07-14 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2006-07-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| status | item |
-|--------|------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| status | item |
-|--------|------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? DONE.
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) DONE.
-
-- Are project decisions being made in public by the committers? DONE.
-
-- Are the decision-making guidelines published and agreed to by all of the committers? DONE.
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? DONE.
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? DONE.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? DONE.
diff --git a/content/accumulo.md b/content/accumulo.md
deleted file mode 100644
index ef58f4c..0000000
--- a/content/accumulo.md
+++ /dev/null
@@ -1,163 +0,0 @@
-Title: Accumulo Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Accumulo project graduated on 2012-03-21</span>
-
-
-Accumulo is a sorted, distributed key/value store based on Google's BigTable design. It is built on top of Apache Hadoop, Zookeeper, and Thrift. It features a few novel improvements on the BigTable design in the form of cell-level access labels and a server-side programming mechanism that can modify key/value pairs at various points in the data management process.
-
-
-
-- 2012-03-21 Apache Accumulo graduated to a top-level project.
-
-- 2012-03-20 Jason Trost added as a new committer.
-
-- 2012-02-14 David Medinets added as a new committer.
-
-- 2011-12-17 Version 1.3.5-incubating released.
-
-- 2011-09-12 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/accumulo/](http://incubator.apache.org/accumulo/)  |
-| . | wiki | N/A |
-| Mailing list | dev |  `accumulo-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `accumulo-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `accumulo-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/ACCUMULO |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/accumulo/](https://svn.apache.org/repos/asf/incubator/accumulo/)  |
-| Mentors | bimargulies | Benson Margulies |
-| . | adc | Alan D. Cabrera |
-| . | berndf | Bernd Fondermann |
-| Committers | acordova | Aaron Cordova |
-| . | afuchs | Adam Fuchs |
-| . | medined | David Medinets |
-| . | ecn | Eric Newton |
-| . | billie | Billie Rinaldi |
-| . | jtrost | Jason Trost |
-| . | kturner | Keith Turner |
-| . | vines | John Vines |
-| . | cawaring | Chris Waring |
-| Extra | . | . |
-
-
--  [October 2011](http://wiki.apache.org/incubator/October2011) 
-
--  [November 2011](http://wiki.apache.org/incubator/November2011) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-02-28 |  [Suitable Name Search](http://incubator.apache.org/guides/names.html) - see [PODLINGNAMESEARCH-3](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-3) . |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-09-12 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-10-03 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-09-12 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-09-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-10-04 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-09-12 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-09-13 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-10-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2011-09-12 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-10-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-11-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-01-06 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-01-06 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-09-13 | Check that all active committers have submitted a contributors agreement. |
-| 2011-09-13 | Add all active committers in the STATUS file. |
-| 2011-09-13 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ace.md b/content/ace.md
index 954c077..c5c59a7 100644
--- a/content/ace.md
+++ b/content/ace.md
@@ -1,154 +1,65 @@
-Title: ACE Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look at the [project website](http://incubator.apache.org/ace/) . For full details on the Incubation progress, please look at the [Jira issue](https://issues.apache.org/jira/browse/ACE-1) .
+Title: Apache Ace Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="graduated">The ACE project graduated on 2011-12-21</span>
+Apache Ace is 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. This is the initial codebase and documentation which was originally developed at luminis.
 
 
-ACE - a software distribution framework based on OSGi that allows you to manage and distribute artifacts, like e.g. software components.
-
-
-Apache ACE is 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.
+The source code and documentation are made available via Jira as issue [ACE-17](https://issues.apache.org/jira/browse/ACE-17) .
 
 
 
-- 2009-04-24 Project enters incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ace/](http://incubator.apache.org/ace/)  |
-| Mailing list | dev |  `ace-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | commits |  `ace-commits`  `@`  `incubator.apache.org`  |
-| Mailing list | users | While in incubation, `ace-dev`  `@`  `incubator.apache.org` will be used. |
-| Mailing list | PPMC |  `ace-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/ACE](http://issues.apache.org/jira/browse/ACE)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/ace/](http://svn.apache.org/repos/asf/incubator/ace/)  |
-| Proposal | Wiki |  [http://wiki.apache.org/incubator/AceProposal](http://wiki.apache.org/incubator/AceProposal)  |
-| Mentors, PMC Members, Committers | See the "project team" page on the project website |  [http://incubator.apache.org/ace/project-team.html](http://incubator.apache.org/ace/project-team.html)  |  |
+- Because Apache Ace is still in the Incubator, the Incubator PMC is responsible for the code.
 
 
--  [May 2009](http://wiki.apache.org/incubator/May2009) 
-
--  [June 2009](http://wiki.apache.org/incubator/June2009) 
-
--  [July 2009](http://wiki.apache.org/incubator/July2009) 
-
--  [October 2009](http://wiki.apache.org/incubator/October2009) 
-
--  [January 2010](http://wiki.apache.org/incubator/January2010) 
-
--  [April 2010](http://wiki.apache.org/incubator/April2010) 
-
--  [July 2010](http://wiki.apache.org/incubator/July2010) 
-
--  [October 2010](http://wiki.apache.org/incubator/October2010) 
-
--  [January 2011](http://wiki.apache.org/incubator/January2011) 
-
--  [April 2011](http://wiki.apache.org/incubator/April2011) 
-
--  [July 2011](http://wiki.apache.org/incubator/July2011) 
-
--  [October 2011](http://wiki.apache.org/incubator/October2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
+- The code will be imported in the top level SVN directory for Ace.
 
 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+- Officer or member managing donation: Carsten Ziegeler (cziegeler)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item | note |
-|------|------|------|
-| 2009-05-08 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |  |
-| 2009-05-08 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |  |
-
-## Interim responsibility {#Interim+responsibility}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2009-05-08 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-05-03 | Subscribe all Mentors on the private and development lists. |
-| 2009-05-08 | Give all initial committers access to the incubator SVN repository. (to be done by PMC chair) |
-| 2009-05-08 | Tell Mentors to track progress in the file 'incubator/projects/ace.html' |
+| 2009-06-17 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: 26752157e61fa33c86487ff9c2c5f84f and e56fe5ee2c693439babf2d433ce955fe (ApacheA1.zip and ApacheA2.zip from ACE-17).
+
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2009-06-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-06-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2009-06-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Apache Ace
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
+Corporations and individuals holding existing distribution rights:
+
+
+
+- luminis
+
 | date | item |
 |------|------|
-| 2009-04-23 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2009-04-23 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+| 2009-06-17 | Check that all active committers have a signed CLA on record. |
+| n/a | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| status | item |
-|--------|------|
-| 2009-04-27 | Check that all active committers have submitted a contributors agreement. |
-| 2009-04-27 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| status | item |
-|--------|------|
-| 2009-05-08 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-04-30 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-04-27 | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-| 2009-06-27 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| status | item |
-|--------|------|
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
 
 
-## Collaborative Development {#Collaborative+Development}
 
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?<br></br> **yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)<br></br> **yes** 
-
-- Are project decisions being made in public by the committers?<br></br> **yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?<br></br> **yes** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?<br></br> **yes** 
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?<br></br> **n/a** 
-
-- If graduating to a new PMC, has the board voted to accept it?<br></br> **yes** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?<br></br> **yes** 
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/activemq-logging-amq-1361.md b/content/activemq-logging-amq-1361.md
new file mode 100644
index 0000000..1078bb1
--- /dev/null
+++ b/content/activemq-logging-amq-1361.md
@@ -0,0 +1,65 @@
+Title: ActiveMQ Logging Improvement Codebase Intellectual Property (IP) Clearance Status
+
+
+Enchances the logging and trancing that ActiveMQ creates so that it can be better understood.
+
+
+
+- Which PMC will be responsible for the code: ActiveMQ
+
+
+- Into which existing project/module: ActiveMQ
+l
+
+- Officer or member managing donation: Hiram Chirino
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| ....-..-.. | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).<br></br>https://issues.apache.org/activemq/secure/attachment/15858/new_patch_and_tool.zip ( _Attached to issue AMQ-1361_ )<br></br>MD5 (new_patch_and_tool.zip) = 1577ef1ad347db7fd95110e028e0f37a
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-11-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-11-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: David Clavo / Representing Self
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| ....-..-.. | Check that all active committers have a signed CLA on record. |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-11-19 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-11-19 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
+
+ [Vote Thread](http://www.nabble.com/-VOTE--Accept-the-AMQ-1361-Logging-Contribution-code-drop-td13838286s2354.html#a13838286) 
+
diff --git a/content/activemq-nms-tibco.md b/content/activemq-nms-tibco.md
new file mode 100644
index 0000000..5c7e8e2
--- /dev/null
+++ b/content/activemq-nms-tibco.md
@@ -0,0 +1,65 @@
+Title: ActiveMQ NMS Tibco Codebase Intellectual Property (IP) Clearance Status
+
+
+A new module that implements the NMS API for access to the Tibco EMS product.
+
+
+
+- Which PMC will be responsible for the code: ActiveMQ
+
+
+- Into which existing project/module: ActiveMQ/NMS
+
+
+- Officer or member managing donation: Hiram Chirino
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| ....-..-.. | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).<br></br>http://issues.apache.org/activemq/secure/attachment/15785/amqnet-68.diff.zip ( _Attached to issue AMQNET-68_ )<br></br>MD5: C354BD0CCC3E04E14A49AECECB4DBC2E
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-10-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-10-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Jim Gomes representing Tideworks Technology, Inc.
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| ....-..-.. | Check that all active committers have a signed CLA on record. |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-10-05 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-10-05 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
+
+ [Vote Thread](http://www.nabble.com/-VOTE--Accept-the-NMS-for-Tibco-EMS-code-drop-tf4671193s2354.html) 
+
diff --git a/content/activemq.md b/content/activemq.md
index fbcba35..935e989 100644
--- a/content/activemq.md
+++ b/content/activemq.md
@@ -1,265 +1,82 @@
-Title: ActiveMQ Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+Title: ActiveMQ Codebase Intellectual Property (IP) Clearance Status
 
-The Apache ActiveMQ project has completed incubation. Please go to the main project site :
 
+ActiveMQ is a fast open source JMS 1.1 provider and Message Fabric supporting clustering, peer networks, discovery, TCP, SSL, multicast, persistence, XA and integrates seamlessly into J2EE 1.4 containers, light weight containers and any Java application.
 
- [http://activemq.apache.org/](http://activemq.apache.org/) 
 
 
-<span class="graduated">The ActiveMQ project graduated on 2007-02-06</span>
+- Which PMC will be responsible for the code: Apache Geronimo PMC
 
 
-The ActiveMQ project is a robust and high performance Message Orientated Middleware provider which is integrated into Apache Geronimo but also be usable from inside any JVM.
+- Into which existing project/module: ActiveMQ will go into its own project
 
 
+- Officer or member managing donation: James Strachan
 
-- 2005-12-09 Project announced publicly.
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
-- 2005-11-18 Project proposed and accepted for incubation in Apache.
 
-- 2006-03-29 ActiveMQ 4 fully integrated into Geronimo 1.2.
-
-- 2006-04-10 Added Nathan Mittler as a committer
-
-- 2006-04-10 Working on the ActiveMQ 4.0 RC2 release candidate
-
-- 2006-04-10 Currently working to accept a donation from Amazon for the ActiveMQ C++ API
-
-- 2006-06-13 Version 4.0 Released
-
-- 2006-04-10 Working started on next 4.1 version
-
-- 2006-06-20 Version 4.0.1 Released
-
-- 2006-07-31 Amazon code accepted
-
-- 2006-09-10 Accepted Tim Bish as a committer
-
-- 2006-11-13 ActiveMQ Version 4.0.2 Released
-
-- 2006-11-24 ActiveMQ CPP Version 1.0 Released
-
-- 2006-12-04 ActiveMQ Version 4.1.0 Released
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/activemq/](http://incubator.apache.org/activemq/)  |
-| Mailing list | dev | activemq-dev@geronimo.apache.org |
-|  | users | activemq-users@geronimo.apache.org |
-|  | commits | activemq-commits@geronimo.apache.org |
-|  | pmc | activemq-private@incubator.apache.org |
-| Bug tracking | JIRA<br></br> |  [https://issues.apache.org/activemq/browse/AMQ](https://issues.apache.org/activemq/browse/AMQ) <br></br> |
-| Source code | SVN<br></br> |  [http://svn.apache.org/repos/asf/incubator/activemq/](http://svn.apache.org/repos/asf/incubator/activemq/) <br></br> |
-| Proposal | Wiki<br></br> |  [http://wiki.apache.org/incubator/ActiveMqProposal](http://wiki.apache.org/incubator/ActiveMqProposal) <br></br> |
-| Mentors | jvanzyl | Jason van Zyl |
-|  | jstrachan | James Strachan |
-|  | noel | Noel Bergman |
-| Committers | ammulder | Aaron Mulder |
-|  | adc | Alan D. Cabrera |
-|  | brianm | Brian McCallister |
-|  | dain | Dain Sundstrom |
-|  | djencks | David Jencks |
-|  | gregw | Greg Wilkins |
-|  | chirino | Hiram Chirino |
-|  | jstrachan | James Strachan |
-|  | jvanzyl | Jason van Zyl |
-|  | proyal | Peter Royal |
-|  | aco | Adrian Co |
-|  | dflores | Darwin Flores |
-|  | djcook | Dennis Cook |
-|  | foconer | Frederick Oconer |
-|  | gnodet | Guillaume Nodet |
-|  | jlim | Jonas Lim |
-|  | jgapuz | Joseph Gapuz |
-|  | pvillacorta | Patrick Villacorta |
-|  | rsaba | Ramzi Saba |
-|  | rajdavies | Rob Davies |
-|  | nmittler | Nathan Christopher Mittler |
-|  | tabish | Tim Bish |
-
-# 2006/Q1 {#Status2006Q1}
-
-The full status of incubation is here. In summary we're most of the way through incubation now, things have been progressing very well; the code is clean and using only Apache-compliant libraries, it has the correct copyright notices and is in the org.apache.activemq namespace and is generally working well now. We've got the software grants sorted and most developers have their CLAs on file and accounts created (we've a few more to do once we know the CLAs are on file).
-
-
-We've voted on a milestone release which should go out soon once we've figured out the practicalities of doing an incuabtor milestone release. Our main outstanding issue now is creating the full website at Apache - which should be done in the next week or two - for now there is a simple home page.
-
-
-# 2006/March {#Status2006March}
-
-The ActiveMQ project is progressing toward graduation and things are moving along well. Below are the highlights of activity on the project:
-
-
-
-- Website status Updated
-
-- Added Nathan Mittler from Amazon as a committer
-
-- Working on the ActiveMQ 4.0 RC2 release candidate
-
-- Currently working to accept a donation from Amazon for the ActiveMQ C++ API
-
-# 2006/April {#Status2006April}
-
-The ActiveMQ project is progressing toward graduation and things are moving along well. Below are the highlights of activity on the project:
-
-
-
-- Website status Updated
-
-- Added Nathan Mittler from Amazon as a committer
-
-- Working on the ActiveMQ 4.0 RC2 release candidate
-
-- Currently working to accept a donation from Amazon for the ActiveMQ C++ API
-
-# 2006/May {#Status2006May}
-
-The STATUS file for the project is up to date. The code is clean and using only Apache-compliant libraries, it has the correct copyright notices and is in the org.apache.activemq namespace. We've got all the software grants sorted and all developers have their CLAs on file and accounts created. The project's active mailing lists are proof of the vibrant community behind ActiveMQ. Nathan Mittler was voted in as committer due to his excellent work on the C++ client for ActiveMQ.
-
-
-The Java code base has has being going through QA and stabilization for the past few months and several release candidates for 4.0 have been cut. The 4.0 final release is currently under Vote and we expect to have a final release very shortly. Development is starting to gear up now for the 4.1 release and we are excited to find out where the community and committers drive the development of the next 4.1 release.
-
-
-The website home page has now been sorted out and is being checked into svn. The static HTML is being generated from a Confluence wiki and content is very easy to update now. See: http://incubator.apache.org/activemq/
-
-
-# 2006/June {#Status2006June}
-
-The STATUS file for the project is up to date. The code is clean and using only Apache-compliant libraries, it has the correct copyright notices and is in the org.apache.activemq namespace. We've got all the software grants sorted and all developers have their CLAs on file and accounts created. The project's active mailing lists are proof of the vibrant community behind ActiveMQ.
-
-
-The Apache ActiveMQ 4.0 final has successfully been released. For more information about the release, see: [WWW] http://incubator.apache.org/activemq/activemq-40-release.html Development has started on the next 4.1 release. In tandem, the 4.0 branch has continued to stablize and a 4.0.1 release should be ready shortly. Bug fix releases should start occurring now with more frequency.
-
-
-The website home page has now been sorted out and is being checked into svn. The static HTML is being generated from a Confluence wiki and content is very easy to update now. See: http://incubator.apache.org/activemq/
-
-
-# 2006/September {#Status2006September}
-
-The ActiveMQ community continues to grow as evidenced by the mailing list volumes. Each month mailing list volumes continues to grow. Last month we had 574 emails sent to the developer list and 905 email sent to the user list! We have also seen a big increase in the amount of patches and contributions submitted from non ActiveMQ committers.
-
-
-A large amount of development work and community interest has been around the Native clients used to access the Messaging broker. Tim Bish's excellent work on the STOMP c++ client has earned him an invitation to become an ActiveMQ committer. Amazon did a in house c++ client to ActiveMQ and that source code donation was accepted and committed to the source tree.
-
-
-All the source headers in the 2 active branches have be update to comply with the new policies outline at: [WWW] http://www.apache.org/legal/src-headers.html.
-
-
-The Apache ActiveMQ 4.0.1 has successfully been released. For more information about the release, see: [WWW] http://incubator.apache.org/activemq/activemq-401-release.html Development continues on the next 4.1 release. In tandem, the 4.0 branch has continued to stabilize and a 4.0.2 release should be ready shortly.
-
-
-The project has discussed graduating and feels that ActiveMQ is ready and would prefer to become a TLP. Once the 4.0.2 release is completed expect more serious discussions regarding graduation to pop up on the incubator mailing lists.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2005-12-05 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2005-11-18 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2005-11-18 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-03-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2005-12-05 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2005-12-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
+| 2006-02-18 | Trademark, ActiveMQ, assigned to ASF |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
 | 2006-02-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2005-12-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2005-12-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_  **DONE** 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2005-12-09 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2005-12-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
 
 | date | item |
 |------|------|
-| 2005-12-15 | Check that all active committers have submitted a contributors agreement. |
-| 2006-02-01 | Add all active committers in the STATUS file. |
-| 2005-12-15 | Ask root for the creation of committers' accounts on people.apache.org. |
+| 2006-01-20 | 
+Check that all active committers have a signed CLA on record.
 
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2005-12-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-12-05 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-03-22 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2005-12-09 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+svn log https://svn.codehaus.org/activemq/branches/activemq-4-0 | grep "r[0-9][0-9]* | " | sed "s/r[0-9][0-9]* | \(.*\) | .* | .*$/\1/" | sort | uniq
+All of the committers have a CLA on file at Apache. The following table maps the unix user names to real names:
 
 
-# Incubation {#Incubation}
+ | aco | Adrian Co|
+ | ammulder | Aaron Mulder|
+ | brianm | Brian McCallister|
+ | chirino | Hiram Chirino|
+ | djcook | Dennis Cook|
+ | foconer | Frederick OConer|
+ | gnt | Guillaume Nodet|
+ | gregw | Gregory Wilkins|
+ | jgapuz | Joseph Gapuz|
+ | jlim | Jonas Lim|
+ | jstrachan | James Strachan|
+ | maguro | Alan Cabrera|
+ | pbrooke | TO BE DISCOVERED|
+ | pvillacorta | Patrick Villacorta|
+ | rajdavies | Robert Davies|
+ | rsaba | Ramzi Saba|
+ |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-These action items have to be checked for during the whole incubation process.
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
 
 
-## Collaborative Development {#Collaborative+Development}
 
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **DONE** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **DONE** 
-
-- Are project decisions being made in public by the committers? **DONE** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **DONE** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **DONE** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/age.md b/content/age.md
deleted file mode 100644
index 6fa31ca..0000000
--- a/content/age.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Title: Apache AGE Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page track the project status incubator-wise. For more general project status, look on the project website.
-
-
-AGE is a multi-model database that enables graph and relational models built on PostgreSQL.This project is a new generation of a multi-model graph database for the modern complex data environment.
-
-
-
-- 2020-04-30 Project enters incubation.
-
-- 2021/03/19 New Committer, Dehowe Feng
-
-- 2021-02-19 First Apache AGE release v0.3.0.
-
-- 2021-05-03 First Apache AGE release v0.4.0.
-
-
-- AGE Website - http://age.incubator.apache.org
-
-
--  [Current Documentation](https://age.apache.org/docs/Apache_AGE_Guide.pdf) 
-
--  [Releases](https://dist.apache.org/repos/dist/release/incubator/age/) 
-
--  [Wiki](https://cwiki.apache.org/confluence/display/INCUBATOR/AGE) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://age.incubator.apache.org](http://age.incubator.apache.org)  |
-| . | wiki |  [Wiki](https://cwiki.apache.org/confluence/display/age)  |
-| Mailing list | dev |  `dev`  `@`  `age.incubator.apache.org`  |
-| . | user |  `user`  `@`  `age.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `age.incubator.apache.org`  |
-| . | private |  `private`  `@`  `age.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/ageold |
-| Source code | incubator-age | https://github.com/apache/incubator-age |
-| . | incubator-age-website | https://github.com/apache/incubator-age-website |
-| . | incubator-age | https://gitbox.apache.org/repos/asf?p=incubator-age.git |
-| . | incubator-age-website | https://gitbox.apache.org/repos/asf?p=incubator-age-website.git |
-| Mentors |  | . |
-| . | jim | Jim Jagielski |
-| . | djkevincr | Kevin Ratnasekera |
-| . | vongosling | Von Gosling |
-| . | rbircher | Raphael Bircher |
-| . | felixcheung | Felix Cheung |
-| Committers |  |
-| . | jgemignani | John Gemignani |
-| . | jinnis | Josh Innis |
-| . | eyab | Eya Badal |
-| . | dehowef | Dehowe Feng |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/age.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2020-07-21 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2020-06-25 | Request DNS (first step after creating podling status page) |
-| 2020-06-25 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2020-06-25 | Request [git repositories](https://reporeq.apache.org/)  |
-| 2020-06-25 | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2020-02-20 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2020-06-25 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2020-07-29 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2020-08-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2020-08-05 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2020-08-05 | Tell Mentors to track progress in the file 'incubator/projects/age.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2020-07-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2020-07-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2020-03-20 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2020-03-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-05-17 | Check that all active committers have submitted a contributors agreement. |
-| 2020-09-02 | Add all active committers in the STATUS file. |
-| N/A | Ask root for the creation of committers' accounts on home.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/agila.md b/content/agila.md
deleted file mode 100644
index eb9b6eb..0000000
--- a/content/agila.md
+++ /dev/null
@@ -1,102 +0,0 @@
-Title: agila
-
-
-This page tracks the project status pertaining to incubation. Items marked **DONE** have been completed.
-
-
-<span class="retired">The Agila project retired on 2006-12-05</span>
-
-
-# 2006-12-05 {#2006-12-05}
-
-Project closed down - activity has moved to Ode (also within the Incubator).
-
-
-# 2004-09-29 {#2004-09-29}
-
-Project accepted by Apache Jakarta. Incubation setup and process starting.
-
-
-The website for Agila is [here](/agila/) 
-
-
-
-- Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. **DONE** 
-
-- If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names.
-
-- If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. **DONE** 
-
-- If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. **N/A** 
-
-
--  **DONE** Who has been identified as the shepherd for the incubation?
-
- **Geir Magnusson Jr.** 
-
-
-
-- Are they tracking progress in the file incubator/projects/{project_name}/STATUS?
-
-
--  **IN PROGRESS** Have the papers that transfer rights to the ASF been received? It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
-
-
--  **STARTING** Have the files been updated to reflect the new ASF copyright?
-
-Verify distribution rights:
-
-
-
--  **N/A** For all code included with the distribution that is not under the Apache license, do we have the right to combine with Apache-licensed code and redistribute?
-
-
--  **DONE** Is all source code distributed by the project covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms? **(everything is ASF-licensed)** 
-
-
-- Are all active committers in the STATUS file?
-
-
-- Do they have accounts on cvs.apache.org?
-
-
-- Have they submitted a contributors agreement?
-
-
-- CVS modules created and committers added to avail file?
-
-
-- Mailing lists set up and archived?
-
-
-- Problem tracking system (Bugzilla)?
-
-
-- Has the project migrated to our infrastructure?
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
-- Are there three or more independent committers?
-
-(The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-
-
-- Are project decisions being made in public by the committers?
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-Following the "Standard" apache process
-
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/airavata.md b/content/airavata.md
deleted file mode 100644
index 1330901..0000000
--- a/content/airavata.md
+++ /dev/null
@@ -1,191 +0,0 @@
-Title: Airavata Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Airavata project graduated on 2012-09-19</span>
-
-
-Apache Airavata, a software framework to compose, manage, execute, and monitor distributed applications and workflows on computational resources ranging from local resources to computational grids and clouds. Airavata can be used as individual components or as an integrated solution to build science gateways or general-purpose distributed application and workflow management systems. Users can use Airavata back end services and build gadgets to deploy in open social containers such as Apache Rave and modify them to suit their needs. Airavata builds on general concepts of service oriented computing, distributed messaging, and workflow composition and orchestration.
-
-
-
-- 2012-09-19 Apache Airavata TLP is created
-
-- 2012-09-19 ASF Board passed a resolution to create Apache Airavata TLP
-
-- 2012-09-10 The Incubator PMC voted and accepted a proposal to recomment Airavta TLP creation resolution to the board
-
-- 2012-09-06 Airavata community uninamously voted Suresh Marru as rge woodbe PMC chair
-
-- 2012-08-30 Airavata community voted to approve the community is ready to graduate out of the incubator
-
-- 2012-08-01 Airavata 0.4-INCUBATING is released
-
-- 2012-07-19 Shahani Weerawarana is voted and added as a new committer
-
-- 2012-06-21 Airavata 0.3-INCUBATING is released
-
-- 2012-05-05 Airavata 0.2-INCUBATING is released
-
-- 2011-11-29 Saminda Wijeratne is voted and added as a new committer
-
-- 2011-10-31 Heshan Suriyaarachchi is voted and added as a new committer
-
-- 2011-08-19 Patanachai Tangchaisin is voted and added as a new committer
-
-- 2011-07-30 Lahiru Gunathilake is voted and added as a new committer
-
-- 2011-07-20 Barbara Hallock is voted and added as a new committer
-
-- 2011-06-26 The website is live
-
-- 2011-05-14 Donated code is imported and the project is active
-
-- 2011-05-07 Project enters incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/airavata/](http://incubator.apache.org/airavata/)  |
-| Mailing list | developer |  `airavata-dev`  `@`  `incubator.apache.org`  |
-|  | Private (PPMC) |  `airavata-private`  `@`  `incubator.apache.org`  |
-|  | commits |  `airavata-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking |  |  [https://issues.apache.org/jira/browse/AIRAVATA](https://issues.apache.org/jira/browse/airavata)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/airavata](http://svn.apache.org/repos/asf/incubator/airavata)  |
-| Champion |  | Ross Gardler |
-| Mentors |  | Alek Slominski |
-|  |  | Ate Douma |
-|  |  | Sanjiva Weerawarna |
-|  |  | Paul Fremantle |
-|  |  | Chris A. Mattmann |
-| Committers |  | Suresh Marru |
-|  |  | Marlon Pierce |
-|  |  | Srinath Perera |
-|  |  | Aleksander Slominski |
-|  |  | Raminderjeet Singh |
-|  |  | Archit Kulshrestha |
-|  |  | Chathura Herath |
-|  |  | Eran Chinthaka |
-|  |  | Thilina Gunaratne |
-|  |  | Wathsala Vithanage |
-|  |  | Barbara Hallock |
-|  |  | Lahiru Gunathilake |
-|  |  | Patanachai Tangchaisin |
-|  |  | Heshan Suriyaarachchi |
-|  |  | Saminda Wijeratne |
-|  |  | Shahani Markus Weerawarana |
-
-
--  [August 2012](http://wiki.apache.org/incubator/August2012#Airavata) 
-
--  [May 2012](http://wiki.apache.org/incubator/May2012#Airavata) 
-
--  [February 2012](http://wiki.apache.org/incubator/February2012#Airavata) 
-
--  [November 2011](http://wiki.apache.org/incubator/November2011#Airavata) 
-
--  [August 2011](http://wiki.apache.org/incubator/August2011#Airavata) 
-
--  [July 2011](http://wiki.apache.org/incubator/July2011#Airavata) 
-
--  [June 2011](http://wiki.apache.org/incubator/June2011#Airavata) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-05-05 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. Note: Since nameprotect.com is no longer offering free trademark searches, the US Patent Office was searched for Airavata with no results. Google searches for Apache Airavata only resturned results relavent to incubator proposal. No other the Apache Airavata project is returned. The team bought the airavata .com and .org domains. |
-| 2011-05-05 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-05-05 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-05-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-05-05 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-05-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| Done | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| Done | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| Done | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| Done | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-05-05 | Check that all active committers have submitted a contributors agreement. |
-| 2005-06-22 | Add all active committers in the STATUS file. |
-| 2011-05-05 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-05-05 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-05-05 | Ask infrastructure to set up and archive Mailing lists. |
-| 2011-05-05 | Decide about and then ask infrastructure to setup an issuetracking system (Jira). |
-| 2011-05-05 | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? YES, the initial committers have been identified and accepted committership and working together on development. - DONE -
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) YES, Airavata has demonstrated the diversity and welcoming committers from diverse organizations. The committers are affiliated to more than three organizations. - DONE -
-
-- Are project decisions being made in public by the committers? YES, the commiters actively use the dev mailing lists and jira for all decisions. - DONE -
-
-- Are the decision-making guidelines published and agreed to by all of the committers? YES, the guideles have been agreed by the committers and published on the airavata website. - DONE -
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? Yes, all trademark and licensing issues have been taken care and approved by all committers, mentors and trademarks at a.o. - DONE -
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to a new PMC, has the board voted to accept it? YES, on September 19th 2012, the board has uninamously passed a resolution to accept Airavata as a Top Level Project. - DONE -
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? Yes, on Sept 10th 2012, the IPMC has the voted the project has accomplished all the tasks passed the proposal to recommend resolution to create Aira vata TLP to the ASF Board. - DONE -
diff --git a/content/airflow-on-k8s-operator.md b/content/airflow-on-k8s-operator.md
new file mode 100644
index 0000000..97bbc71
--- /dev/null
+++ b/content/airflow-on-k8s-operator.md
@@ -0,0 +1,61 @@
+Title: airflow-on-k8s-operator Codebase Intellectual Property (IP) Clearance Status
+
+
+airflow-on-k8s-operator is a custom Kubernetes operator that makes it easy to deploy and manage Apache Airflow on Kubernetes. Apache Airflow is a platform to programmatically author, schedule and monitor workflows. Using the Airflow Operator, an Airflow cluster is split into 2 parts represented by the AirflowBase and AirflowCluster custom resources.
+
+
+
+- Which PMC will be responsible for the code: Apache Airflow PMC.
+
+
+- Into which existing project/module: airflow-on-k8s-operator will go into its own project.
+
+
+- Officer or member managing donation: Jakob Homan
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 09-23-19 | Google and trademark search found no use of name as a software product. |
+|----------|-------------------------------------------------------------------------|
+
+Origin: https://github.com/GoogleCloudPlatform/airflow-operator in a separate repo. Started the discussion on the Airflow dev list (dev@airflow.apache.org).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-09-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-12-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _https://github.com/GoogleCloudPlatform/airflow-operator_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Google, LLC_ 
+
+| date | item |
+|------|------|
+| .2019-09-26 | Check that all active committers have a signed CLA on record. |
+| 2019-09-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-09-26 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-12-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [VOTE/Discuss on dev list accept codebase.](https://s.apache.org/airflow-operator-vote) 
diff --git a/content/airflow.md b/content/airflow.md
deleted file mode 100644
index 86fe1d9..0000000
--- a/content/airflow.md
+++ /dev/null
@@ -1,224 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Airflow project graduated on 2018-12-19</span>
-
-
-Airflow is a workflow automation and scheduling system that can be used to author and manage data pipelines.
-
-
-
-- 2018-11-21 Apache Airflow 1.10.1-incubating released.
-
-- 2018-08-20 Apache Airflow 1.10.0-incubating released.
-
-- 2018-08-03 Add one new committer: Tao Feng
-
-- 2018-05-07 Add one new committer: Kaxil Naik
-
-- 2018-02-15 Add one new committer: Ash Berlin-Taylor
-
-- 2018-01-02 Apache Airflow 1.9.0-incubating released.
-
-- 2017-10-30 Add one new committer: Joy Gao
-
-- 2017-10-01 Add one new committer: Fokko Driespong
-
-- 2017-09-06 Apache Airflow 1.8.2-incubating released.
-
-- 2017-05-09 Apache Airflow 1.8.1-incubating released.
-
-- 2017-03-19 Apache Airflow 1.8.0-incubating released.
-
-- 2017-03-14 Add one new committer: Alex Guziel
-
-- 2016-11-28 Add one new committer: Alex Van Boxel
-
-- 2016-08-19 Add one new committer: Li Xuanji
-
-- 2016-08-16 Add one new committer: Sumit Maheshwari
-
-- 2016-05-20 Apache Airflow 1.7.1.2-incubating released.
-
-- 2016-05-20 Add one new committer: Steven Yvinec-Kruyk
-
-- 2016-03-31 Project enters incubation.
-
-
-- Project Website: http://airflow.incubator.apache.org/
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code): https://airflow.incubator.apache.org/project.html#resources-links
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc): https://airflow.incubator.apache.org/project.html#committers
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-The PPMC consists of all the committers and mentors listed here.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://airflow.incubator.apache.org/](http://airflow.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/AIRFLOW](https://cwiki.apache.org/confluence/display/AIRFLOW)  |
-| Mailing list | dev |  `dev`  `@`  `airflow.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `airflow.incubator.apache.org`  |
-| Bug tracking | . |  [Airflow JIRA](https://issues.apache.org/jira/browse/Airflow/)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-airflow.git](https://gitbox.apache.org/repos/asf/incubator-airflow.git)  |
-| Mentors | hitesh | Hitesh Shah |
-| . | jghoman | Jakob Homan |
-| Committers | maximebeauchemin | Maxime Beauchemin |
-| . | sanand | Siddharth Anand |
-| . | criccomini | Chris Riccomini |
-| . | bolke | Bolke de Bruin |
-| . | arthur | Arthur Wiedmer |
-| . | davydov | Dan Davydov |
-| . | jlowin | Jeremiah Lowin |
-| . | pltardif | Patrick Leo Tardif |
-| . | . | Steven Yvinec-Kruyk |
-| . | msumit | Sumit Maheshwari |
-| . | alexvanboxel | Alex Van Boxel |
-| . | saguziel | Alex Guziel |
-| . | joygao | Joy Gao |
-| . | fokko | Fokko Driesprong |
-| . | ash | Ash Berlin-Taylor |
-| . | kaxilnaik | Kaxil Naik |
-| . | tfeng | Tao Feng |
-| Extra | . | . |
-
-
--  [October 2018](https://wiki.apache.org/incubator/October2018) 
-
--  [September 2018](https://wiki.apache.org/incubator/September2018) 
-
--  [August 2018](https://wiki.apache.org/incubator/August2018) 
-
--  [April 2018](https://wiki.apache.org/incubator/April2018) 
-
--  [February 2018](https://wiki.apache.org/incubator/February2018) 
-
--  [October 2017](https://wiki.apache.org/incubator/October2017) 
-
--  [July 2017](https://wiki.apache.org/incubator/July2017) 
-
--  [April 2017](https://wiki.apache.org/incubator/April2017) 
-
--  [January 2017](https://wiki.apache.org/incubator/January2017) 
-
--  [October 2016](https://wiki.apache.org/incubator/October2016) 
-
--  [July 2016](https://wiki.apache.org/incubator/July2016) 
-
--  [June 2016](https://wiki.apache.org/incubator/June2016) 
-
--  [May 2016](https://wiki.apache.org/incubator/May2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-08-10 | Make sure that the requested project name does not already exist. [PODLINGNAMESEARCH-110](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-110)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-04-16 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-04-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-04-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-04-14 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-04-27 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-11-29 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-11-29 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-11-29 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-05-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2018-11-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-11-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-11-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-04-21 | Check that all active committers have submitted a contributors agreement. |
-| 2016-05-20 | Add all active committers in the relevant section above. |
-| 2016-04-21 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/allura.md b/content/allura.md
deleted file mode 100644
index dcff7a1..0000000
--- a/content/allura.md
+++ /dev/null
@@ -1,174 +0,0 @@
-Title: Apache Allura Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](https://forge-allura.apache.org/p/allura/) .
-
-
-<span class="graduated">The Allura project graduated on 2014-03-19</span>
-
-
-Apache Allura is a software "forge", a web site that manages source code repositories, bug reports, discussions, wiki pages, blogs and more for any number of individual projects.
-
-
-
-- 2014-03-19 Graduated to a top level project. [http://allura.apache.org/](http://allura.apache.org/) 
-
-- 2014-02-25 Release 1.1.0 passed ( [vote thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201402.mbox/%3C52FC1A78.8000605@brondsema.net%3E) , [result thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201402.mbox/%3C530CCB05.8020401@brondsema.net%3E) )
-
-- 2013-11-19 PPMC Member Dave Brondsema joins the IPMC ( [announcement thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201311.mbox/%3CCAAS6=7ig5dVAwvTR2S4PZfjimY378x=iDtMRJZ7_Lm_mT45ZDw@mail.gmail.com%3E) )
-
-- 2013-11-11 Release 1.0.1 passed ( [vote thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201311.mbox/%3CCAGN0FaSkTrKpfVMwvC5LMcsPojU8DQ4K8%3DGhg7kJVHJRPxHFkA%40mail.gmail.com%3E) , [result thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201311.mbox/%3CCAGN0FaT-DDEbT4zuf16WHiq1FEQPChp2RvrGsTaMUGTAcagtXg@mail.gmail.com%3E) )
-
-- 2013-09-18 Release 1.0.0 proposed and cancelled ( [vote thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201308.mbox/%3CCAGN0FaTfgodR_vkuKTvO6EySfRKuZQJmOm=m4K0mGQhnefD2ng@mail.gmail.com%3E) , [cancellation thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201309.mbox/%3CCAGN0FaS+4e2KYwH4dJgp15mWV64xWTho6vMmLb-YLAas7UKAPw@mail.gmail.com%3E) )
-
-- 2012-06-25 Project enters incubation. ( [See proposal](http://wiki.apache.org/incubator/AlluraProposal) )
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://forge-allura.apache.org/p/allura/](https://forge-allura.apache.org/p/allura/)  |
-| . | docs |  [https://forge-allura.apache.org/p/allura/docs/](https://forge-allura.apache.org/p/allura/docs/)  |
-| . | wiki |  [https://forge-allura.apache.org/p/allura/wiki/](https://forge-allura.apache.org/p/allura/wiki/)  |
-| Mailing list | dev |  `allura-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `allura-commits`  `@`  `incubator.apache.org`  |
-| . | users |  `allura-users`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [http://sourceforge.net/p/allura/tickets/](http://sourceforge.net/p/allura/tickets/) (pending migration to forge-allura.apache.org) |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-allura.git](https://gitbox.apache.org/repos/asf?p=incubator-allura.git)  |
-| Mentors | rgardler | Ross Gardler |
-| . | gstein | Greg Stein |
-| . | jim | Jim Jagielski |
-| . | rbowen | Rich Bowen |
-| Committers | . | . |
-| . | tvansteenburgh | Tim Van Steenburgh |
-| . | wwitzel3 | Wayne Witzel III |
-| . | johnsca | Cory Johns |
-| . | brondsem | Dave Brondsema |
-| . | . | Jenny Steele |
-| . | galoppini | Roberto Galoppini |
-| . | acs | Alvaro del Castillo |
-| . | peterhartmann | Peter Hartmann |
-| . | stefanoinve | Stefano Invernizzi |
-| . | jpschewe | Jon Schewe |
-| . | simonegatti | Simone Gatti |
-
-
--  [September 2012](http://wiki.apache.org/incubator/September2012) 
-
--  [December 2012](http://wiki.apache.org/incubator/December2012) 
-
--  [March 2013](http://wiki.apache.org/incubator/March2013) 
-
--  [June 2013](http://wiki.apache.org/incubator/June2013) 
-
--  [September 2013](http://wiki.apache.org/incubator/September2013) 
-
--  [December 2013](http://wiki.apache.org/incubator/December2013) 
-
--  [March 2014](http://wiki.apache.org/incubator/March2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-10-13 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. [PODLINGNAMESEARCH-15](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-15) . [Approved by Trademark](http://s.apache.org/allura-name)  |
-| 2012-09-03 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-07-11 | Ask infrastructure to create source repository modules and grant the committers karma. ( [INFRA-5038](https://issues.apache.org/jira/browse/INFRA-5038) ) |
-| 2012-07-18 | Create VM to host Allura instance. ( [INFRA-5039](https://issues.apache.org/jira/browse/INFRA-5039) ) |
-| 2012-06-26 | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Set up issue tracker within hosted Allura. |
-| 2013-09-13 | Set up wiki within hosted Allura. |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-06-25 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-06-26 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-06-26 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-06-26 | Tell Mentors to track progress in the file 'incubator/projects/allura.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-07-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>Software grant for 'Allura' sent. |
-| 2013-04-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-04-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-04-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-09-03 | Check that all active committers have submitted a contributors agreement. |
-| 2012-10-10 | Add all active committers in the STATUS file. |
-| 2012-09-03 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/alois.md b/content/alois.md
deleted file mode 100644
index 946c89f..0000000
--- a/content/alois.md
+++ /dev/null
@@ -1,145 +0,0 @@
-Title: Alois Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Alois project retired on 2011-06-30</span>
-
-
-ALOIS is a log collection and correlation software with reporting and alarming functionalities. It has been implemented by the Swiss company IMSEC for a customer about five years ago. GPL-licenced, implemented in Ruby and completely based on other OSS-licensed components, it was designed for the open source community right from the start. Now that the software has shown its functioning over several years in production with the one customer and one IMSEC-internal installation, it seems to be the right time to open it to a wider community.
-
-
-ALOIS is not longer developed. If you have questions about this podling, please use the general incubator mailinglist.
-
-
-
-- 2011-06-30 Project requested to be withdrawn from incubation.
-
-- 2010-09-21 Project enters incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/alois/](http://incubator.apache.org/alois/)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/alois/](https://svn.apache.org/repos/asf/incubator/alois/)  |
-| Mentors | sdeboy | Scott Deboy |
-| . | grobmeier | Christian Grobmeier |
-| Committers | flavio | Flavio Pellanda |
-| Committers | ulerch | Urs Lerch |
-| Committers | dlutz | Daniel Lutz |
-| Committers | mholthaus | Marcus Holthaus |
-
-Alois reports in January, April, July, October.
-
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-10-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-09-30 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-09-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-06-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/altrmi.md b/content/altrmi.md
deleted file mode 100644
index 4e2b327..0000000
--- a/content/altrmi.md
+++ /dev/null
@@ -1,116 +0,0 @@
-Title: altrmi
-
-
-This page tracks the project status, incubator-wise. Items marked **DONE** have been completed.
-
-
-<span class="retired">The AltRMI project retired on 2007-01-18</span>
-
-
-# 2007-01-18 {#2007-01-18}
-
-Project closed down. Activity moved to [JRemoting](http://jremoting.codehaus.org/) .
-
-
-# 2003-10-30 {#2003-10-30}
-
-Still "refuses" 1.0 release. Currently at 0.98-SNAPSHOT. Major work recently included Mavenization. Reports of commercial usage. Team happy with remaining in the incubator for time being.
-
-
-The website for altrmi is at [http://incubator.apache.org/projects/altrmi/](http://incubator.apache.org/projects/altrmi/) 
-
-
-
-- Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. **DONE** 
-
-- If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. **DONE** 
-
-- If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. **DONE** 
-
-- If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. **DONE** 
-
-
--  **DONE** Who has been identified as the shepherd for the incubation?
-
- **Nicola Ken Barozzi** 
-
-
-
-- Are they tracking progress in the file incubator/projects/{project_name}/STATUS?
-
-
--  **DONE** Have the papers that transfer rights to the ASF been received? It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. **(project originated at the ASF)** 
-
-
--  **DONE** Have the files been updated to reflect the new ASF copyright? **(project originated at the ASF)** 
-
-Verify distribution rights:
-
-
-
--  **DONE** For all code included with the distribution that is not under the Apache license, do we have the right to combine with Apache-licensed code and redistribute?
-
-
-
-- jUnit (not distributed; but IBM CPL)
-
-- qdox (ASF-based)
-
-
--  **DONE** Is all source code distributed by the project covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms? **(everything is ASF-licensed)** 
-
-
-- Are all active committers in the STATUS file?
-
-
--  **DONE** Do they have accounts on cvs.apache.org?
-
-
-- Have they submitted a contributors agreement?
-
-
--  **DONE** CVS modules created and committers added to avail file?
-
-
-- Mailing lists set up and archived?
-
-
-- Problem tracking system (Bugzilla)?
-
-
-- Has the project migrated to our infrastructure?
-
-
--  **DONE** Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
--  **DONE** Are there three or more independent committers?
-
-(The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-
-
-
-- Paul Hammant
-
-- Vinay Chandran
-
-- (there are more committers but they are not active)
-
-
-- Are project decisions being made in public by the committers?
-
-
--  **DONE** Are the decision-making guidelines published and agreed to by all of the committers?
-
-Following the "Standard" apache process
-
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/amaterasu.md b/content/amaterasu.md
deleted file mode 100644
index 0ae12b2..0000000
--- a/content/amaterasu.md
+++ /dev/null
@@ -1,145 +0,0 @@
-Title: Amaterasu Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Amaterasu podling retired on 2019-09-18</span>
-
-
-Apache Amaterasu is a framework providing continuous deployment for Big Data pipelines.
-
-
-
-- 2017-09-07 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://amaterasu.incubator.apache.org/](http://amaterasu.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `amaterasu.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `amaterasu.incubator.apache.org`  |
-| . | user |  `user`  `@`  `amaterasu.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/AMATERASU](https://issues.apache.org/jira/browse/AMATERASU)  |
-| Source code | Git | https://gitbox.apache.org/repos/asf/incubator-amaterasu.git |
-| Champion | jbonofre | Jean-Baptiste Onofré |
-| Mentors | jbonofre | Jean-Baptiste Onofré |
-| . | davor | Davor Bonaci |
-| . | olamy | Olivier Lamy |
-| Committers | jbonofre | Jean-Baptiste Onofré |
-| . |  | Yaniv Rodenski |
-| . |  | Eyal Ben Ivri |
-| . |  | Karel Alfonso |
-| . |  | Kirupagaran (Kirupa) Devarajan |
-| . |  | Nadav Har Tzvi |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-09-08 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-09-08 | Ask infrastructure to set up and archive mailing lists. |
-| 2017-09-08 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2017-09-08 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-09-11 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-09-07 | Check that all active committers have submitted a contributors agreement. |
-| 2017-09-07 | Add all active committers in the relevant section above. |
-| 2017-09-07 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ambari.md b/content/ambari.md
deleted file mode 100644
index 35087bf..0000000
--- a/content/ambari.md
+++ /dev/null
@@ -1,261 +0,0 @@
-Title: Ambari Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Ambari project graduated on 2013-11-20</span>
-
-
-Ambari is a monitoring, administration and lifecycle management project for Apache Hadoop clusters.
-
-
-
-- 2013-11-20 Board establishes Apache Ambari as new TLP.
-
-- 2013-09-30 Added new committer Myroslav Papyrkovskyy.
-
-- 2013-09-30 Added new committer Dmitry Sen.
-
-- 2013-09-19 Added new committer Andriy Babiichuk.
-
-- 2013-09-03 Added new committer Aleksandr Kovalenko.
-
-- 2013-09-03 Added new committer Alex Antonenko.
-
-- 2013-08-07 Added new committer Andrii Tkach.
-
-- 2013-07-30 Added new committer Chad Roberts.
-
-- 2013-07-30 Added new committer Dmitry Lysnichenko.
-
-- 2013-07-30 Added new committer Oleg Nechiporenko.
-
-- 2013-07-30 Added new committer Xi Wang.
-
-- 2013-07-30 Added new committer Oleksandr Diachenko.
-
-- 2013-03-26 Added new committer Sumit Mohanty.
-
-- 2013-02-27 Added new committer John Speidel.
-
-- 2013-02-27 Added new committer Tom Beerbower.
-
-- 2013-02-27 Added new committer Nate Cole.
-
-- 2013-02-27 Added new committer Billie Rinaldi.
-
-- 2013-02-27 Added new committer Siddharth Wagle.
-
-- 2013-02-03 Added new committer Jaimin Jetley.
-
-- 2013-01-14 Added new committer Srimanth Gunturi.
-
-- 2012-06-15 Added new committer Mahadev Konar.
-
-- 2012-06-15 Added new committer Yusaku Sako.
-
-- 2012-06-15 Added new committer Vinod Kumar.
-
-- 2012-05-24 Added new committer Varun Kapoor.
-
-- 2012-05-14 Added new committer Hitesh Shah.
-
-- 2012-05-14 Added new committer Ramya Sunil.
-
-- 2012-05-14 Added new committer Jitendra Pandey.
-
-- 2012-05-24 Added new committer Vikram Dixit.
-
-- 2011-09-05 Project renames itself Ambari.
-
-- 2011-08-30 Project enters incubation as HMS.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ambari/](http://incubator.apache.org/ambari/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/ambari](https://cwiki.apache.org/confluence/display/ambari)  |
-| Mailing list | dev |  `ambari-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `ambari-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `ambari-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/AMBARI](https://issues.apache.org/jira/browse/AMBARI)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/ambari/](https://svn.apache.org/repos/asf/incubator/ambari/)  |
-| Mentors | omalley | Owen O'Malley |
-| . | cdouglas | Chris Douglas |
-| . | acmurthy | Arun C. Murthy |
-| Committers | ddas | Devaraj Das |
-| . | berndf | Bernd Fondermann |
-| . | vgogate | Vitthal Suhas Gogate |
-| . | omalley | Owen O'Malley |
-| . | mahadev | Mahadev Konar |
-| . | jagane | Jagane Sunder |
-| . | eyang | Eric Yang |
-| . | kzhang | Kan Zhang |
-| . | jitendra | Jitendra Pandey |
-| . | ramya | Ramya Sunil |
-| . | reznor | Varun Kapoor |
-| . | vikram | Vikram Dixit |
-| . | vinodkv | Vinod Kumar Vavilapalli |
-| . | yusaku | Yusaku Sako |
-| . | srimanth | Srimanth Gunturi |
-| . | tbeerbower | Tom Beerbower |
-| . | jspeidel | John Speidel |
-| . | jaimin | Jaimin Jetly |
-| . | swagle | Siddharth Wagle |
-| . | ncole | Nate Cole |
-| . | billie | Billie Rinaldi |
-| . | smohanty | Sumit Mohanty |
-| . | odiachenko | Oleksandr Diachenko |
-| . | xiwang | Xi Wang |
-| . | onechiporenko | Oleg Nechiporenko |
-| . | dmitriusan | Dmitry Lysnichenko |
-| . | croberts | Chad Roberts |
-| . | atkach | Andrii Tkach |
-| . | alexantonenko | Alexandr Antonenko |
-| . | akovalenko | Aleksandr Kovalenko |
-| . | ababiichuk | Andriy Babiichuk |
-| . | mpapirkovskyy | Myroslav Papyrkovskyy |
-| . | mpapirkovskyy | Myroslav Papyrkovskyy |
-| . | dsen | Dmitry Sen |
-
-
--  [August 2013](http://wiki.apache.org/incubator/August2013) 
-
--  [June 2013](http://wiki.apache.org/incubator/June2013) 
-
--  [Feb 2013](http://wiki.apache.org/incubator/February2013) 
-
--  [Nov 2012](http://wiki.apache.org/incubator/November2012) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011) 
-
--  [October 2011](http://wiki.apache.org/incubator/October2011) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [February 2012](http://wiki.apache.org/incubator/February2012) 
-
--  [May 2012](http://wiki.apache.org/incubator/May2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-09-05 | Make sure that the requested project name does not already exist and check www.trademarkia.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-08-30 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-09-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-09-05 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-09-05 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-09-05 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-09-22 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-08-30 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-09-22 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-09-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2011-09-22 | Tell Mentors to track progress in the file 'incubator/projects/ambari.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-09-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-09-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-09-22 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-09-22 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-09-05 | Check that all active committers have submitted a contributors agreement. |
-| 2011-09-06 | Add all active committers in the STATUS file. |
-| 2011-09-06 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Incubator has recommended graduation.
diff --git a/content/amber-leeloo.md b/content/amber-leeloo.md
new file mode 100644
index 0000000..2f136e8
--- /dev/null
+++ b/content/amber-leeloo.md
@@ -0,0 +1,71 @@
+Title: Leeloo Codebase Intellectual Property (IP) Clearance Status
+
+
+Leeloo is a Java library that implements the OAuth 2.0 protocol (currently draft 10)
+
+
+
+- Which PMC will be responsible for the code: Apache Amber (currently an Incubator project, so officially, the Incubator PMC)
+
+
+- Into which existing project/module: http://svn.apache.org/repos/asf/incubator/amber/trunk/oauth-2.0/
+
+
+- Officer or member managing donation: Stefan Seelmann
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-12-20 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 sum for donated software:
+
+- MD5 (amber_client.patch) = 80532105805c82afd450f1d97933cb9c (https://issues.apache.org/jira/browse/AMBER-11)
+
+- MD5 (amber_server.patch) = 831468b9e99a536a1b79576eeef75903 (https://issues.apache.org/jira/browse/AMBER-12)
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Newcastle University
+
+- Maciej Machulak
+
+- Lukasz Moren
+
+| date | item |
+|------|------|
+| 2010-12-20 | Check that all active committers have a signed CLA on record. |
+| 2010-12-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/amber.md b/content/amber.md
deleted file mode 100644
index aff9782..0000000
--- a/content/amber.md
+++ /dev/null
@@ -1,163 +0,0 @@
-Title: Amber Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Amber project graduated on 2013-01-16</span>
-
-
-The Amber project will deliver a Java development framework mainly aimed to build OAuth-aware applications.
-
-
-
-- 2013-01-16 Amber graduates from the incubator with the name Apache Oltu
-
-- 2010-05-09 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://oltu.apache.org/](http://oltu.apache.org/) <br></br>previously: [http://incubator.apache.org/amber/](http://incubator.apache.org/amber/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/AMBER/](https://cwiki.apache.org/confluence/display/AMBER/)  |
-| Mailing list | dev |  `amber-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `amber-commits`  `@`  `incubator.apache.org`  |
-| . | private (PPMC) |  `amber-private`  `@`  `incubator.apache.org`  |
-| . | user |  `amber-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/amber](https://issues.apache.org/jira/browse/amber)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/amber/](https://svn.apache.org/repos/asf/incubator/amber/)  |
-| Mentors | brianm | Brian McCallister |
-| . | jfclere | Jean-Frederic Clere |
-| . | gianugo | Gianugo Rabellino |
-| . | djencks | David Jencks |
-| Committers | simoneg | Simone Gianni |
-| . | simonetripodi | Simone Tripodi |
-| . | pidster | Stuart "Pid" Williams |
-| . | recordond | David Recordon |
-| . | tommaso | Tommaso Teofili |
-| . | lindner | Paul Lindner |
-| . | pablo | Pablo Fernandez |
-| . | asanso | Antonio Sanso |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-05-19 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-05-19 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-05-19 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2010-05-19 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2010-06-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-05-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-05-31 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-05-31 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-05-31? | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-05-31 | Check that all active committers have submitted a contributors agreement. |
-| 2010-05-31 | Add all active committers in the STATUS file. |
-| 2010-05-31 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?<br></br> **n/a** 
-
-- If graduating to a new PMC, has the board voted to accept it?<br></br> **YES** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?<br></br> **YES** 
diff --git a/content/annotator.md b/content/annotator.md
deleted file mode 100644
index 952fd96..0000000
--- a/content/annotator.md
+++ /dev/null
@@ -1,142 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Apache Annotator Project is a wonderful project that does things and goes places.
-
-
-
-- 2016-08-30 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://annotator.incubator.apache.org/](http://annotator.incubator.apache.org/)  |
-| . | wiki |  [Confluence (ANNO)](https://cwiki.apache.org/confluence/display/ANNO)  |
-| Mailing list | dev |  `dev`  `@`  `annotator.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `annotator.incubator.apache.org`  |
-| Bug tracking | . |  [Jira (ANNO)](https://issues.apache.org/jira/browse/ANNO)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-annotator.gitt](https://gitbox.apache.org/repos/asf/incubator-annotator.git)  |
-| Champion |  [humbedooh](http://people.apache.org/phonebook.html?uid=humbedooh)  | Daniel Gruno |
-| Mentors |  [niq](http://people.apache.org/phonebook.html?uid=niq)  | Nick Kew |
-| . |  [jim](http://people.apache.org/phonebook.html?uid=jim)  | Jim Jagielski |
-| . |  [brianm](http://people.apache.org/phonebook.html?uid=brianm)  | Brian McCallister |
-| Committers |  [bigbluehat](http://people.apache.org/phonebook.html?uid=bigbluehat)  | Benjamin Young |
-| . |  [tilgovi](http://people.apache.org/phonebook.html?uid=tilgovi)  | Randall Leeds |
-| . | . | ...other committer accounts still in the works... |
-
-
--  [2017 January](https://wiki.apache.org/incubator/January2017) 
-
--  [2016 December](https://wiki.apache.org/incubator/December2016) 
-
--  [2016 October](https://wiki.apache.org/incubator/October2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-08-30 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Migrate the project to our infrastructure. |
-| 2016-12-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). [INFRA-13042](https://issues.apache.org/jira/browse/INFRA-13042)  |
-| 2016-12-06 | Ask infrastructure to set up wiki (Confluence, Moin). [INFRA-13041](https://issues.apache.org/jira/browse/INFRA-13041)  |
-| 2016-12-05 | Ask infrastructure to create source repository modules and grant the committers karma. [INFRA-13040](https://issues.apache.org/jira/browse/INFRA-13040)  |
-| 2016-09-09 | Ask infrastructure to set up and archive mailing lists. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ant-groovy-front.md b/content/ant-groovy-front.md
new file mode 100644
index 0000000..8af4c0f
--- /dev/null
+++ b/content/ant-groovy-front.md
@@ -0,0 +1,59 @@
+Title: Ant Groovy Front Codebase Intellectual Property (IP) Clearance Status
+
+
+Ant Groovy Front is an implementation of Ant's ProjectHelper extension point that allows Ant build files to be written in Groovy rather than XML.
+
+
+
+- Which PMC will be responsible for the code: Apache Ant
+
+
+- Into which existing project/module: the initial target will be the Ant sandbox. It is intended to be released as a separate module later.
+
+
+- Officer or member managing donation: Stefan Bodewig
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-12-08 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: MD5 f210ac0e0df31a1e16bbaa49cc3537cb (available at [Bugzilla Issue 48347](https://issues.apache.org/bugzilla/show_bug.cgi?id=48347) ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-12-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-12-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Groovy Front
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Nicolas Lalevee_ 
+
+| date | item |
+|------|------|
+| 2009-12-01 | Check that all active committers have a signed CLA on record. |
+| n/a | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| n/a | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-12-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: The VOTE thread accepting the donation can be found in the mailng list [archives](http://mail-archives.apache.org/mod_mbox/ant-dev/200912.mbox/%3C87pr6mt7pu.fsf@v35516.1blu.de%3E) .
+
diff --git a/content/any23.md b/content/any23.md
deleted file mode 100644
index 13fa9f9..0000000
--- a/content/any23.md
+++ /dev/null
@@ -1,177 +0,0 @@
-Title: Any23 Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Any23 project graduated on 2012-08-28</span>
-
-
-Anything To Triples (any23) is a library, a web service and a command line tool that extracts structured data in RDF format from a variety of Web documents.
-
-
-
-- 2012-07-15 Any23 0.7.0-incubating released!
-
-- 2012-05-30 New comitter and PPMC member: Peter Ansell.
-
-- 2012-02-03 New comitter and PPMC member: Andy Seaborne.
-
-- 2011-10-01 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/any23/](http://incubator.apache.org/any23/)  |
-| wiki | Confluence |  [https://cwiki.apache.org/confluence/display/ANY23/Index](https://cwiki.apache.org/confluence/display/ANY23/Index)  |
-| Mailing list | dev |  `any23-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `any23-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `any23-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/ANY23](https://issues.apache.org/jira/browse/ANY23)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/any23/](https://svn.apache.org/repos/asf/incubator/any23/)  |
-| Mentors | mattmann | Chris Mattmann |
-| . | niq | Nick Kew |
-| . | pramirez | Paul Ramirez |
-| . | simonetripodi | Simone Tripodi |
-| . | tommaso | Tommaso Teofili |
-| Committers | mattmann | Chris Mattmann |
-| . | dpalmisano | Davide Palmisano |
-| . | . | Giovanni Tumarello |
-| . | lewismc | Lewis John McGibbney |
-| . | . | Michele Mostarda |
-| . | niq | Nick Kew |
-| . | pramirez | Paul Ramirez |
-| . | reto | Reto Bachmann-Gmuer |
-| . | simonetripodi | Simone Tripodi |
-| . | . | Szymon Danielczyk |
-| . | tommaso | Tommaso Teofili |
-| . | andy | Andy Seaborne |
-
-
--  [July 2012](http://wiki.apache.org/incubator/July2012#Any23) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012#Any23) 
-
--  [May 2012](http://wiki.apache.org/incubator/May2012#Any23) 
-
--  [Apr 2012](http://wiki.apache.org/incubator/April2012#Any23) 
-
--  [Mar 2012](http://wiki.apache.org/incubator/March2012#Any23) 
-
--  [Feb 2012](http://wiki.apache.org/incubator/February2012#Any23) 
-
--  [Jan 2012](http://wiki.apache.org/incubator/January2012#Any23) 
-
--  [Dec 2011](http://wiki.apache.org/incubator/November2011#Any23) 
-
--  [Nov 2011](http://wiki.apache.org/incubator/November2011#Any23) 
-
--  [Oct 2011](http://wiki.apache.org/incubator/October2011#Any23) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-08-22 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-10-10 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-10-10 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-10-10 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-10-10 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-11-10 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-10-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-10-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-10-10 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-10-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-07-05 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-07-05 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-07-05 | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? N/A
-
-- If graduating to a new PMC, has the board voted to accept it? YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? YES
diff --git a/content/apache-cassandra-harry.md b/content/apache-cassandra-harry.md
new file mode 100644
index 0000000..76f56e3
--- /dev/null
+++ b/content/apache-cassandra-harry.md
@@ -0,0 +1,71 @@
+Title: Harry Codebase Intellectual Property (IP) Clearance Status
+
+
+Harry is a fuzz testing tool for Apache Cassandra.
+
+
+
+- Which PMC will be responsible for the code: Apache Cassandra PMC
+
+
+- Into which existing project/module: apache/cassandra-harry repository
+
+
+- Officer or member managing donation: Nate McCall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-09-15 | Souce codebase is from [GitHub commit](https://github.com/ifesdjeen/cassandra-harry/tree/2846ede5f8158ec7e4f29a27f3b1cdcc4ec8be3f) Confirmed<br></br>No existing software names clash with registered trademark. (Note there is the untrademarked [Harry - A Tool for Measuring String Similarity](https://github.com/rieck/harry) .) |
+
+GH commit SHA1 sum for donated software: ( _2846ede5f8158ec7e4f29a27f3b1cdcc4ec8be3f_ ).
+
+
+MD5 sum for donated software GH downloaded cassandra-harry-2846ede5f8158ec7e4f29a27f3b1cdcc4ec8be3f.zip: ( _cf29df3fe3b7ab79bb19f21550390a33_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-09-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2020-09-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _ [Alex Petrov](https://whimsy.apache.org/roster/committer/aweisberg) _  _ [Benedict Elliot Smith](https://whimsy.apache.org/roster/committer/benedict) _ 
+
+| date | item |
+|------|------|
+| 2020-09-10 | Check that all active committers have a signed CLA on record. |
+| 2020-09-14 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-09-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-09-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+ _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
+Related VOTEs:
+
+
+
+-  _Project Dev ML Vote: https://lists.apache.org/thread.html/rb0c67b97b5befa3749af13215226e12ecdfbe10a59838572d227ace8%40%3Cdev.cassandra.apache.org%3E_ 
+
+-  _Project Dev ML Result: https://lists.apache.org/thread.html/r959b216cfb26c19315d31553c284566154d02d74a1c69520aee20612%40%3Cdev.cassandra.apache.org%3E_ 
+
+-  _Incubator ML: https://lists.apache.org/thread.html/r9df1a3448412d6949c3f476f1ad488c3b7c395e5f5264ab2b6943b02%40%3Cgeneral.incubator.apache.org%3E_ 
+
+-  _Incubator ML Result: https://lists.apache.org/thread.html/rb2c8a435a66f11885e9361af5067f7c39f36f7040c5dcfce75289988%40%3Cgeneral.incubator.apache.org%3E_ 
diff --git a/content/apex.md b/content/apex.md
deleted file mode 100644
index 535f456..0000000
--- a/content/apex.md
+++ /dev/null
@@ -1,211 +0,0 @@
-Title: Apex Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Apex Project is an enterprise grade native YARN big data-in-motion platform that unifies stream processing as well as batch processing. Apex processes big data in-motion in a highly scalable, highly performant, fault tolerant, stateful, secure, distributed, and an easily operable way. It provides a simple API that enables users to write or re-use generic Java code, thereby lowering the expertise needed to write big data applications.
-
-
-<span class="graduated">The Apex project graduated on 2016-04-20</span>
-
-
-
-- 2015-08-17 Apex Project enters incubation.
-
-- 2015-10-30 Apex Core release 3.2.0-incubating
-
-- 2015-11-16 Malhar Library release 3.2.0-incubating
-
-- 2015-12-16 New Committer: Milind Barve
-
-- 2015-12-16 New Committer: Dongming Liang
-
-- 2015-12-16 New PPMC Member: Vlad Rozov
-
-- 2016-01-10 Malhar Library release 3.3.0-incubating
-
-- 2016-01-19 New PPMC Member: Ilya Ganelin
-
-- 2016-01-19 New PPMC Member: Brennon York
-
-- 2016-02-08 Apex Core release 3.3.0-incubating
-
-- 2016-03-01 Added [Podling Maturity Page](http://apex.incubator.apache.org/maturity.html) 
-
-- 2016-03-02 Malhar Library release 3.3.1-incubating
-
-- 2016-03-11 New Committer: Ashish Tadose
-
--  [http://apex.incubator.apache.org/announcements.html](http://apex.incubator.apache.org/announcements.html) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://apex.incubator.apache.org/](http://apex.incubator.apache.org/)  |
-| . | wiki |  [http://wiki.apache.org/incubator/ApexProposal](http://wiki.apache.org/incubator/ApexProposal)  |
-| Mailing list | users |  `users`  `@`  `apex.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `apex.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `apex.incubator.apache.org`  |
-| . | security |  `security`  `@`  `apex.incubator.apache.org`  |
-| Bug tracking | . |  [Apex Core JIRA](https://issues.apache.org/jira/browse/APEXCORE/) <br></br> [Apex Malhar JIRA](https://issues.apache.org/jira/browse/APEXMALHAR/)  |
-| Source code | Project GIT |  [https://gitbox.apache.org/repos/asf/incubator-apex-core.git](https://gitbox.apache.org/repos/asf/incubator-apex-core.git) <br></br> [https://gitbox.apache.org/repos/asf/incubator-apex-malhar.git](https://gitbox.apache.org/repos/asf/incubator-apex-malhar.git)  [https://gitbox.apache.org/repos/asf/incubator-apex-site.git](https://gitbox.apache.org/repos/asf/incubator-apex-site.git)  |
-| . | Github Mirror |  [https://github.com/apache/incubator-apex-core](https://github.com/apache/incubator-apex-core) <br></br> [https://github.com/apache/incubator-apex-malhar](https://github.com/apache/incubator-apex-malhar)  [https://github.com/apache/incubator-apex-site](https://github.com/apache/incubator-apex-site)  |
-| Mentors | cnauroth | Chris Nauroth |
-| . | gates | Alan Gates |
-| . | hitesh | Hitesh Shah |
-| . | jmclean | Justin Mclean |
-| . | ptgoetz | P. Taylor Goetz |
-| . | tdunning | Ted Dunning |
-| PPMC Members | gauravgopi123 | Gaurav Gupta |
-| . | pramod | Pramod Immaneni |
-| . | akekre | Amol Kekre |
-| . | chetan | Chetan Narsude |
-| . | thw | Thomas Weise |
-| . | davidyan | David Yan |
-| . | vrozov | Vlad Rozov |
-| . | ilganeli | Ilya Ganelin |
-| . | boyork | Brennon York |
-| Committers | ishark | Isha Arkatkar |
-| . | milindb | Milind Barve |
-| . | bhupesh | Bhupesh Chawda |
-| . | chaithu | Chaitanya Chebolu |
-| . | brightchen | Bright Chen |
-| . | prad | Pradeep A. Dalvi |
-| . | sandeep | Sandeep Deshmukh |
-| . | yogidevendra | Yogi Devendra |
-| . | timothyfarkas | Timothy Farkas |
-| . | tushar | Tushar Gosavi |
-| . | priyag | Priyanka Gugale |
-| . | sandesh | Sandesh Hegde |
-| . | hsy541 | Siyuan Hua |
-| . | chinmay | Chinmay Kolhatkar |
-| . | anujlal | Anuj Lal |
-| . | d9liang | Dongming Liang |
-| . | apmishra | Adi Mishra |
-| . | sashap | Sasha Parfenov |
-| . | andyp | Andy Perlitch |
-| . | shubham | Shubham Pathak |
-| . | ashwinchandrap | Ashwin Putta |
-| . | ramapex | Munagala Ramanath |
-| . | atri | Atri Sharma |
-| . | csingh | Chandni Singh |
-| . | ashishtadose | Ashish Tadose |
-| . | aniruddha | Aniruddha Thombare |
-| . | jessicawang | Jessica Wang |
-
-
--  [September 2015](http://wiki.apache.org/incubator/September2015) 
-
--  [October 2015](http://wiki.apache.org/incubator/October2015) 
-
--  [November 2015](http://wiki.apache.org/incubator/November2015) 
-
--  [January 2016](http://wiki.apache.org/incubator/January2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-12-30 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) ( [PODLINGNAMESEARCH-90](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-90) ) |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2015-08-17 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-08-24 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-08-21 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-08-26 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-10-18 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-01-02 | Migrate the project to our infrastructure. ( [INFRA-10144](https://issues.apache.org/jira/browse/INFRA-10144) ) |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-08-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-08-17 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-08-17 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-08-24 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-10-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-08-17 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-12-24 | Check that all active committers have submitted a contributors agreement. |
-| 2015-12-24 | Add all active committers in the STATUS file. |
-| 2015-08-31 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/apisix-ingress-controller.md b/content/apisix-ingress-controller.md
new file mode 100644
index 0000000..fbdac49
--- /dev/null
+++ b/content/apisix-ingress-controller.md
@@ -0,0 +1,59 @@
+Title: APISIX ingress controller Intellectual Property (IP) Clearance Status
+
+
+The APISIX ingress controller is an implementation of kubernetes ingress based on Apache APISIX.
+
+
+The Apache APISIX PMC will be responsible for the code.
+
+
+The code repo will be transferred to the ASF as "apache/apisix-ingress-controller".
+
+
+Officer or member managing donation: Ming Wen
+
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-11-06 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/api7/ingress-controller](https://github.com/api7/ingress-controller) as at commit ID 5ccaaa290aeae0c3542e28abb136b06f3b9a88e1. Started the discussion in APISIX dev@apisix.apache.org mailing list: [[Proposal] ingress-controller donation](https://lists.apache.org/thread.html/rd1a060dd7902013d71f065706caeaebc84431ac23ce16407b9fd6436%40%3Cdev.apisix.apache.org%3E) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-11-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2020-11-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Shenzhen ZhiLiu Technology Co., Ltd.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Shenzhen ZhiLiu Technology Co., Ltd.
+
+
+| date | item |
+|------|------|
+| 2020-11-20 | Check that all active committers have a signed CLA on record. |
+| 2020-11-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-11-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-11-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on Apache APISIX dev list to accept apisix ingress controller to Apache APISIX.](https://lists.apache.org/thread.html/rc41cb3735f01fc089b2459f4b1cfff2ba45e8b61d46c31c7e607afbf%40%3Cdev.apisix.apache.org%3E) 
diff --git a/content/apisix.md b/content/apisix.md
deleted file mode 100644
index 5110c7d..0000000
--- a/content/apisix.md
+++ /dev/null
@@ -1,231 +0,0 @@
-Title: Apache APISIX Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The APISIX project graduated on 2020-07-15</span>
-
-
-APISIX is a cloud-native microservices API gateway, delivering the ultimate performance, security,open source and scalable platform for all your APIs and microservices.
-
-
-
-- 2019-10-17 Project enters incubation.
-
-- 2019-11-25 APISIX 0.9 has been released.
-
-- 2019-11-28 New committer: lilien1010.
-
-- 2020-1-15 APISIX 1.0 has been released.
-
-- 2020-1-19 New committer: agile6v.
-
-- 2020-2-24 Apache APISIX Dashboard 1.0 has been released.
-
-- 2020-2-24 Apache APISIX 1.1 has been released.
-
-- 2020-3-1 New committer: sshniro.
-
-- 2020-3-6 New PPMC: lilien1010.
-
-- 2020-3-15 New PPMC: Sheng Wu.
-
-- 2020-3-16 New committer: spacewander.
-
-- 2020-3-19 APISIX officially docker repositories have transfered to Apache Docker Hub organization.
-
-- 2020-3-23 New committer: Akayeshmantha.
-
-- 2020-3-27 New PPMC: agile6v.
-
-- 2020-3-29 Completed podling maturity assessment, all answers are YES.
-
-- 2020-4-20 Apache APISIX 1.2 has been released.
-
-- 2020-5-3 New PPMC: Nirojan Selvanathan.
-
-- 2020-5-26 Apache APISIX 1.3 has been released.
-
-- 2020-5-29 New committer: Xin Xu.
-
-- 2020-6-3 New PPMC: Akayeshmantha.
-
-- 2020-6-8 New committer: qiujiayu.
-
-- 2020-6-8 New committer: gxthrj.
-
-- 2020-6-9 New committer: LiteSun.
-
-- 2020-6-16 New committer: dabue.
-
-- 2020-6-30 Apache APISIX 1.4 has been released.
-
-- 2020-7-15 The APISIX project graduated to TLP.
-
-
-- APISIX Website - http://apisix.incubator.apache.org
-
-
--  [Community Pages](http://apisix.incubator.apache.org/community/) 
-
-
--  [Current Documentation](http://apisix.incubator.apache.org/docs/) 
-
-
--  [Releases](http://apisix.apache.org/downloads/) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://apisix.incubator.apache.org/](http://apisix.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `apisix.incubator.apache.org`  |
-| . | private |  `private`  `@`  `apisix.incubator.apache.org`  |
-| . | notificiatons |  `commits`  `@`  `apisix.incubator.apache.org`  |
-| Source code | . | . |
-| . | incubator-apisix | https://github.com/apache/incubator-apisix.git |
-| . | incubator-apisix-dashboarding | https://github.com/apache/incubator-apisix-dashboarding.git |
-| . | incubator-apisix-website | https://github.com/apache/incubator-apisix-website.git |
-| Roster | Whimsy |  [APISIX Roster](https://whimsy.apache.org/roster/ppmc/apisix)  |
-| Mentors |  | . |
-| . | ningjiang | Willem Ning Jiang |
-| . | jmclean | Justin Mclean |
-| . | djkevincr | Kevin Ratnasekera |
-| . | vongosling | Von Gosling |
-| Committers |  | . |
-| . |  | Ming Wen |
-| . |  | YuanSheng Wang |
-| . |  | Zhiyuan Ju |
-| . |  | Junxu Chen |
-| . |  | Yong Li |
-| . |  | Suo Zhang |
-| . |  | Ke Tang |
-| . |  | Chunlin Wu |
-| . |  | Lang Wang |
-| . |  | Hui Li |
-| . |  | Zhiyong Li |
-| . |  | Jinchao Shuai |
-| . |  | Ling Li |
-| . |  | Wei Liu |
-| . |  | sshniro |
-| . |  | Sheng Wu |
-| . |  | spacewander |
-| . |  | Akayeshmantha |
-
-
--  [APISIX Board Reports](https://whimsy.apache.org/board/minutes/apisix.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (2019-10-17)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-10-17 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2019-10-17 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-10-23 | Request DNS (first step after creating podling status page) |
-| 2019-10-23 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2019-10-29 | Request [git repositories](https://reporeq.apache.org/)  |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| N/A | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2020-1-15 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| N/A | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/apisix.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2019-10-29 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2019-10-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2019-11-25 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2019-11-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-11-28 | Check that all active committers have submitted a contributors agreement. |
-| 2019-11-28 | Add all active committers in the relevant section above. |
-| 2019-11-28 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/apollo.md b/content/apollo.md
deleted file mode 100644
index 141de73..0000000
--- a/content/apollo.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: apollo
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](http://incubator.apache.org/apollo/) .
-
-
-<span class="graduated">The Apollo project graduated on 2005-06-03</span>
-
-
-A Web Services WS-FX subproject that provides an implementation of the Web Services Resource Framework (WSRF) family of specifications.
-
-
-
-- 2005-06-03 - Incubator PMC voted to graduate WSRF (formerly named Apollo)
-
-- 2004-11-08 - Proposal sent to incubator general mailing list
-
-- 2004-10-14 - Proposal accepted by WS PMC
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/apollo/](http://incubator.apache.org/apollo/)  |
-| Proposal | wiki |  [http://wiki.apache.org/incubator/ApolloProposal](http://wiki.apache.org/incubator/ApolloProposal)  |
-| Mailing Lists | dev |  [apollo-dev@ws.apache.org](mailto:apollo-dev@ws.apache.org)  |
-| . | svn |  [apollo-cvs@incubator.apache.org](mailto:apollo-cvs@incubator.apache.org)  |
-| Bug Tracking | jira |  [http://nagoya.apache.org/jira/secure/project/ViewProject.jspa?pid=1061](http://nagoya.apache.org/jira/secure/project/ViewProject.jspa?pid=10612)  |
-| Source Code | svn |  [https://svn.apache.org/repos/asf/incubator/apollo/](https://svn.apache.org/repos/asf/incubator/apollo/)  |
-| Mentors | dims | Davanum Srinivas |
-| Committers | gawor | Jarek Gawor |
-| . | ips | Ian Springer |
-| . | kidz | Kinga Dziembowski |
-| . | meder | Sam Meder |
-| . | scamp | Sal Campana |
-| . | wire | Bill Reichardt |
-| Extra | . | . |
-
-
-- 2005-06-03 - Incubator PMC voted to graduate WSRF
-
-- 2005-05-25 - A 1.0 beta release of Apollo was released today. For a description of the features included in this release, see the [release announcement](http://marc.theaimsgroup.com/?l=apollo-dev&amp;m=111705792026831&amp;w=2) . This release contains all of the features that are planned for v1.0. The plan is to spend the next 6-8 weeks bolstering documentation and unit test coverage, i18nizing all messages, and fixing any bugs that are reported.
-
-- 2005-04-21 - Kinga Dziembowski was voted in as a committer.
-
-- 2005-03-17 - Due to trademark concerns with using the name Apollo, we voted to change the project name to WSRF.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2005-04-18 | Make sure that the requested project name does not already exist and check http://www.nameprotect.com/ to be sure that the name is not already trademarked for an existing software product. NOTE: The new name will be WSRF, since the name Apollo has trademark issues. |
-| 2004-11-04 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-11-04 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2004-11-04 | Subscribe all Mentors on the pmc and general lists. |
-| 2004-11-04 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2004-11-04 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2005-01-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-11-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2005-04-26 | Check and make sure that all code included with the distribution that is not under the Apache license has the right to combine with Apache-licensed code and redistribute. |
-| 2005-04-21 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2004-11-08 | Check that all active committers have submitted a contributors agreement. |
-| 2004-11-08 | Add all active committers in the STATUS file. |
-| 2004-11-08 | Ask root for the creation of committers' accounts on minotaur.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2004-11-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2004-11-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2004-11-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2004-11-15 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|-------|-------|
-| 2005-12-15 | Carry over the interfaces used in the Globus WSRF/WSN impl (Resource, ResourceHome, ResourceProperty, etc.). |
-| 2005-03-01 | Participate in the OASIS WSRF interop. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? ... Yes, though we expect to add new committers in the future. For example. Hitachi will be contributing a couple developers in the near future, and a company called Gestalt has expressed interest in contributing some manpower.
-
-- Are there three or more independent committers? ... Yes - HP (4), Globus (2), CA (1) and Stefan Lischke (individual).
-
-- Are project decisions being made in public by the committers? ... Yes, we vote on all important decisions (for example, cutting a release or changing the project name).
-
-- Are the decision-making guidelines published and agreed to by all of the committers? ... Yes, we use the standard ASF voting procedure.
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? ... Yes, we are only using 3rd-party libs with ASF-compatible licenses, and we are not using any trademarked names without proper acknowledgement.
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Has the PMC voted to accept it? ... Yes, the WebServices PMC has accepted responsibility for the project.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? ... A VOTE was intitiated by dims on 2005-05-27 and incubation was successfully completed on 2005-06-03.
diff --git a/content/apr-jlibtool.md b/content/apr-jlibtool.md
new file mode 100644
index 0000000..8b69c81
--- /dev/null
+++ b/content/apr-jlibtool.md
@@ -0,0 +1,73 @@
+Title: apr-jlibtool
+
+
+A C-based replacement for libtool. One C file intended to be dropped in to the repository. The last version I created is at:
+
+
+http://www.apache.org/~jerenkrantz/jlibtool.c
+
+
+
+- Which PMC will be responsible for the code
+
+APR
+
+
+
+- Into which existing project/module
+
+apr CVS repository under the build/ directory.
+
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2004-07-08 | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+# Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2004-07-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+
+(A software grant was faxed by Justin to Jim on 7/8/2004.)
+
+
+| 2004-07-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+(The copyright and license will be updated when it is committed.)
+
+
+# Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2004-07-08 | Check that all active committers have a signed CLA on record. |
+
+(Yes.)
+
+
+| 2004-07-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+
+(No corporate CLA needed.)
+
+
+| 2004-07-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+
+(The code was originally under the Apache 1.1 license - but will be relicensed to ALv2.)
+
+
+| 2004-07-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+(jlibtool has no external dependencies.)
+
+
+
+- Has the receiving PMC voted to accept it?
+
+Yes, via dev@apr.
+
diff --git a/content/ariatosca.md b/content/ariatosca.md
deleted file mode 100644
index c90013b..0000000
--- a/content/ariatosca.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: Incubation Status AriaTosca
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The AriaTosca project retired on 2018-07-01</span>
-
-
-ARIA TOSCA project offers an easily consumable Software Development Kit(SDK) and a Command Line Interface(CLI) to implement TOSCA(Topology and Orchestration Specification of Cloud Applications) based solutions
-
-
-
-- 2017-07-10: AriaTosca 0.1.0 released!
-
-- 2016-08-27: Project enters incubation.
-
-
--  [Original Project Proposal](http://wiki.apache.org/incubator/AriaProposal) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://ariatosca.incubator.apache.org/](http://ariatosca.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/AriaTosca](https://cwiki.apache.org/confluence/display/AriaTosca)  |
-| Mailing list | dev |  `dev`  `@`  `ariatosca.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `ariatosca.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/ARIA](https://issues.apache.org/jira/browse/ARIA)  |
-| Source code | GIT |  [http://git.apache.org/incubator-ariatosca.git/](https://git.apache.org/incubator-AriaTosca.git/)  |
-| Source code (for website) | SVN |  [https://svn.apache.org/repos/asf/incubator/ariatosca/](https://svn.apache.org/repos/asf/incubator/ariatosca/)  |
-| Mentors | . | . |
-| . | smarthi | Suneel Marthi |
-| . | johndament | John D. Ament |
-| . | jghoman | Jakob Homan |
-| Committers | . | . |
-| . | ran | Ran Ziv |
-| . | avia | Avia Efrat |
-| . | nirb | Nir Biran |
-| . | mxmrlv | Maxim Orlov |
-| . | dank | Dan Kilman |
-| . | emblemparade | Tal Liron |
-| Extra | . | . |
-
-
-- September 2016
-
-- October 2016
-
-- November 2016
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-08-16 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-08-27 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-08-27 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-08-27 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-10-12 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-09-01 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/aries.md b/content/aries.md
deleted file mode 100644
index cc7f7fd..0000000
--- a/content/aries.md
+++ /dev/null
@@ -1,250 +0,0 @@
-Title: Aries Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Aries project graduated on 2010-12-15</span>
-
-
-The Aries project will deliver a set of pluggable Java components enabling an enterprise OSGi application programming model.
-
-
-
-- 2010-12-15 Aries graduates as new TLP
-
-- 2010-11-04 New Committer: Emily Jiang
-
-- 2010-11-04 New Committer: Chris Wilkinson
-
-- 2010-11-02 New PPMC member: Holly Cummins
-
-- 2010-10-21 New Committer: Bartosz Kowalewski (Bartek)
-
-- 2010-09-06 0.2-incubating release available
-
-- 2010-06-11 New Committer: Holly Cummins
-
-- 2010-05-26 0.1-incubating release available
-
-- 2010-01-25 New Committer: Rex Wang
-
-- 2009-12-02 New Committer: Roman Roelofsen
-
-- 2009-10-07 New Committer: Adam Wojtuniak
-
-- 2009-10-07 New Committer: Niclas Hedhman
-
-- 2009-10-07 New Committer: Alan Keane
-
-- 2009-09-22 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/aries/](http://incubator.apache.org/aries/)  |
-| Mailing list | dev |  `aries-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `aries-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `aries-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/aries](https://issues.apache.org/jira/browse/aries)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/aries](https://svn.apache.org/repos/asf/incubator/aries)  |
-| Mentors | dims | Davanum Srinivas |
-| . | gnodet | Guillaume Nodet |
-| . | kevan | Kevan Miller |
-| Committers | awojtuniak | Adam Wojtuniak |
-| . | adc | Alan Cabrera |
-| . | atk | Alan Keane |
-| . | not | Alasdair Nottingham |
-| . | ozzy | Andrew Osborne |
-| . | bkowal | Bartek Kowalewski |
-| . |  | Bernd Kolb |
-| . | bdelacretaz | Bertrand Delacretaz |
-| . | cziegeler | Carsten Ziegeler |
-| . | cwilkin | Chris Wilkinson |
-| . |  | Dimo Stoilov |
-| . | dkulp | Dan Kulp |
-| . | davidb | David Bosschaert |
-| . | djencks | David Jencks |
-| . | ejiang | Emily Jiang |
-| . | eglynn | Eoghan Glynn |
-| . | gcc | Graham Charters |
-| . | gnodet | Guillaume Nodet |
-| . | chirino | Hiram Chirino |
-| . | cumminsh | Holly Cummins |
-| . | irobins | Ian Robinson |
-| . | jstrachan | James Strachan |
-| . | kmitov | Kiril Mitov |
-| . | gawor | Jarek Gawor |
-| . | jsdelfino | Jean-Sebastien Delfino |
-| . | hughesj | Jeremy Hughes |
-| . | jbohn | Joe Bohn |
-| . | rwonly | Lei "Rex" Wang |
-| . | linsun | Lin Sun |
-| . | mnuttall | Mark Nuttall |
-| . | niclas | Niclas Hedhman |
-| . | ngn | Niklas Gustavsson |
-| . | nikolait | Nikolai Tankov |
-| . |  | Oisin Hurley |
-| . |  | Peter Peshev |
-| . | rfeng | Raymond Feng |
-| . | rickmguire | Rick McGuire |
-| . |  | Roman Roelofsen |
-| . | heidersab | Sabine Heider |
-| . | sergeyb | Sergey Beryozkin |
-| . | mcculls | Stuart McCulloch |
-| . | timothyjward | Timothy Ward |
-| . |  | Todor Boev |
-| . | mahrwald | Valentin Mahrwald |
-| . | violetagg | Violeta Georgieva |
-| . | zoe | Zoe Slattery |
-
-
--  [Spetember 2010](http://wiki.apache.org/incubator/September2010#Aries) 
-
--  [June 2010](http://wiki.apache.org/incubator/June2010#Aries) 
-
--  [March 2010](http://wiki.apache.org/incubator/March2010#Aries) 
-
--  [December2009](http://wiki.apache.org/incubator/December2009#Aries) 
-
--  [November2009](http://wiki.apache.org/incubator/November2009#Aries) 
-
--  [October2009](http://wiki.apache.org/incubator/October2009#Aries) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-09-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-|  | The name was chosen prior to proposal with the [ASF project naming guidelines](http://www.apache.org/dev/project-names.html) in mind. |
-| 2009-09-01 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-|  | Not applicable. This podling is not requesting the use of a package outside org.apache |
-| 2009-09-22 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-|  | Not applicable. There is no request to enter an existing Apache project. |
-| 2009-09-28 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-|  | Aries mailing lists created under @incubator.apache.org |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-09-22 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-|  | Davanum Srinivas, Guillaume Nodet, Kevan Miller and Bertrand Delacretaz volunteered as mentors. Bertrand has since resigned as mentor. |
-| 2009-09-22 | Subscribe all Mentors on the pmc and general lists. |
-|  | Already in place. |
-| 2009-09-22 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-|  | The mentors already have this karma. |
-| 2009-09-22 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-|  | The mentors are tracking the podling status file |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-09-29 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-|  | There is one initial contribution - that from IBM. It is in SVN at incubator/aries/contrib. The software grant is called ibm-aries.pdf and has been committed to the private SVN. |
-| 2010-10-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-|  | The copyright notices have been removed from the source contributed by an IBM employee and the ASF licnese header added, in accordance with the [ASF Source Header and Copyright Notice Policy](http://www.apache.org/legal/src-headers.html#headers)  |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-05-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-|  | Two files in the Apache Aries JPA module are licensed using the CDDL: persistence-xsd.rsrc and persistence_2_0-xsd.rsrc. This is highlighted in that module's LICENSE file. |
-| 2010-05-26 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-|  | This was done during the process of releasing 0.1-incubating. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-11-01 | Check that all active committers have submitted a contributors agreement. |
-|  | All committers listed above with Apache IDs have submitted ICLAs listed in the [Committer Index](http://people.apache.org/committer-index.html) . Those listed above without IDs requested that they be committers when incubation started, but haven't submitted ICLAs. |
-| 2009-11-27 | Add all active committers in the STATUS file. |
-|  | Initial committers added, new ones added when they are voted in |
-| 2009-10-xx | Ask root for the creation of committers' accounts on people.apache.org. |
-|  | This was done piecemeal - as the initial committers requested them on aries-private |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-09-22 | Ask infrastructure to create source repository modules and grant the committers karma. |
-|  |  [INFRA-2245](https://issues.apache.org/jira/browse/INFRA-2245)  |
-| 2009-09-22 | Ask infrastructure to set up and archive Mailing lists. |
-|  |  [INFRA-2243](https://issues.apache.org/jira/browse/INFRA-2243)  |
-| 2009-09-22 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-|  |  [INFRA-2244](https://issues.apache.org/jira/browse/INFRA-2244)  |
-| 2009-09-22 | Migrate the project to our infrastructure. |
-|  | Not necessary as this is a new project with no existing infrastructure outside the ASF. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/arrow-csharp-library.md b/content/arrow-csharp-library.md
new file mode 100644
index 0000000..d5ad991
--- /dev/null
+++ b/content/arrow-csharp-library.md
@@ -0,0 +1,66 @@
+Title: Arrow C# Library Intellectual Property (IP) Clearance Status
+
+
+The Arrow C# Library is a native C# .NET library for Apache Arrow, modeled after other implementations already int he project.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-10-15 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/feyenzylstra/apache-arrow](https://github.com/feyenzylstra/apache-arrow) at commit [dfecf626f30c29c9acfe35d07bbc88e4e66dbd19](https://github.com/feyenzylstra/apache-arrow/dfecf626f30c29c9acfe35d07bbc88e4e66dbd19) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-10-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Software Grant from Feyen Zylstra.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Feyen Zylstra LLC
+
+| date | item |
+|------|------|
+| 2018-10-21 | Check that all active committers have a signed CLA on record. |
+| 2018-10-21 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-10-21 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-10-21 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2018-10-18.](https://s.apache.org/arrow-csharp-donation-vote) 
+
+-  [IP clearance vote on general@incubator.apache.org, passed on 2018-10-25.](https://s.apache.org/arrow-csharp-ip-clearance) 
diff --git a/content/arrow-gandiva.md b/content/arrow-gandiva.md
new file mode 100644
index 0000000..0efdbfa
--- /dev/null
+++ b/content/arrow-gandiva.md
@@ -0,0 +1,66 @@
+Title: Arrow Gandiva Intellectual Property (IP) Clearance Status
+
+
+The Arrow Gandiva is an LLVM-based analytical expression compiler for the Apache Arrow columnar memory format.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Jacques Nadeau (Apache Arrow PMC Chair)
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-09-21 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/dremio/gandiva](https://github.com/dremio/gandiva) . Submitted to Apache Arrow as GitHub pull request [https://github.com/apache/arrow/pull/2558](https://github.com/apache/arrow/pull/2558) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-09-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Software Grant from Jacques Nadeau (Gandiva Initiative for Apache Arrow)
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Dremio Corporation
+
+| date | item |
+|------|------|
+| 2018-09-21 | Check that all active committers have a signed CLA on record. |
+| 2018-09-21 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-09-21 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-09-21 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2018-08-21.](https://s.apache.org/arrow-gandiva-pmc-vote) 
diff --git a/content/arrow-go-library.md b/content/arrow-go-library.md
new file mode 100644
index 0000000..56533a5
--- /dev/null
+++ b/content/arrow-go-library.md
@@ -0,0 +1,68 @@
+Title: Arrow Go Library Intellectual Property (IP) Clearance Status
+
+
+The Arrow Go Library is a native Go language implementation of the Apache Arrow columnar format
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project, into a new Go area of the main Arrow source tree and build system.
+
+
+The following people will be managing this contribution:
+
+
+
+- Jacques Nadeau (Apache Arrow PMC Chair)
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-03-10 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/influxdata/arrow](https://github.com/influxdata/arrow) as at commit ID d0fe8b92721d37fbc8e920ccba9cf6eaf5cfa4db. Submitted to Apache Arrow as GitHub pull request [https://github.com/apache/arrow/pull/1739](https://github.com/apache/arrow/pull/1739) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-03-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Go Implementation of Apache Arrow
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- InfluxData, Inc.
+
+| date | item |
+|------|------|
+| 2018-03-10 | Check that all active committers have a signed CLA on record. |
+| 2018-03-10 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-03-15 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-03-15 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2018-03-10.](https://s.apache.org/arrow-go-library-pmc-vote) 
+
+-  [Vote on general@incubator passed on 2018-03-19](https://s.apache.org/arrow-go-library-clearance-result) 
diff --git a/content/arrow-julia-library.md b/content/arrow-julia-library.md
new file mode 100644
index 0000000..aeb5ce8
--- /dev/null
+++ b/content/arrow-julia-library.md
@@ -0,0 +1,63 @@
+Title: Arrow Julia Library Intellectual Property (IP) Clearance Status
+
+
+The Arrow Julia Library is a Julia language library for Apache Arrow.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+- Neal Richardson (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-10-21 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/JuliaData/Arrow.jl](https://github.com/JuliaData/Arrow.jl) as at commit ID 8583da8a84a9e355affb42654dcd8c765bcc3134. Submitted to Apache Arrow as GitHub pull request [https://github.com/apache/arrow/pull/8547](https://github.com/apache/arrow/pull/8547) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-10-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Jacob Quinn
+
+| date | item |
+|------|------|
+| 2020-10-20 | Check that all active committers have a signed CLA on record. |
+| 2020-10-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-10-28 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-10-28 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2020-10-15.](https://s.apache.org/arrow-julia-donation-vote) 
diff --git a/content/arrow-parquet-glib.md b/content/arrow-parquet-glib.md
new file mode 100644
index 0000000..0f128cd
--- /dev/null
+++ b/content/arrow-parquet-glib.md
@@ -0,0 +1,63 @@
+Title: Arrow Parquet GLib Library Intellectual Property (IP) Clearance Status
+
+
+The Arrow Parquet GLib Library is a C-based GLib binding binding to the Apache Parquet C++ libraries, designed for use in the context of the Apache Arrow columnar format.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+- Kouhei Sutou (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-09-28 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/red-data-tools/parquet-glib](https://github.com/red-data-tools/parquet-glib) . Submitted to Apache Arrow as GitHub pull request [https://github.com/apache/arrow/pull/2622](https://github.com/apache/arrow/pull/2622) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-09-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Kouhei Sutou
+
+| date | item |
+|------|------|
+| 2018-09-28 | Check that all active committers have a signed CLA on record. |
+| 2018-09-28 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-09-28 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-09-28 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2018-09-28.](https://s.apache.org/arrow-parquet-glib-library-pmc-vote) 
diff --git a/content/arrow-parquet-ruby.md b/content/arrow-parquet-ruby.md
new file mode 100644
index 0000000..784c299
--- /dev/null
+++ b/content/arrow-parquet-ruby.md
@@ -0,0 +1,63 @@
+Title: Arrow Parquet Ruby Library Intellectual Property (IP) Clearance Status
+
+
+The Arrow Parquet Ruby Library is a Ruby language interface for the Parquet GLib bindings that are part of Apache Arrow. This depends on the existing Arrow Ruby library.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+- Kouhei Sutou (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-10-16 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/red-data-tools/red-parquet/](https://github.com/red-data-tools/red-parquet/) at commit [cfb8fbfcaa5cb9c835058c2e612d202f6cad2edf](https://github.com/red-data-tools/red-parquet/cfb8fbfcaa5cb9c835058c2e612d202f6cad2edf) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-10-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Kouhei Sutou
+
+| date | item |
+|------|------|
+| 2018-10-16 | Check that all active committers have a signed CLA on record. |
+| 2018-10-16 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-10-25 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-10-25 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2018-10-21.](https://s.apache.org/arrow-parquet-ruby-vote) 
diff --git a/content/arrow-parquet-rust.md b/content/arrow-parquet-rust.md
new file mode 100644
index 0000000..3546937
--- /dev/null
+++ b/content/arrow-parquet-rust.md
@@ -0,0 +1,71 @@
+Title: Arrow Parquet Rust Library Intellectual Property (IP) Clearance Status
+
+
+The Arrow Parquet Rust Library is a native Rust language implementation of the Parquet file format, which will be intended to eventually be used in tandem with the Apache Arrow Rust library.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-12-13 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/sunchao/parquet-rs](https://github.com/sunchao/parquet-rs) contributed to Apache Arrow as pull request [https://github.com/apache/arrow/pull/3050](https://github.com/apache/arrow/pull/3050) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-12-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Chao Sun
+
+- Ivan Sadikov
+
+- Renjie Liu
+
+- Andy Grove
+
+- Guillem Nieto Taló
+
+- Xavier Lange
+
+| date | item |
+|------|------|
+| 2018-12-13 | Check that all active committers have a signed CLA on record. |
+| 2018-12-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-12-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-12-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2018-12-04.](https://s.apache.org/arrow-parquet-rust-vote) 
diff --git a/content/arrow-plasma-object-store.md b/content/arrow-plasma-object-store.md
new file mode 100644
index 0000000..3febc8a
--- /dev/null
+++ b/content/arrow-plasma-object-store.md
@@ -0,0 +1,95 @@
+Title: Arrow Plasma Object Store Intellectual Property (IP) Clearance Status
+
+
+The Plasma Object Store provides a server process, reference C++ client, and Python binding for managing a collection of binary "objects" in POSIX shared memory. Applications use a lightweight messaging protocol to create and delete memory blocks in the object store, evict objects to make room for new objects, and increment and decrement reference counts to indicate shared ownership of memory. It also provides for subscribing to notifications about object activity. The system helps simplify ownership transfer and memory lifetime of shared memory blocks, which can be much more complicated in a peer-to-peer architecture.
+
+
+The object store has been used in conjunction with the Apache Arrow libraries to provide for zero-copy access to collections of large objects stored in shared memory. Incorporating this project into Apache Arrow will help the community continue to develop and innovate technology for low-overhead sharing of complex datasets across multiple processes.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project, into the C++ part of the main Arrow source tree and build system.
+
+
+The following people will be managing this contribution:
+
+
+
+- Jacques Nadeau (Apache Arrow PMC Chair)
+
+- Julian Hyde (Apache Arrow PMC Member)
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-07-27 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/ray-project/arrow-plasma-object-store](https://github.com/ray-project/arrow-plasma-object-store) as at commit ID 11795753b0850cf5ad50d640067a8517ad8629a2.
+
+- Download link: [11795753b0850cf5ad50d640067a8517ad8629a2.tar.gz](https://github.com/ray-project/arrow-plasma-object-store/archive/11795753b0850cf5ad50d640067a8517ad8629a2.tar.gz) 
+
+- SHA1: 242fad7ce3a592c82865c3fe44f951b91e491b4f
+
+- SHA256: 64353a8ce8051ec3a75804f82d1da5880fad5b43d7fffe830ed1343674c7a5f2
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-07-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: arrow-plasma-object-store
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Philipp Moritz
+
+- Robert Nishihara
+
+- Richard Shin
+
+- Stephanie Wang
+
+- Alexey Tumanov
+
+- Ion Stoica
+
+- Ujval Misra
+
+- Mehrdad Niknami
+
+| date | item |
+|------|------|
+| 2017-07-27 | Check that all active committers have a signed CLA on record. |
+| 2017-07-27 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-07-27 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-07-27 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2017-07-22](https://s.apache.org/arrow-plasma-object-store-pmc-vote) 
+
+-  [Vote thread on general@incubator started on 2017-08-02](https://s.apache.org/arrow-plasma-object-store-clearance-vote) 
+
+-  [Vote on general@incubator passed on 2017-08-07](https://s.apache.org/arrow-plasma-object-store-clearance-result) 
diff --git a/content/arrow-ruby-library.md b/content/arrow-ruby-library.md
new file mode 100644
index 0000000..9ff1828
--- /dev/null
+++ b/content/arrow-ruby-library.md
@@ -0,0 +1,66 @@
+Title: Arrow Ruby Library Intellectual Property (IP) Clearance Status
+
+
+The Arrow Ruby Library is a Ruby language binding to the Apache Arrow C and C++ libraries
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+- Kouhei Sutou (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-05-03 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/red-data-tools/red-arrow](https://github.com/red-data-tools/red-arrow) as at commit ID abb0d3c0349c94189a700c25ab7ca97b17b09a6f. Submitted to Apache Arrow as GitHub pull request [https://github.com/apache/arrow/pull/1990](https://github.com/apache/arrow/pull/1990) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-05-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Ruby Library for Apache Arrow
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Kouhei Sutou
+
+| date | item |
+|------|------|
+| 2018-05-20 | Check that all active committers have a signed CLA on record. |
+| 2018-05-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-05-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-05-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2018-05-19.](https://s.apache.org/arrow-ruby-library-pmc-vote) 
diff --git a/content/arrow-rust-ballista.md b/content/arrow-rust-ballista.md
new file mode 100644
index 0000000..44c320d
--- /dev/null
+++ b/content/arrow-rust-ballista.md
@@ -0,0 +1,61 @@
+Title: Apache Arrow Rust Ballista Codebase Intellectual Property (IP) Clearance Status
+
+
+Arrow Rust Ballista is a distributed scheduler and query engine that depends on components in the existing Rust Arrow project.
+
+
+
+- The Apache Arrow PMC will be responsible for the code
+
+
+- It will be integrated into the Apache Arrow project
+
+
+- Officer or member managing donation: Andy Grove (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2021-04-01 | Trademark search found two active trademarks for software products named Ballista; an [operating system for drones from Dreamhammer, Inc](https://tmsearch.uspto.gov%2Fbin%2Fshowfield%3Ff%3Ddoc%26state%3D4802%3Aoty9vz.2.11) and a [VR game from High Voltage Software](https://tmsearch.uspto.gov%2Fbin%2Fshowfield%3Ff%3Ddoc%26state%3D4802%3Aoty9vz.2.3) . A Google search found a [software testing product named Ballista from Carnegie Mellon University](http://users.ece.cmu.edu%2F~koopman%2Fballista/) where they state that Ballista is a registered trademark. |
+
+Origin: [https://github.com/ballista-compute/ballista](https://github.com/ballista-compute/ballista) , which is being contributed in reduced form in the following Apache Arrow PR: [https://github.com/apache/arrow/pull/9723](https://github.com/apache/arrow/pull/9723) 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-04-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Andy Grove_ 
+
+| date | item |
+|------|------|
+| 2021-04-05 | Check that all active committers have a signed CLA on record. **There are 22 commits from 11 contributors that do have CLAs on file and have not responded to requests to submit one. See the [audit spreadsheet](https://docs.google.com/spreadsheets/d/19rIp24Jvi9KEEq3f8_fxqrThdH0dAaoTKiB0jNapDcY/edit?usp=sharing) for full details but most of these commits are implementing serde code to translate between protobuf data structures and Ballista data structures. There are also trivial code cleanup commits, and one small feature, one bug fix, and two performance optimizations. If any of the authors later object to their code being included, it will be trivial to remove the commits and then re-implement the changes without referencing their original work.**  |
+| 2021-04-05 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2021-04-05 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2021-04-05 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [The VOTE thread on the Apache Arrow dev@ mailing list accepting the donation](https://lists.apache.org/thread.html/rb4746aabbfa5a9d7f987db59375315235a78a7ef11dec0bd2a928eb6%40%3Cdev.arrow.apache.org%3E) 
diff --git a/content/arrow-rust-datafusion.md b/content/arrow-rust-datafusion.md
new file mode 100644
index 0000000..b472f21
--- /dev/null
+++ b/content/arrow-rust-datafusion.md
@@ -0,0 +1,66 @@
+Title: Arrow Rust DataFusion Intellectual Property (IP) Clearance Status
+
+
+Arrow Rust DataFusion is a Rust library for query processing of Apache Arrow columnar data. It depends on the existing Rust Arrow core library.
+
+
+The Apache Arrow PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Arrow project.
+
+
+The following people will be managing this contribution:
+
+
+
+- Wes McKinney (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-01-31 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/andygrove/datafusion](https://github.com/andygrove/datafusion) , contributed in reduced form to Apache Arrow as pull request [https://github.com/apache/arrow/pull/3399](https://github.com/apache/arrow/pull/3399) . A number of contributions to the original GitHub repository are not present, these are detailed in [an audit by Andy Grove](https://github.com/andygrove/datafusion/blob/master/docs/DataFusion%20Contributors.pdf) .
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-01-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Software Grant from Feyen Zylstra.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Andy Grove
+
+- Chao Sun
+
+| date | item |
+|------|------|
+| 2019-01-31 | Check that all active committers have a signed CLA on record. |
+| 2019-01-31 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-01-31 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-01-31 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes:
+
+
+
+-  [Vote on Apache Arrow dev list to determine whether the Arrow PMC is in favor of accepting the code contribution, passed on 2019-01-28.](https://s.apache.org/arrow-rust-datafusion-donation-vote) 
diff --git a/content/arrow-rust-experimental-arrow.md b/content/arrow-rust-experimental-arrow.md
new file mode 100644
index 0000000..13afec2
--- /dev/null
+++ b/content/arrow-rust-experimental-arrow.md
@@ -0,0 +1,57 @@
+Title: Apache Arrow Rust experimental arrow Codebase Intellectual Property (IP) Clearance Status
+
+
+Arrow Rust experimental arrow is a re-write of the original Rust implementation with a design that avoids memory safety violations (security and safety)
+
+
+
+- The Apache Arrow PMC will be responsible for the code
+
+
+- It will be integrated into the Apache Arrow project
+
+
+- Officer or member managing donation: Jorge Leitao (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+Origin: [https://github.com/jorgecarleitao/arrow2](https://github.com/jorgecarleitao/arrow2) , which is being contributed in the following PR [https://github.com/apache/arrow-experimental-rs-arrow2/pull/1](https://github.com/apache/arrow-experimental-rs-arrow2/pull/1) 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-04-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Jorge Leitao_ 
+
+-  _Fernando Herrera_ 
+
+| date | item |
+|------|------|
+| 2021-07-04 |  [Requested all committers to sign a CLA](https://github.com/apache/arrow-experimental-rs-arrow2/pull/1#issuecomment-873634637)  |
+| 2021-07-07 | Checked that committers have signed the CLA. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [The VOTE thread on the Apache Arrow dev@ mailing list accepting the donation](https://mail-archives.apache.org/mod_mbox/arrow-dev/202106.mbox/%3CCAHM19a4n5mweBbbAfxo2bc4jtVgyr%3DaR9emdy0jzFLcjBvmx%2BA%40mail.gmail.com%3E) 
diff --git a/content/arrow-rust-experimental-parquet.md b/content/arrow-rust-experimental-parquet.md
new file mode 100644
index 0000000..d0be09e
--- /dev/null
+++ b/content/arrow-rust-experimental-parquet.md
@@ -0,0 +1,57 @@
+Title: Apache Arrow Rust experimental parquet Codebase Intellectual Property (IP) Clearance Status
+
+
+Arrow Rust experimental parquet is a re-write of the original parquet implementation in Rust with a design that avoids memory safety violations (security and safety)
+
+
+
+- The Apache Arrow PMC will be responsible for the code
+
+
+- It will be integrated into the Apache Arrow project
+
+
+- Officer or member managing donation: Jorge Leitao (Apache Arrow PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+Origin: [https://github.com/jorgecarleitao/parquet2](https://github.com/jorgecarleitao/parquet2) , which is being contributed in the following PR [https://github.com/apache/arrow-experimental-rs-parquet2/pull/1](https://github.com/apache/arrow-experimental-rs-parquet2/pull/1) 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-04-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Jorge Leitao_ 
+
+-  _Fernando Herrera_ 
+
+| date | item |
+|------|------|
+| 2021-07-04 |  [Requested all committers to sign a CLA](https://github.com/apache/arrow-experimental-rs-parquet2/pull/1#issuecomment-873635928)  |
+| 2021-07-07 | Checked that committers have signed the CLA. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [The VOTE thread on the Apache Arrow dev@ mailing list accepting the donation](https://mail-archives.apache.org/mod_mbox/arrow-dev/202106.mbox/%3CCAHM19a4n5mweBbbAfxo2bc4jtVgyr%3DaR9emdy0jzFLcjBvmx%2BA%40mail.gmail.com%3E) 
diff --git a/content/asterixdb-jdbc-driver.md b/content/asterixdb-jdbc-driver.md
new file mode 100644
index 0000000..0af6673
--- /dev/null
+++ b/content/asterixdb-jdbc-driver.md
@@ -0,0 +1,55 @@
+Title: AsterixDB JDBC Driver Intellectual Property (IP) Clearance Status
+
+
+The AsterixDB JDBC Driver is a JDBC Driver for Apache AsterixDB.
+
+
+
+- The Apache AsterixDB PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache AsterixDB project.
+
+
+- Officer or member managing donation: Till Westmann
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2021-07-27 | Names are owned by the Apache Software Foundation. |
+| date | item |
+|------|------|
+| 2021-07-27 | The signed commit at https://github.com/couchbaselabs/asterixdb-jdbc-driver/commit/4bbf599125990ae1188d42e05e50655c4c741b20 |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-07-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Couchbase Inc.
+
+| date | item |
+|------|------|
+| 2021-07-27 | Check that all active committers have a signed CLA on record. |
+| 2021-07-27 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2021-07-27 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2021-07-27 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
diff --git a/content/asterixdb.md b/content/asterixdb.md
deleted file mode 100644
index e9e854e..0000000
--- a/content/asterixdb.md
+++ /dev/null
@@ -1,202 +0,0 @@
-Title: Apache AsterixDB Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The AsterixDB project graduated on 2016-04-20</span>
-
-
-The Apache AsterixDB Project is a scalable big data management system (BDMS) that provides storage, management, and query capabilities for large collections of semi-structured data.
-
-
-
-- 2015-02-28 Project enters incubation.
-
-- 2015-09-22 Release: Hyracks 0.2.16-incubating.
-
-- 2015-10-20 New committer: Chris Hillery.
-
-- 2015-10-22 Release: AsterixDB 0.8.7-incubating.
-
-- 2016-01-16 New committer: Heri Ramampiaro.
-
-- 2016-02-26 Release: AsterixDB 0.8.8-incubating and Hyracks 0.2.17-incubating.
-
-- 2016-03-28 New committer: Michael Blow.
-
-- 2016-04-20 ASF Board establishes the Apache AsterixDB project.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://asterixdb.incubator.apache.org/](http://asterixdb.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/ASTERIXDB](https://cwiki.apache.org/confluence/display/ASTERIXDB)  |
-| Mailing list | dev |  `dev`  `@`  `asterixdb.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `asterixdb.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `asterixdb.incubator.apache.org`  |
-| . | users |  `users`  `@`  `asterixdb.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/ASTERIXDB](https://issues.apache.org/jira/browse/ASTERIXDB)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-asterixdb.git](https://gitbox.apache.org/repos/asf/incubator-asterixdb.git) <br></br> [https://gitbox.apache.org/repos/asf/incubator-asterixdb-hyracks.git](https://gitbox.apache.org/repos/asf/incubator-asterixdb-hyracks.git)  |
-| Mentors | mattmann | Chris Mattmann |
-| . | hsaputra | Henry Saputra |
-| . | tdunning | Ted Dunning |
-| . | ate | Ate Douma |
-| . | jochen | Jochen Wiedmann |
-| Committers/PPMC Members | . | . |
-| . | amoudi | Abdullah Alamoudi |
-| . | csamak | Cameron Samak |
-| . | chenli | Chen Li |
-| . | ceej | Chris Hillery |
-| . | heri | Heri Ramampiaro |
-| . | imaxon | Ian Maxon |
-| . | icetindil | Inci Cetindil |
-| . | ildar | Ildar Absalyamov |
-| . | jianfeng | Jianfeng Jia |
-| . | kereno | Keren Ouaknine |
-| . | mrks | Markus Dreseler |
-| . | mblow | Michael Blow |
-| . | dtabass | Mike Carey |
-| . | mhubail | Murtadha Hubail |
-| . | pouria | Pouria Pirzadeh |
-| . | prestonc | Preston Carman |
-| . | raman | Raman Grover |
-| . | salsubaiee | Sattam Alsubaiee |
-| . | sjaco002 | Steven Jacobs |
-| . | wangsaeu | Taewoo Kim |
-| . | tillw | Till Westmann |
-| . | tsotras | Vassilis Tsotras |
-| . | vinayakb | Vinayak Borkar |
-| . | buyingyi | Yingyi Bu |
-| . | kisskys | Young-Seok Kim |
-| . | zheilbron | Zach Heilbron |
-| Extra | . | . |
-
-
--  [March 2015](http://wiki.apache.org/incubator/March2015) 
-
--  [April 2015](http://wiki.apache.org/incubator/April2015) 
-
--  [May 2015](http://wiki.apache.org/incubator/May2015) 
-
--  [June 2015](http://wiki.apache.org/incubator/June2015) 
-
--  [July 2015](http://wiki.apache.org/incubator/July2015) 
-
--  [August 2015](http://wiki.apache.org/incubator/August2015) 
-
--  [November 2015](http://wiki.apache.org/incubator/November2015) 
-
--  [February 2016](http://wiki.apache.org/incubator/February2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-03-01 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) . Please see: [PODLINGNAMESEARCH-70](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-70) for the discussion. |
-| 2015-03-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-03-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-03-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-03-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-08-08 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-08-13 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-04-20 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-04-20 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-03-01 | Tell Mentors to track progress in the file 'incubator/projects/asterixdb.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-04-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-04-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-02-25 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-02-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 20125-04-20 | Check that all active committers have submitted a contributors agreement. |
-| 2015-04-20 | Add all active committers in the STATUS file. |
-| 2015-04-20 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-| date | item |
-|------|------|
-| n/a | If graduating to an existing PMC, has the PMC voted to accept it? |
-| 2016-04-20 | If graduating to a new PMC, has the board voted to accept it?
-ASF Board Meeting Minutes for 2016-04-20 once they are available [here](http://www.apache.org/foundation/board/calendar.html) 
-
- |
-
-## Incubator sign-off {#Incubator+sign-off}
-
-| date | item |
-|------|------|
-| 2016-04-20 | Has the Incubator decided that the project has accomplished all of the above tasks?
- [Incubator vote result](http://mail-archives.apache.org/mod_mbox/incubator-general/201604.mbox/%3C6A25EA07-EA64-4918-BADB-60208BD5C470%40apache.org%3E) 
-
- |
diff --git a/content/atlas.md b/content/atlas.md
deleted file mode 100644
index 270dc64..0000000
--- a/content/atlas.md
+++ /dev/null
@@ -1,198 +0,0 @@
-Title: Apache Atlas Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Atlas project graduated on 2017-06-21</span>
-
-
-Apache Atlas is a scalable and extensible set of core foundational governance services that enables enterprises to effectively and efficiently meet their compliance requirements within Hadoop and allows integration with the complete enterprise data ecosystem.
-
-
-
-- 2015-05-06. Apache Atlas enters incubation.
-
-- 2015-07-15. Apache Atlas made its first release, 0.5.0-incubating.
-
-- 2015-12-31. Apache Atlas released 0.6.0-incubating.
-
-- 2016-07-09. Apache Atlas released 0.7.0-incubating.
-
-- 2017-01-26. Apache Atlas released 0.7.1-incubating.
-
-- 2017-03-16. Apache Atlas released 0.8.0-incubating.
-
-
--  [Project website](http://atlas.incubator.apache.org/) 
-
-
--  [Atlas project information](http://atlas.incubator.apache.org/project-info.html) 
-
-
--  [Project Wiki](https://cwiki.apache.org/confluence/display/ATLAS) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://atlas.incubator.apache.org/](http://atlas.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/ATLAS](https://cwiki.apache.org/confluence/display/ATLAS)  |
-| Mailing list | dev |  `dev`  `@`  `atlas.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `atlas.incubator.apache.org`  |
-| . | private |  `private`  `@`  `atlas.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/ATLAS](https://issues.apache.org/jira/browse/ATLAS)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-atlas.git](https://gitbox.apache.org/repos/asf/incubator-atlas.git)  |
-| Champion | jitendra | Jitendra Nath Pandey |
-| Mentors | acmurthy | Arun C. Murthy |
-| . | cdouglas | Chris Douglas |
-| . | jghoman | Jakob Homan |
-| . | vinodkv | Vinod Kumar Vavilapalli |
-| Committers | venkatesh | Venkatesh Seetharam |
-| . | rhbutani | Harish Butani |
-| . | shwethags | Shwetha GS |
-| . | sumasai | Suma Shivaprasad |
-| . | jmaron | Jon Maron |
-| . | aa | Andrew Ahn |
-| . | Not submitted their ICLA | David Kaspar |
-| . | Not submitted their ICLA | Ivo Lasek |
-| . | dfusaro | Dennis Fusaro |
-| . | tjbchris | Chris Hyzer |
-| . | dmarkwat | Daniel Markwat |
-| . | gsenia | Greg Senia |
-| . | Not submitted their ICLA | James Vollmer |
-| . | dossett | Aaron Dossett |
-| . | mitchschussler | Mitch Schussler |
-| . | Not submitted their ICLA | Viswanath Avasarala |
-| . | Not submitted their ICLA | Anil Varma |
-| . | bstortz | Barbara Stortz |
-| . | sriksun | Srikanth Sundarrajan |
-| . | suresh | Suresh Srinivas |
-| . | venkatrangan | Venkat Ranganathan |
-| . | sumasai | Suma Shivaprasad |
-| . | yhemanth | Hemanth Yamijala |
-| . | kbhatt | Keval Bhatt |
-| . | dkantor | Dave Kantor |
-| . | darshankumar | Darshan Kumar |
-| . | tbeerbower | Tom Beerbower |
-| . | madhan | Madhan Neethiraj |
-| . | svimal2106 | Vimal Sharma |
-| . | jnhagelberg | Jeffrey Hagelberg |
-| . | apoorvnaik | Apoorv Naik |
-| . | ayubpathan | Ayub Pathan |
-
-
--  [March, 2016](https://wiki.apache.org/incubator/March2016) 
-
--  [December, 2015](https://wiki.apache.org/incubator/December2015) 
-
--  [September, 2015](https://wiki.apache.org/incubator/September2015) 
-
--  [June, 2015](http://wiki.apache.org/incubator/June2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-05-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2015-05-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-05-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-05-06 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-05-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-05-06 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-05-06 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-05-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2015-05-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-05-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-05-30 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-06-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-06-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-06-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-06-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-05-11 | Check that all active committers have submitted a contributors agreement. |
-| 2015-05-06 | Add all active committers in the STATUS file. |
-| 2015-05-11 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ats-ats_speed.md b/content/ats-ats_speed.md
new file mode 100644
index 0000000..6bd5ecd
--- /dev/null
+++ b/content/ats-ats_speed.md
@@ -0,0 +1,62 @@
+Title: We-Amp ats_speed Codebase Intellectual Property (IP) Clearance Status
+
+
+Web performance optimization plugin for Apache Traffic Server, powered by Google PageSpeed. Original source: https://github.com/we-amp/ats_speed
+
+
+
+- Which PMC will be responsible for the code: Apache Traffic Server
+
+
+- Into which existing project/module: ATS git repo
+
+
+- Officer or member managing donation: Leif Hedstrom
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-07-04 | https://github.com/We-Amp/ats_speed |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2014-7-7 | Check that all active committers have a signed CLA on record. |
+| 2014-7-7 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-7-7 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-7-7 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/aurora-twitter-commons.md b/content/aurora-twitter-commons.md
new file mode 100644
index 0000000..d4a023e
--- /dev/null
+++ b/content/aurora-twitter-commons.md
@@ -0,0 +1,62 @@
+Title: Aurora Twitter Commons Codebase Intellectual Property (IP) Clearance Status
+
+
+Twitter Commons library for Java code
+
+
+
+- Which PMC will be responsible for the code: Apache Aurora
+
+
+- Into which existing project/module: Apache Aurora
+
+
+- Officer or member managing donation: Jake Farrell
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-08-10 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: bc7248da0974ab8a39ca36956ac6880029b85b00
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-08-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2015-08-10 | Check that all active committers have a signed CLA on record. |
+| 2015-08-10 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/aurora.md b/content/aurora.md
deleted file mode 100644
index fa2d883..0000000
--- a/content/aurora.md
+++ /dev/null
@@ -1,191 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Aurora project graduated on 2015-03-18</span>
-
-
-Aurora is a service scheduler used to schedule jobs onto Apache Mesos.
-
-
-
-- 2013-10-01 Project enters incubation.
-
-- 2014-01-14 New Committer: Mark Chu-Carroll
-
-- 2014-01-23 New Committer and PMC member: Jake Farrell
-
-- 2014-02-03 New PMC member: Mark Chu-Carroll
-
-- 2014-08-01 Release: Apache Aurora 0.5.0-incubating
-
-- 2014-08-20 New Committer and PMC member: David McLaughlin
-
-- 2014-11-21 Release: Apache Aurora 0.6.0-incubating
-
-- 2015-01-09 New Committer and PMC member: Zameer Manji
-
-- 2015-02-02 New Committer: Joshua Cohen
-
-- 2015-02-05 Release: Apache Aurora 0.7.0-incubating
-
-- 2015-03-18 Graduated from the incubator
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://aurora.incubator.apache.org](http://aurora.incubator.apache.org)  |
-| . | wiki |  [http://wiki.apache.org/aurora/](http://wiki.apache.org/aurora/)  |
-| Mailing list | dev |  `dev`  `@`  `aurora.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `aurora.incubator.apache.org`  |
-| . | private |  `private`  `@`  `aurora.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/AURORA](https://issues.apache.org/jira/browse/AURORA)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-aurora.git](https://gitbox.apache.org/repos/asf?p=incubator-aurora.git)  |
-| Mentors | jfarrell | Jake Farrell |
-| . | benh | Benjamin Hindman |
-| . | mattmann | Chris Mattmann |
-| . | hsaputra | Henry Saputra |
-| Committers | dlester | Dave Lester |
-| . | jonboulle | Jonathan Boulle |
-| . | wfarner | William Farner |
-| . | mansu | Suman Karumuri |
-| . | maxim | Maxim Khutornenko |
-| . | kevints | Kevin Sweeney |
-| . | wickman | Brian Wickman |
-| Extra | . | . |
-
-
--  [November 2013](http://wiki.apache.org/incubator/November2013) 
-
--  [December 2013](http://wiki.apache.org/incubator/December2013) 
-
--  [January 2014](http://wiki.apache.org/incubator/January2014) 
-
--  [April 2014](http://wiki.apache.org/incubator/April2014) 
-
--  [July 2014](http://wiki.apache.org/incubator/July2014) 
-
--  [October 2014](http://wiki.apache.org/incubator/October2014) 
-
--  [January 2015](http://wiki.apache.org/incubator/January2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-10-01 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-10-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-10-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-10-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-10-01 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-11-26 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-10-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-10-18 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-10-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-11-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-12-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2104-01-17 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2104-03-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-10-12 | Check that all active committers have submitted a contributors agreement. |
-| 2013-10-12 | Add all active committers in the STATUS file. |
-| 2013-10-12 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/avro-rust-library.md b/content/avro-rust-library.md
new file mode 100644
index 0000000..8da38b6
--- /dev/null
+++ b/content/avro-rust-library.md
@@ -0,0 +1,67 @@
+Title: Apache Avro Rust Library Intellectual Property (IP) Clearance Status
+
+
+The Avro Rust Library (avro-rs) is a native Rust language implementation of the Avro file format.
+
+
+
+- The Apache Avro PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache Avro project.
+
+
+- Officer or member managing donation: Ismaël Mejía (Apache Avro PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2021-05-24 | Trademark and Google Search found no use of name as software product. |
+
+
+- Origin: [https://github.com/flavray/avro-rs/](https://github.com/flavray/avro-rs/commit/941000b1e3c71a89010999d7aa0c4955e3672f5a) contributed to Apache Avro as pull request [https://github.com/apache/avro/pull/1234](https://github.com/apache/avro/pull/1234) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-05-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Yelp UK Ltd
+
+- Flavien Raynaud
+
+- Antonio Verardi
+
+- Phillip Cloud
+
+| date | item |
+|------|------|
+| 2021-05-24 | Check that all active committers have a signed CLA on record. |
+| 2021-05-24 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2021-05-24 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2021-05-24 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on Apache Avro dev list to determine whether the Avro PMC is in favor of accepting the code contribution, passed on 2021-05-28.](https://s.apache.org/avro-rust-vote) 
diff --git a/content/awf.md b/content/awf.md
deleted file mode 100644
index e4decdf..0000000
--- a/content/awf.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The AWF project retired on 2012-09-16</span>
-
-
-AWF is a non-blocking, asynchronous, event driven high performance web framework running on the JVM.
-
-
-
-- 2011-07-08 AWF has been accepted in Apache Incubator
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/awf/](http://incubator.apache.org/awf/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/AWF](https://cwiki.apache.org/confluence/display/AWF)  |
-| Mailing list | dev |  `awf-dev`  `@`  `incubator.apache.org`  |
-| . | users |  `awf-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `awf-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/AWF](https://issues.apache.org/jira/browse/AWF)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/awf/](https://svn.apache.org/repos/asf/incubator/awf/)  |
-| Mentors | elecharny | Emmanuel Lecharny |
-| . | mnour | Mohammad Nour El-Din |
-| . | struberg | Mark Struberg |
-| Committers | . | Roger Schildmeijer |
-| . | . | Jim Petersson |
-| . | . | Jonathan Meehan |
-| . | . | Nicholas Whitehead |
-| . | . | Seven Le Mesle |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-07-08 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-07-08 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-07-08 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-07-04 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-07-10 | Tell Mentors to track progress in the file 'incubator/projects/awf.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/axion.md b/content/axion.md
deleted file mode 100644
index e7bd9b7..0000000
--- a/content/axion.md
+++ /dev/null
@@ -1,142 +0,0 @@
-Title: Axion Project Incubation Status
-<version>$Revision: 1.4 $ $Date: 2014-03-27 23:51:21 +0000 (Thu, 27 Mar 2014) $</version>
-
-Axion is a Java-based relational database engine.
-
-
-This page tracks Axion's incubation status. For general project status, see the Axion project website.
-
-
-<span class="retired">The Axion project retired on 2006-01-23</span>
-
-
-# Incubation Related {#Incubation+Related}
-
-
-
-2006-01-23
- [Cancelled at request of Sponsoring TLP. The axion project never moved to the ASF from tigris.org.](http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3cB94F91F8-4E42-4336-B9C6-B06D63BC8BF0@apache.org%3e) 
-
-
-2003-12-19
-The [Apache Incubator Project](http://incubator.apache.org/) has acknowledged Axion's acceptance by the [Apache Database Project](http://db.apache.org/) . Incubation is officially underway.
-
-2003-12-02
-The [Apache Database Project](http://db.apache.org/) has accepted Axion's proposal. Send message to [general-thread.243@db.apache.org](mailto:general-thread.243@db.apache.org) to retrieve the VOTE thread, and to [general-thread.257@db.apache.org](mailto:general-thread.247@db.apache.org) to retrieve the RESULT thread. Morgan Delegrange has [volunteered](http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=720) to act as "mentor".
-
-2003-11-04
-Axion team [has voted](http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=697) to move the [Apache Database Project](http://db.apache.org/) .
-# Project Related {#Project+Related}
-
-Currently, see [http://axion.tigris.org/news.html](http://axion.tigris.org/news.html) for project related news.
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www | Currently [http://axion.tigris.org/](http://axion.tigris.org/) . Eventually [http://db.apache.org/axion/](http://db.apache.org/axion/) . |
-| Mailing List | dev | axion-dev@db.apache.org (deprecated: dev@axion.tigris.org) |
-|   | user | axion-user@db.apache.org (deprecated: users@axion.tigris.org) |
-|   | cvs | axion-dev@db.apache.org (deprecated: cvs@axion.tigris.org) |
-| Issue Database |   | Currently [http://axion.tigris.org/servlets/ProjectIssues](http://axion.tigris.org/servlets/ProjectIssues) . Soon Bugzilla? Jira? To be determined. |
-| Source Repository | CVS | Currently [http://axion.tigris.org/source/browse/axion/](http://axion.tigris.org/source/browse/axion/) . Soon [db-axion](http://cvs.apache.org/viewcvs/db-axion) . |
-| Mentors |   | Morgan Delegrange (morgand@apache) |
-| Committers |   | For now, see [http://axion.tigris.org/servlets/ProjectMemberList](http://axion.tigris.org/servlets/ProjectMemberList)  |
-
-ToDo: Add links here.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date completed | item |
-|-----------------|-------|
-| 2003-12-19 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.<br></br> **Done.**  _As of 19 December 2003, nothing seems relevant ( [try it yourself](http://nameprotect.com/cgi-bin/FREESearch/search.cgi?action=SEARCH&amp;db=PTO&amp;ss=axion) ). Note that "axion" is [a scientific term](http://www.m-w.com/cgi-bin/dictionary?axion) ._  |
-| 2003-12-02 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names.<br></br> **Done.**  _Send a message to [general-thread.243@db.apache.org](mailto:general-thread.243@db.apache.org) to retrieve the VOTE thread, and to [general-thread.257@db.apache.org](mailto:general-thread.247@db.apache.org) to retrieve the RESULT thread._  |
-| 2003-11-04 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.<br></br> **Done.**  _See [http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=697](http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=697) ._  |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date completed | item |
-|-----------------|-------|
-| 2003-12-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors.<br></br> **Done.**  _See [http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=720](http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=720) ._  |
-| 2003-12-19 | Subscribe all Mentors on the pmc and general lists.<br></br> **Done.**  |
-| 2003-12-19 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair)<br></br> **Done.**  |
-| 2003-12-19 | Tell Mentors to track progress in the file `incubator/projects/{project.name}.cwiki
-` <br></br> **Done.**  _Using `incubator/projects/axion.xml
-` instead, since Forrest's cwiki parser seems to be broken._  |
-
-## Copyright {#Copyright}
-
-| date completed | item |
-|-----------------|-------|
-| Submitted 16-July-2004 | Check that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>(Fax submitted 16-July-2004. Not yet acknowledged.) |
-|   | Check that the files that have been donated have been updated to reflect the new ASF copyright.<br></br> |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date completed | item |
-|-----------------|-------|
-| 2003-12-19 | Check that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br> **Done.**  _All code currently distributed by the project is already available under an ASF-like license. See [Axion's original license](http://axion.tigris.org/unbranded-source/browse/*checkout*/axion/LICENSE.txt?rev=HEAD) . This will be changed to the ASF license when the copyright is transfered (see [above](#copyright) )._  |
-| 2003-12-19 | Check that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br> **Done.**  _All code currently distributed by the project is already available under an ASF-like license. See [Axion's original license](http://axion.tigris.org/unbranded-source/browse/*checkout*/axion/LICENSE.txt?rev=HEAD) . This will be changed to the ASF license when the copyright is transfered (see [above](#copyright) )._  |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date completed | item |
-|-----------------|-------|
-|   | Check that all active committers have submitted a contributors agreement. |
-|   | Add all active committers in the STATUS file. |
-|   | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date completed | item |
-|-----------------|-------|
-| 2004-06-14 | Ask infrastructure to create source repository modules and add the committers to the avail file.<br></br> **Done.**  |
-| 2004-06-14 | Ask infrastructure to set up and archive Mailing lists.<br></br> **Done.**  |
-|   | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-|   | Migrate the project to our infrastructure.<br></br> _As previously discussed, waiting on final Milestone 3 release from Tigris._  |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
-> These items are not to be signed as done during incubation, as they may change during incubation. They are to be looked into and described in the status reports and completed in the request for incubation signoff.
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
-Things to check for before voting the project out.
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-
-If graduating to an existing PMC, has the PMC voted to accept it?
- _Yes. Send a message to [general-thread.243@db.apache.org](mailto:general-thread.243@db.apache.org) to retrieve the VOTE thread, and to [general-thread.257@db.apache.org](mailto:general-thread.247@db.apache.org) to retrieve the RESULT thread._ 
-## Incubator sign-off {#Incubator+sign-off}
-
-
-
-Has the Incubator decided that the project has accomplished all of the above tasks?
- 
\ No newline at end of file
diff --git a/content/batchee.md b/content/batchee.md
deleted file mode 100644
index 73cde25..0000000
--- a/content/batchee.md
+++ /dev/null
@@ -1,140 +0,0 @@
-Title: Batchee Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Batchee project graduated on 2019-12-10 as part of the Geronimo TLP</span>
-
-
-BatchEE will be an ASL-licensed implementation of the JBatch Specification which is defined as JSR-352 (for version 1.0).
-
-
-
-- 2013-11-13 web site created.
-
-- 2013-10-29 JIRA, mailing lists, SVN space created.
-
-- 2013-10-22 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://batchee.incubator.apache.org](http://batchee.incubator.apache.org/)  |
-| . | wiki | ? |
-| Mailing list | dev |  `dev`  `@`  `batchee.incubator.apache.org`  |
-| . | user |  `user`  `@`  `batchee.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `batchee.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/BATCHEE](https://issues.apache.org/jira/browse/BATCHEE)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-batchee.git](https://gitbox.apache.org/repos/asf?p=incubator-batchee.git)  |
-| . | jbonofre | Jean-Baptiste Onofré |
-| Mentors | olamy | Olivier Lamy |
-| . | struberg | Mark Struberg |
-| Committers | rmannibucau | Romain Manni-Bucau |
-| . | jlmonteiro | Jean-Louis Monteiro |
-| . | gpetracek | Gerhard Petracek |
-| . | gpetracek | Gerhard Petracek |
-| . | stephenc | Stephen Connolly |
-| . | dblevins | David Blevins |
-
-
-- 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-10-18 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-10-18 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-11-02 | Ask infrastructure to set up wiki (Confluence, Moin). |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-10-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-10-20 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-11-04 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-10-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Check that all active committers have submitted a contributors agreement. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - YES
-
-- Are project decisions being made in public by the committers? - YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? - ?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? - ?
diff --git a/content/beam-dataflow-java-worker.md b/content/beam-dataflow-java-worker.md
new file mode 100644
index 0000000..0dcfc1b
--- /dev/null
+++ b/content/beam-dataflow-java-worker.md
@@ -0,0 +1,74 @@
+Title: Beam Dataflow Java Worker Intellectual Property (IP) Clearance Status
+
+
+The Beam Dataflow Java Worker is the component for retrieving and executing work in the Google Cloud Dataflow service.
+
+
+
+- The Apache Beam PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache Beam project under the runners/google-cloud-dataflow-java/worker directory.
+
+
+- Officer or member managing donation:
+
+
+- Kenneth Knowles (Apache Beam PMC Chair)
+
+- Lukasz Cwik (Apache Beam PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-10-03 | Trademark and Google Search found no use of name as software product. |
+
+
+
+- Origin: [https://github.com/boyuanzz/beam/tree/dataflow_java_worker/runners/google-cloud-dataflow-java/worker](https://github.com/boyuanzz/beam/tree/dataflow_java_worker/runners/google-cloud-dataflow-java/worker) as at commit ID 5dca67a925fe5620216483964129b4133eb2df17.
+
+- Submitted to Apache Beam as GitHub pull request [https://github.com/apache/beam/pull/6561](https://github.com/apache/beam/pull/6561) .
+
+- Tracking JIRA: [https://issues.apache.org/jira/browse/BEAM-5634](https://issues.apache.org/jira/browse/BEAM-5634) 
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-10-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-10-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Google LLC._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Google LLC_ 
+
+| date | item |
+|------|------|
+| 2018-10-03 | Check that all active committers have a signed CLA on record. |
+| 2018-10-03 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-10-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-10-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _ [https://lists.apache.org/thread.html/2bdc645659e2fbd7e29f3a2758941faefedb01148a2a11558dfe60f8@%3Cdev.beam.apache.org%3E](https://lists.apache.org/thread.html/2bdc645659e2fbd7e29f3a2758941faefedb01148a2a11558dfe60f8@%3Cdev.beam.apache.org%3E) _ 
diff --git a/content/beam-euphoria.md b/content/beam-euphoria.md
new file mode 100644
index 0000000..4095f6e
--- /dev/null
+++ b/content/beam-euphoria.md
@@ -0,0 +1,72 @@
+Title: Apache Beam Euphoria API Codebase Intellectual Property (IP) Clearance Status
+
+
+The Apache Beam Euphoria DSL is an easy to use high-level Java 8 DSL over the Apache Beam Java SDK.
+
+
+
+- The Apache Beam PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache Beam project under the sdks/java/extensions/euphoria and sdks/java/extensions/kryo directories.
+
+
+- Officer or member managing donation:
+
+
+- Kenneth Knowles (Apache Beam PMC Chair)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-10-10 | https://github.com/seznam/beam/tree/ad6875f96ef0f7ed3ff970005687e3063698a88a |
+
+
+
+- Origin: [https://github.com/seznam/euphoria](https://github.com/seznam/euphoria) .
+
+- Apache Beam pull request: [https://github.com/apache/beam/pull/6601](https://github.com/apache/beam/pull/6601) .
+
+- Tracking JIRA: [https://issues.apache.org/jira/browse/BEAM-3900](https://issues.apache.org/jira/browse/BEAM-3900) 
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-10-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-10-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Seznam.cz, a.s._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Seznam.cz, a.s._ 
+
+| date | item |
+|------|------|
+| 2018-10-10 | Check that all active committers have a signed CLA on record. |
+| 2018-10-10 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-10-10 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-10-10 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _ [http://mail-archives.apache.org/mod_mbox/beam-dev/201810.mbox/%3caed0686279914291a6f2a524e4e9bc81@firma.seznam.cz%3e](http://mail-archives.apache.org/mod_mbox/beam-dev/201810.mbox/%3caed0686279914291a6f2a524e4e9bc81@firma.seznam.cz%3e) _ 
diff --git a/content/beam-go-sdk.md b/content/beam-go-sdk.md
new file mode 100644
index 0000000..fba540d
--- /dev/null
+++ b/content/beam-go-sdk.md
@@ -0,0 +1,65 @@
+Title: Beam Go SDK Intellectual Property (IP) Clearance Status
+
+
+The Beam Go SDK is an Go implementation of the Beam programming model. It allows users to write and execute data processing pipelines using the Go programming language.
+
+
+The Apache Beam PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Beam project under the sdks/go directory.
+
+
+The following people will be managing this contribution:
+
+
+
+- Kenneth Knowles (Apache Beam PMC Member)
+
+- Robert Bradshaw (Apache Beam PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-05-23 | Trademark and Google Search found no use of name as software product. |
+
+Origin: [https://github.com/herohde/beam/tree/go-sdk](https://github.com/herohde/beam/tree/go-sdk) as at commit ID 5743a37fd7719d7d5e0e031836756d69fd9a8789. Submitted to Apache Beam as GitHub pull request [https://github.com/apache/beam/pull/4200](https://github.com/apache/beam/pull/4200) 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-05-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-05-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Google LLC.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+Google LLC
+| date | item |
+|------|------|
+| 2018-05-23 | Check that all active committers have a signed CLA on record. |
+| 2018-05-23 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-05-23 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-05-23 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on Apache Beam dev list to determine whether the Beam PMC is in favor of accepting the code contribution.](https://lists.apache.org/thread.html/ffed1e2ee06286bf429ed4dd851a879883a5909942b4ad09481c957c@%3Cdev.beam.apache.org%3E) 
diff --git a/content/beam-zetasql-translator.md b/content/beam-zetasql-translator.md
new file mode 100644
index 0000000..ff42774
--- /dev/null
+++ b/content/beam-zetasql-translator.md
@@ -0,0 +1,61 @@
+Title: Beam ZetaSQL Translator Intellectual Property (IP) Clearance Status
+
+
+Beam ZetaSQL Translator is a new functional module for supporting ZetaSQL as a dialect of Beam SQL
+
+
+
+- The Beam PMC will be responsible for the code
+
+
+- It will be integrated into Beam SQL
+
+
+- Officer or member managing donation: Kenneth Knowles (Beam PMC Chair and ASF Member / kenn@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-08-13 | https://github.com/apache/beam/pull/9210 |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-08-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-08-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Google Inc - Signed Corp CLA
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Google Inc
+
+| date | item |
+|------|------|
+| 2019-08-13 | Check that all active committers have a signed CLA on record. |
+| 2019-08-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-08-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-08-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Acceptance vote: https://lists.apache.org/thread.html/5cc6b0886cee1059ba6037234bc7ead1f9ef8c56d548a98e0f8c793f@%3Cdev.beam.apache.org%3E
+
+- I.P. clearance: https://lists.apache.org/thread.html/239be048e7748f079dc34b06020e0c8f094859cb4a558b361f6b8eb5@%3Cgeneral.incubator.apache.org%3E
diff --git a/content/beam.md b/content/beam.md
deleted file mode 100644
index 20d0107..0000000
--- a/content/beam.md
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Beam Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
- **THIS WEBSITE IS NO LONGER MAINTAINED!** 
-
-
-<span class="graduated">The Beam project graduated on 2016-12-21.</span>
-
-
-Apache Beam is a unified programming model for both batch and streaming data processing, enabling efficient execution across diverse distributed execution engines and providing extensibility points for connecting to different technologies and user communities.
-
-
-
-- 2016-02-01 Project enters incubation.
-
-- 2016-02-02 JIRA, mailing lists, git, website space created.
-
-- 2016-06-15 Apache Beam 0.1.0-incubating released.
-
-- 2016-08-09 Apache Beam 0.2.0-incubating released.
-
-- 2016-10-31 Apache Beam 0.3.0-incubating released.
-
-- 2016-12-21 Apache Beam graduation resolution enacted by the ASF Board.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://beam.incubator.apache.org](http://beam.incubator.apache.org)  |
-| Mailing list | dev |  `dev`  `@`  `beam.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `beam.incubator.apache.org`  |
-| . | user |  `user`  `@`  `beam.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/BEAM](https://issues.apache.org/jira/browse/BEAM)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-beam.git](https://gitbox.apache.org/repos/asf/incubator-beam.git)  |
-| Champion | jbonofre | Jean-Baptiste Onofré |
-| Mentor | venkatesh | Venkatesh Seetharam |
-| . | tdunning | Ted Dunning |
-| . | jbonofre | Jean-Baptiste Onofré |
-| PPMC / committers | aljoscha | Aljoscha Krettek |
-| . | amitsela | Amit Sela |
-| . | bchambers | Ben Chambers |
-| . |  | Craig Chambers |
-| . | dhalperi | Dan Halperin |
-| . | davor | Davor Bonaci |
-| . | frances | Frances Perry |
-| . | jamesmalone | James Malone |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | jwills | Josh Wills |
-| . | ktzoumas | Kostas Tzoumas |
-| . | kenn | Kenneth Knowles |
-| . | lcwik | Luke Cwik |
-| . | mxm | Maximilian Michels |
-| . | sewen | Stephan Ewen |
-| . | tomwhite | Thomas White |
-| . | takidau | Tyler Akidau |
-| . | robertwb | Robert Bradshaw |
-| Committers | jesseanderson | Jesse Anderson |
-| . | tgroh | Thomas Groh |
-| . | thw | Thomas Weise |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-02-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2016-02-01 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2016-02-01 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-02-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-02-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-02-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-02-20 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-02-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2016-02-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-02-01 | Give all Mentors access to the incubator git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-02-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-02-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-02-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-02-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-02-01 | Check that all active committers have submitted a contributors agreement. |
-| 2016-02-01 | Add all active committers in the STATUS file. |
-| 2016-02-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/beanvalidation.md b/content/beanvalidation.md
deleted file mode 100644
index 6e29619..0000000
--- a/content/beanvalidation.md
+++ /dev/null
@@ -1,158 +0,0 @@
-Title: Bean Validation Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Bean Validation project graduated on 2012-02-15</span>
-
-
-The Bean Validation project will create an implementation of the Java EE Bean Validation specification.
-
-
-
-- 2010-03-01 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/bval/](http://incubator.apache.org/bval/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/BeanValidation/](http://cwiki.apache.org/confluence/display/BeanValidation/)  |
-| Mailing list | dev |  `bval-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `bval-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/BVAL](https://issues.apache.org/jira/browse/BVAL)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/bval/](https://svn.apache.org/repos/asf/incubator/bval/)  |
-| Mentors | kevan | Kevan Miller |
-| . | niallp | Niall Pemberton |
-| . | lresende | Luciano Resende |
-| . | matzew | Matthias Wessendorf |
-| Committers | romanstumm | Roman Stumm |
-| . | dwoods | Donald Woods |
-| . | mnour | Mohammad Nour El-Din |
-| . | simonetripodi | Simone Tripodi |
-| . | jrbauer | Jeremy Bauer |
-| . | gpetracek | Gerhard Petracek |
-| . | struberg | Mark Struberg |
-
-
--  [April 2010](http://wiki.apache.org/incubator/April2010#BeanValidation)  [May 2010](http://wiki.apache.org/incubator/May2010#BeanValidation) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-01-08 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. DONE via trademarkia.com and others |
-| 2012-01-08 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. DONE, not applicable. |
-| 2012-01-08 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. DONE, not applicable. |
-| 2012-01-08 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. DONE, not applicable. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-03-23 | Ask infrastructure to create source repository modules and grant the committers karma.<br></br>(see [INFRA-2528](http://issues.apache.org/jira/browse/INFRA-2528) and [INFRA-2529](http://issues.apache.org/jira/browse/INFRA-2529) ) |
-| 2010-03-12 | Ask infrastructure to set up and archive mailing lists.<br></br>(see [INFRA-2527](http://issues.apache.org/jira/browse/INFRA-2527) ) |
-| 2010-03-16 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla).<br></br>(see [INFRA-2530](http://issues.apache.org/jira/browse/INFRA-2530) ) |
-| 2010-03-17 | Ask infrastructure to set up wiki (Confluence, Moin).<br></br>(see [INFRA-2531](http://issues.apache.org/jira/browse/INFRA-2531) ) |
-| 2010-03-17 | Migrate the project to our infrastructure.<br></br>(see [r924153](http://svn.apache.org/viewvc?view=revision&amp;revision=924153) ) |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-02-23 | Identify all the Mentors for the incubation, by asking all that can be Mentors.<br></br>(see [Vote thread](http://markmail.org/message/37oaihbwwiuptt4q) ) |
-| 2010-03-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-03-12 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-04-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html'<br></br>(see [here](http://markmail.org/message/ck3pwlcukfp53g4f) ) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-10-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>( _Software Grant from KEBA AG_ ) |
-| 2010-03-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright.<br></br>(see [BVAL-3](http://issues.apache.org/jira/browse/BVAL-3) ) |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br>( _all code is being distributed under AL 2.0_ ) |
-| N/A | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br>( _all code is being distributed under AL 2.0_ ) |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-03-23 | Check that all active committers have submitted a contributors agreement.<br></br>(see [INFRA-2529](http://issues.apache.org/jira/browse/INFRA-2529) ) |
-| 2010-03-23 | Add all active committers in the STATUS file. |
-| 2010-03-23 | Ask root for the creation of committers' accounts on people.apache.org.<br></br>(see [INFRA-2529](http://issues.apache.org/jira/browse/INFRA-2529) ) |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? (checked, DONE.)
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) (checked, DONE.)
-
-- Are project decisions being made in public by the committers? (DONE.)
-
-- Are the decision-making guidelines published and agreed to by all of the committers? (checked, DONE.)
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? (checked, DONE.)
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/beehive.md b/content/beehive.md
deleted file mode 100644
index b1b25d3..0000000
--- a/content/beehive.md
+++ /dev/null
@@ -1,226 +0,0 @@
-Title: Apache Beehive Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](http://incubator.apache.org/beehive) .
-
-
-<span class="graduated">The Beehive project graduated on 2005-07-18</span>
-
-
-The Beehive project is an extensible Java application framework with an integrated metadata-driven programming model for web services, web applications, and resource access. The framework leverages the latest innovations in the forthcoming JDK 1.5, particularly JSR 175 metadata annotations. It currently builds on key Apache projects such as Tomcat, Struts, MyFaces, and Axis.
-
-
-While this proposal focuses on a framework consisting of these three subprojects, it is expected that the Apache community will come up with additional innovative ideas that will evolve into future subprojects. The currently planned components include:
-
-
-
-- Controls: The Control architecture is a lightweight component framework based upon annotated JavaBeans, exposing a simple and consistent client model for accessing a variety of J2EE resource types. The framework provides a variety of functions including: JavaBean-based client access, configuration through JSR-175 metadata and external configuration data, automatic resource management, context services, and an extensible authoring model for creating new Control types.
-
-- NetUI: NetUI Page Flow is a web application framework based on Apache Struts with an easy to use, single-file programming model based on JSR-175 metadata. It builds on the core Struts separation of model/view/controller elements, and adds features such as automatic state management and first-class integration with Controls, XMLBeans, and Java Server Faces.
-
-- Metadata for Java Web Services: This component is an implementation of the JSR-181 specification and is a key piece of the Beehive framework. JSR 181 uses JSR-175 metadata annotations in Java methods and classes to easily build Web services.
-
-
-- 2005-06-06: Beehive releases 1.0 milestone 1
-
-- 2005-05-09: Beehive starts building a nightly release available from http://cvs.apache.org
-
-- 2005-05-09: Beehive completes the addition of the core J2EE system controls to Apache SVN
-
-- 2005-03-28: Beehive reaches a beta milestone and releases pre-1.0 beta version
-
-- 2005-02-07: Beehive adds Bryan Che as a committer
-
-- 2004-12-17: Beehive adds Fumitada Hatori as a committer
-
-- 2004-11-12: Beehive reaches an alpha milestone and releases pre-1.0 alpha version for ApacheCon
-
-- 2004-07-16: Beehive source code for NetUI and Controls are now available. Web Services code will begin with the Axis 181 codebase
-
-
-- Project Web Site: [http://incubator.apache.org/beehive](http://incubator.apache.org/beehive) 
-
-- Mailing List Info: [http://incubator.apache.org/beehive/mailinglists.html](http://incubator.apache.org/beehive/mailinglists.html) 
-
-# Detailed References: {#Detailed+References%3A}
-
-| Item | Type | Reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/beehive/](http://incubator.apache.org/beehive/)  |
-| . | wiki |  [http://wiki.apache.org/beehive](http://wiki.apache.org/beehive)  |
-| Mailing list | dev | beehive-dev@incubator.apache.org |
-| . | user | beehive-user@incubator.apache.org |
-| . | commits | beehive-commits@incubator.apache.org |
-| . | ppmc | beehive-ppmc@incubator.apache.org |
-| Bug tracking | . | JIRA: Beehive (BEEHIVE), Admin: Heather Stephens (heathers) |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/beehive](http://svn.apache.org/viewcvs.cgi/incubator/beehive/)  |
-| Proposal | wiki |  [http://wiki.apache.org/incubator/BeehiveProposal](http://wiki.apache.org/incubator/BeehiveProposal)  |
-| Mentor | craigmcc | Craig R. McClanahan |
-| Committers | ias | Changshin Lee |
-| Committers | cjudson | Chris Judson |
-| Committers | cliffs | Cliff Schmidt |
-| Committers | craigc | Craig Crutcher |
-| Committers | dolander | Daryl Olander |
-| Committers | dims | Davanum Srinivas |
-| Committers | davidbau | David Bau |
-| Committers | dmkarr | David M. Karr |
-| Committers | daveread | David Read |
-| Committers | ekoneil | Eddie O'Neil |
-| Committers | heathers | Heather Stephens |
-| Committers | jongjinchoi | Jongjin Choi |
-| Committers | kylem | Kyle Marvin |
-| Committers | jsong | James Song |
-| Committers | kentam | Ken Tam |
-| Committers | mclark | Michael Clark |
-| Committers | rich | Richard Feit |
-| Committers | rotan | Rotan Hanrahan |
-| Committers | scottryan | Scott Ryan |
-| Committers | steveh | Steve Hanson |
-| Committers | stocco | Steven Tocco |
-| Committers | vsalvato | Vince Salvato |
-| Committers | mmerz | Mike Merz |
-| Committers | hattori | Fumitada Hattori |
-| Committers | bryanche | Brian Che |
-
- **2005-04-26** <br></br><br></br>Beehive is in the home stretch of its 1.0-level release; we declared a beta release in March, and are on track to deliver a 1.0 in the late May timeframe. Posting automated daily builds continues to be an challenge, but otherwise infrastructure is well in place. At this point we are largely focused on fit'n'finish issues in the code, as well as a polished set of samples and documentation.<br></br><br></br>The Beehive community added Bryan Che as a new committer in February, 2005. With the beta release and open planning on features for the next version, we are seeing increased dev/user list activity -- we anticipate that the 1.0 release will be even more significant in building the community, and hope to graduate from the Incubator sometime soon after the 1.0 release. Certain Beehive components have a very clear affinity with the Apache Struts and AXIS projects, and those projects may play a role in graduation (pending further discussion).<br></br><br></br> **2004-10-18** <br></br><br></br> **Code &amp; Infrastructure** 
-
-
-
-- initial code drop was made in mid-July. Ongoing development is very active.
-
-- over the last three months, we've set up SVN, JIRA, a website, and a wiki.
-
-- docs and tutorials contributions continue - a better Beehive build system has been proposed by a contributor. It is currently under review by committers.
-
-- Beehive jars were added to java-repository in order to support control builders who prefer to use Maven.
- **Legal** <br></br>
-
-- all code shows ASF copyright notice.
-
-- software grant, individual CLAs, and corporate CLAs, are in place for all active committers (one initial committer has no account while we wait for his employer to complete review of CLA and CCLA)
- **Community** <br></br>
-
-- Web services metadata subproject has participation from key members of Axis community; We've accepted Wolfgang (Fumitada Hattori) as a new committer on the project in the Web services area
-
-- NetUI and Controls subprojects are still primarily driven by BEA employees. We expect this to begin to change after getting out an initial release for the community to experiment with and digest.
-
-- We've seen a growth in interest/use on both the user and dev mailing lists
-
-- Amazon, XFire and Hibernate pre-1.0 controls built on Beehive have been released at Controlhaus.
- **Release Plans** <br></br>
-
-- The community cut a pre-1.0 release for ApacheCon. This release followed the incubation release rules requiring a) incubator disclaimer in README and from any download links, b) filename to include 'incubating', and c) ppmc vote (providing the incubator pmc approval since all interested incubator pmc members should be on the beehive ppmc mailing list.
-
-- A generic release plan proposed and discussed but needs a final vote. Roadmap documents have been posted to make it easier for new developers to get the big picture and figure out where they can help.
-<br></br><br></br><br></br><br></br>
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| Date | Item |
-|-------|-------|
-| DONE - ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE - 2004-07-15 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| Date | Item |
-|-------|-------|
-| DONE - 2004-05-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE - 2004-06-15 | Subscribe all Mentors on the pmc and general lists. |
-| DONE - 2004-07-16 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| DONE - 2004-07-18 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| Date | Item |
-|-------|-------|
-| DONE - 2004-07-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE - 2004-10-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-| DONE - 2005-05-09 | Migrated the "system controls" from [ControlHaus](http://www.controlhaus.org) to Apache SVN with ASF 2.0 License and Apache copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| Date | Item |
-|-------|-------|
-| DONE - 2004-10-18 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| DONE - 2004-10-18 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-| DONE - 2005-05-04 | BEA completes code grant for the "system control" source code from [ControlHaus](http://www.controlhaus.org) to be added to the Beehive SVN repository and released with our distributions. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| Date | Item |
-|-------|-------|
-| DONE ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| DONE - 2004-07-14 | Add all active committers in the STATUS file. |
-| DONE - 2004-07-18 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-| 2004-12-17 | Added Fumitada Hatori (Wolfgang) as a committer. |
-| 2005-02-07 | Added Bryan Che a committer. |
-
-## Infrastructure {#Infrastructure}
-
-| Date | Item |
-|-------|-------|
-| DONE - 2004-07-15 | Ask infrastructure to set up and archive Mailing lists. |
-| DONE - 2004-07-16 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE - 2004-07-16 | Decide about and then ask infrastructure to setup an issuetracking system (JIRA). |
-| DONE - 2004-07-16 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- DONE - Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- DONE - Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- DONE - Are project decisions being made in public by the committers?
-
-- DONE - Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- DONE - Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific Tasks {#Project+Specific+Tasks}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/bigtop.md b/content/bigtop.md
deleted file mode 100644
index 44ca7e6..0000000
--- a/content/bigtop.md
+++ /dev/null
@@ -1,204 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Bigtop project graduated on 2012-09-19</span>
-
-
-Bigtop is a project for the development of packaging and tests of the Hadoop ecosystem.
-
-
-
-- 2012-09-19 Apache Bigtop graduates from the Incbuator.
-
-- 2012-08-20 0.4.0-incubating released!
-
-- 2012-03-30 New Committer: Stephen Chu
-
-- 2012-04-12 0.3.0-incubating released!
-
-- 2012-03-30 New Committer: Patrick Taylor Ramsey
-
-- 2011-11-14 0.2.0-incubating released!
-
-- 2011-08-25 0.1.0-incubating released!
-
-- 2011-08-22 0.1.0-incubating release candidate 2 submitted for vote.
-
-- 2011-08-04 Code imported, license cleanup begun.
-
-- 2011-07-14 Code transfer rights document received by ASF.
-
-- 2011-07-1 Mailing lists, wiki, JIRA set up.
-
-- 2011-06-20 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/bigtop/](http://incubator.apache.org/bigtop/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/BIGTOP](https://cwiki.apache.org/confluence/display/BIGTOP)  |
-| Mailing list | dev |  `bigtop-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `bigtop-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `bigtop-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/BIGTOP](https://issues.apache.org/jira/browse/BIGTOP)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/bigtop/](https://svn.apache.org/repos/asf/incubator/bigtop/)  |
-| Mentors | phunt | Patrick Hunt |
-| . | tomwhite | Tom White |
-| . | omalley | Owen O'Malley |
-| . | gates | Alan Gates |
-| . | stevel | Steve Loughran |
-| Committers | tucu | Alejandro Abdelnur |
-| . | arcilla | Andre Arcilla |
-| . | abayer | Andrew Bayer |
-| . | cos | Konstantin Boudnik |
-| . | schu | Stephen Chu |
-| . | eli | Eli Collins |
-| . | traviscrawford | Travis Crawford |
-| . | bmahe | Bruno Mahé |
-| . | gates | Alan Gates |
-| . | phunt | Patrick Hunt |
-| . | plinnell | Peter Linnell |
-| . | stevel | Steve Loughran |
-| . | omalley | Owen O'Malley |
-| . | jamespage | James Page |
-| . | ptr | Patrick Taylor Ramsey |
-| . | rvs | Roman Shaposhnik |
-| . | jvs | John Sichi |
-| . | stack | Michael Stack |
-| . | tomwhite | Tom White |
-| . | asavu | Andrei Savu |
-| . | edwardyoon | Edward J. Yoon |
-
-
--  [September 2012 Report](http://wiki.apache.org/incubator/September2012) 
-
--  [June 2012 Report](http://wiki.apache.org/incubator/June2012) 
-
--  [March 2012 Report](http://wiki.apache.org/incubator/March2012) 
-
--  [December 2011 Report](http://wiki.apache.org/incubator/December2011) 
-
--  [August 2011 Report](http://wiki.apache.org/incubator/August2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-08-04 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA..-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA..-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA..-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-08-04 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-08-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-08-04 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-08-04 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-08-04 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-08-24 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-08-24 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-06-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-08-24 | Tell Mentors to track progress in the file 'incubator/projects/bigtop.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-07-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-08-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-08-24 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-08-24 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-08-24 | Check that all active committers have submitted a contributors agreement. |
-| 2011-08-24 | Add all active committers in the STATUS file. |
-| 2011-08-24 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/bloodhound.md b/content/bloodhound.md
deleted file mode 100644
index 3c9967b..0000000
--- a/content/bloodhound.md
+++ /dev/null
@@ -1,193 +0,0 @@
-Title: Bloodhound
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Bloodhound project graduated on 2013-03-20</span>
-
-
-Bloodhound is a software development collaboration tool, including issue tracking, wiki and repository browsing.
-
-
-
-- <span style="white-space: pre">2013-03-20</span>Apache Bloodhound graduates from the Incubator.
-
-- <span style="white-space: pre">2013-03-13</span>Resolution to establish Apache Bloodhound TLP submitted to the Board.
-
-- <span style="white-space: pre">2013-03-13</span>Incubator PMC votes for graduation.
-
-- <span style="white-space: pre">2013-03-06</span>Community votes for graduation.
-
-- <span style="white-space: pre">2013-01-28</span>Version 0.4 (incubating) released.
-
-- <span style="white-space: pre">2013-01-24</span>New committer: Matevž Bradač.
-
-- <span style="white-space: pre">2013-01-24</span>New committer: Andrej Golcov.
-
-- <span style="white-space: pre">2013-01-09</span>Bloodhound extends commit bit to all ASF committers.
-
-- <span style="white-space: pre">2012-12-04</span>Version 0.3 (incubating) released.
-
-- <span style="white-space: pre">2012-11-26</span>New committer: Ryan Ollos.
-
-- <span style="white-space: pre">2012-11-23</span>New committer: Jure Žitnik.
-
-- <span style="white-space: pre">2012-11-23</span>New committer: Peter Koželj.
-
-- <span style="white-space: pre">2012-11-15</span>Version 0.2 (incubating) released.
-
-- <span style="white-space: pre">2012-09-18</span>New committer: Joachim Dreimann.
-
-- <span style="white-space: pre">2012-09-14</span>Version 0.1.0 (incubating) released.
-
-- <span style="white-space: pre">2012-02-01</span>Self-hosting at [issues.apache.org/bloodhound](https://issues.apache.org/bloodhound) .
-
-- <span style="white-space: pre">2011-12-23</span>Project enters incubation.
-
-| item | type | reference | link |
-|------|------|-----------|------|
-| Website | www |  [http://incubator.apache.org/bloodhound/](http://incubator.apache.org/bloodhound/)  |
-|   | wiki |  [https://issues.apache.org/bloodhound/wiki](https://issues.apache.org/bloodhound/wiki)  |
-| Mailing list | dev |  `bloodhound-dev`  `@`  `incubator.apache.org`  |  [archive](http://mail-archives.apache.org/mod_mbox/incubator-bloodhound-dev/)  |
-|   | user |  `bloodhound-user`  `@`  `incubator.apache.org`  |  [archive](http://mail-archives.apache.org/mod_mbox/incubator-bloodhound-user/)  |
-|   | commits |  `bloodhound-commits`  `@`  `incubator.apache.org`  |  [archive](http://mail-archives.apache.org/mod_mbox/incubator-bloodhound-commits/)  |
-|   | private |  `bloodhound-private`  `@`  `incubator.apache.org`  |
-| Bug tracking |   |  [https://issues.apache.org/bloodhound/report](https://issues.apache.org/bloodhound/report)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/bloodhound/](https://svn.apache.org/repos/asf/incubator/bloodhound/)  |
-| Mentors | hwright | Hyrum K. Wright |
-|   | gstein | Greg Stein |
-|   | brane | Branko Čibej |
-| PPMC | mbooth | Mat Booth |
-|   | chambej | John Chambers |
-|   | gjm | Gary Martin |
-|   | gmcdonald | Gavin McDonald |
-|   | mpoole | Mark Poole |
-|   | hwright | Hyrum Wright |
-| Committers | jdreimann | Joachim Dreimann |
-|   | jure | Jure Žitnik |
-|   | peter | Peter Koželj |
-|   | rjollos | Ryan Ollos |
-|   | matevz | Matevž Bradač |
-|   | andrej | Andrej Golcov |
-
-
--  [February 2012](http://wiki.apache.org/incubator/February2012) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012) 
-
--  [September 2012](http://wiki.apache.org/incubator/September2012) 
-
--  [December 2012](http://wiki.apache.org/incubator/December2012) 
-
--  [March 2013](http://wiki.apache.org/incubator/March2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-02-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-01-10 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-12-28 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-01-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012-01-12 | Ask infrastructure to set up self-hosting environment (A VM or Jail). |
-| 2012-01-10 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-12-29 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc private and general lists. |
-| 2012-01-10 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-12-29 | Tell Mentors to track progress in the file 'incubator/content/projects/{project.name}.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| N/A | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| DONE | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/bluemarlin.md b/content/bluemarlin.md
deleted file mode 100644
index 8b60ae5..0000000
--- a/content/bluemarlin.md
+++ /dev/null
@@ -1,146 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-BlueMarlin will develop a web service to add intelligence functionality to a plain ad system.
-
-
-
-- YYYY-MM-DD Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://bluemarlin.incubator.apache.org/](http://bluemarlin.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `PROJECT.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `PROJECT.incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/bluemarlin/](https://svn.apache.org/repos/asf/incubator/bluemarlin/)  |
-| Roster | Whimsy |  [BlueMarlin Roster](https://whimsy.apache.org/roster/ppmc/bluemarlin)  |
-
-
--  [BlueMarlin Board Reports](https://whimsy.apache.org/board/minutes/bluemarlin.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/bluesky.md b/content/bluesky.md
deleted file mode 100644
index 731762b..0000000
--- a/content/bluesky.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: Apache Bluesky Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-<h1 style="background: red">2011/07/05 - Bluesky has been retired.</h1>
-This page tracks the project status, incubator-wise. For more general project status, look on the<s> [project website.](http://incubator.apache.org/bluesky/) </s>
-
-
-<span class="retired">The Bluesky project retired on 2011-07-05</span>
-
-
-The Bluesky Project is an e-learning solution designed to help solve the disparity in availabilty of education between well-developed cities and poorer regions of China. It had been deployed to 12 + 5 primary/high schools with positive reviews. We enter the incubation to revolve our system so that poor regions around the world could share higher education resources.
-
-
-
-- 2008-01-12 Project enters incubation.
-
-- 2009-09-15 New Committer: mabowen
-
-- 2009-09-15 New Committer: ping
-
-- 2009-09-15 Committers revoked: okid stellagjj zhangfan
-
-- 2011-07-05 Project removed from incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Official Website | www | <s> [http://incubator.apache.org/bluesky/](http://incubator.apache.org/bluesky/) </s> |
-| . | wiki |  [http://wiki.apache.org/incubator/BlueSky/](http://wiki.apache.org/incubator/BlueSky/)  |
-| Developer's Mailing List | dev | <s> [bluesky-dev@incubator.apache.org](mailto:bluesky-dev-subscribe@incubator.apache.org) </s>- [(archive)](http://mail-archives.apache.org/mod_mbox/incubator-bluesky-dev/)  |
-| Commits Mailing List | commits | <s> [bluesky-commits@incubator.apache.org](mailto:bluesky-commits-subscribe@incubator.apache.org) </s>- [(archive)](http://mail-archives.apache.org/mod_mbox/incubator-bluesky-commits/)  |
-| User Mailing List | user | <s> [bluesky-user@incubator.apache.org](mailto:bluesky-user-subscribe@incubator.apache.org) </s>- [(archive)](http://mail-archives.apache.org/mod_mbox/incubator-bluesky-user/)  |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/browse/BLUESKY](http://issues.apache.org/jira/browse/BLUESKY)  |
-| Source code | svn | <s> [http://svn.apache.org/repos/asf/incubator/bluesky/](http://svn.apache.org/repos/asf/incubator/bluesky/) </s> |
-| Mentors | stoddard | Bill Stoddard |
-| . | farra | Aaron Farr |
-| Committers | tpeng | Ting Peng |
-| . | dane0101 | Jiang Shan |
-| . | mabowen | Bowen Ma |
-| . | ping | Ping Chen |
-| Extra | . | . |
-
-
--  [September 2009](http://wiki.apache.org/incubator/September2009) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007-10-23 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-01-12 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-01-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2009-09-15 | Give new committers access to the incubator SVN repository. Revoke the inactive committers. |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-09-15 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/blur.md b/content/blur.md
deleted file mode 100644
index 84c4329..0000000
--- a/content/blur.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: Apache Blur (Incubating) Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Blur is a search platform capable of searching massive amounts of data in a cloud computing environment.
-
-
-<span class="retired">The Blur project retired on 2017-06-22</span>
-
-
-
-- 2012-07-24 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/blur/](http://incubator.apache.org/blur/)  |
-| . | wiki |  [http://wiki.apache.org/blur/FrontPage](http://wiki.apache.org/blur/FrontPage)  |
-| Mailing list | dev |  `blur-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `blur-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `blur-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/BLUR](https://issues.apache.org/jira/browse/BLUR)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-blur.git](https://gitbox.apache.org/repos/asf/incubator-blur.git)  |
-| Documentation Source | svn |  [https://svn.apache.org/repos/asf/incubator/blur/site/trunk/](https://svn.apache.org/repos/asf/incubator/blur/site/trunk/)  |
-| Mentors | twilliams | Tim Williams |
-| . | phunt | Patrick Hunt |
-| . | cutting | Doug Cutting |
-| Committers | amccurry | Aaron McCurry |
-| . | twilliams | Tim Williams |
-| . | phunt | Patrick Hunt |
-| . | cutting | Doug Cutting |
-| . | sleberkn | Scott Leberknight |
-| . | rgimmy | Ryan Gimmy |
-| . | crohr | Chris Rohr |
-| . | rkins | Rahul Challapalli |
-| . | gagz | Gagan |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. (See PODLINGNAMESEARCH-34) |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| done | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-08-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-08-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-08-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| done. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-09-02 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-07-25 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-08-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-09-02 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-07-25 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| done | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| done | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| done | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| done | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-08-01 | Check that all active committers have submitted a contributors agreement. |
-| no? | Add all active committers in the STATUS file. |
-| done. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/brooklyn-camp-server.md b/content/brooklyn-camp-server.md
new file mode 100644
index 0000000..b1b6549
--- /dev/null
+++ b/content/brooklyn-camp-server.md
@@ -0,0 +1,62 @@
+Title: camp-server Codebase Intellectual Property (IP) Clearance Status
+
+
+The IP is Java code that provides part of a server implementing the OASIS CAMP specification.
+
+
+
+- Which PMC will be responsible for the code: Incubator
+
+
+- Into which existing project/module: Apache Brooklyn
+
+
+- Officer or member managing donation: Chip Childers
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-07-04 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+ [https://github.com/brooklyncentral/camp-server/archive/9e46fe8.zip](https://github.com/brooklyncentral/camp-server/archive/9e46fe8.zip) <br></br>MD5: 7417acc5fd5713dedb4bcc1c8e74c036<br></br>SHA1: 8c44071de757ba4a5ed79fb74f8f9790a285b257
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-07-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-07-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _cloudsoft-camp.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Cloudsoft Corporation Ltd.
+
+| date | item |
+|------|------|
+| 2014-07-04 | Check that all active committers have a signed CLA on record. |
+| 2014-07-04 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-07-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-07-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- https://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/201407.mbox/%3C53B2948E.2020103%40CloudsoftCorp.com%3E
diff --git a/content/brooklyn-cli.md b/content/brooklyn-cli.md
new file mode 100644
index 0000000..e3f43a3
--- /dev/null
+++ b/content/brooklyn-cli.md
@@ -0,0 +1,89 @@
+Title: Brooklyn CLI Intellectual Property (IP) Clearance Status
+
+
+The Brooklyn CLI is tool for controlling Apache Brooklyn from the command line (as opposed to using the Web console or the REST API that are bundled into the Apache Brooklyn server process). It is currently a standalone module that the Apache Brooklyn community would like to integrate into our project.
+
+
+
+- The Apache Brooklyn PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache Brooklyn project, into the (currently empty) brooklyn-client module.
+
+
+- Richard Downer (Apache Brooklyn PMC Chair) will be managing this contribution.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+
+- Origin: [https://github.com/brooklyncentral/brooklyn-cli](https://github.com/brooklyncentral/brooklyn-cli) as at commit ID b8b39e54ecbb7c12f4828783f07bec978a76b7be
+
+- Origin download link: [https://github.com/brooklyncentral/brooklyn-cli/archive/b8b39e54ecbb7c12f4828783f07bec978a76b7be.zip](https://github.com/brooklyncentral/brooklyn-cli/archive/b8b39e54ecbb7c12f4828783f07bec978a76b7be.zip) 
+
+- SHA1: 5b5ef46c56adfff8ca86cca04694d5abc10ec447
+
+- SHA256: 0cfaac11df7075c723bfb982ed5852d790fa195dcfe67c9bbbd545f34df71770
+
+- The folder `brooklyn-cli-b8b39e54ecbb7c12f4828783f07bec978a76b7be/br/Godeps` is **excluded** from the code grant; this folder contains bundled dependencies licensed by 3rd parties using the MIT and BSD licenses. With this folder removed from the ZIP file using the command `zip -d FILENAME.zip brooklyn-cli-b8b39e54ecbb7c12f4828783f07bec978a76b7be/br/Godeps\*` , the hashes become:
+
+  - SHA1: 91fda2ca20c4b171985e1f5bb545ed8a236123dd
+
+  - SHA256: 4de28b308ad09f0e5642b4cefdd54b1c91b255fecd00184763a7d260bf8ec12d
+
+
+- With Apache headers etc.: [https://github.com/apache/brooklyn-client/pull/1](https://github.com/apache/brooklyn-client/pull/1) 
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2016-02-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2016-02-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: "br" CLI for Brooklyn
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Cloudsoft Corporation Limited (CCLA on file)
+
+- Geoff Macartney (ICLA on file)
+
+- David Lloyd (ICLA on file)
+
+- Robert Moss (ICLA on file)
+
+- Alex Heneveld (ICLA on file)
+
+- John McCabe (ICLA on file)
+
+| date | item |
+|------|------|
+| 2016-02-29 | Check that all active committers have a signed CLA on record. |
+| 2016-02-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2016-02-29 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2016-02-29 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Result of community vote held on dev@brooklyn list](http://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/201602.mbox/%3CCABQFKi35ymwtTTnZCNwAYtAhVYr6VErQE8ToZZhgncv6QK5tgQ%40mail.gmail.com%3E) 
+
+-  [IP Clearance vote on general@incubator list](http://mail-archives.apache.org/mod_mbox/incubator-general/201602.mbox/%3CCABQFKi1-VxhduAnn0BKewsDihWJP0kcBZ5KerWi%3DVXVjs-%2B5bQ%40mail.gmail.com%3E) 
diff --git a/content/brooklyn-container-service.md b/content/brooklyn-container-service.md
new file mode 100644
index 0000000..0674892
--- /dev/null
+++ b/content/brooklyn-container-service.md
@@ -0,0 +1,103 @@
+Title: Brooklyn Container Service Intellectual Property (IP) Clearance Status
+
+
+Brooklyn Container Service is a set of locations and entities for Apache Brooklyn that allow deployment of applications to container based locations. The locations provided use the jclouds Docker provider and the fabric8 Kubernetes client to give Brooklyn access to Docker Engine, Docker Swarm, Kubernetes and OpenShift. As well as these locations, entities that represent Docker containers and Kubernetes pods are included, which can be used to build applications. Blueprints for containerised applications can also be developed and deployed using the usual Brooklyn components. This is a useful addition to Apache Brooklyn and allows the project to extend its scope to include this essential part of the Cloud Native ecosystem.
+
+
+The Apache Brooklyn PMC will be responsible for the code.
+
+
+It will be integrated into the Apache Brooklyn project, into a new brooklyn-location-container module.
+
+
+The following people will be managing this contribution:
+
+
+
+- Richard Downer (Apache Brooklyn PMC Chair)
+
+- Andrew Kennedy (Apache Brooklyn PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-06-05 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+
+- Origin: [https://github.com/cloudsoft/brooklyn-container-service](https://github.com/cloudsoft/brooklyn-container-service) as at commit ID 975807b89df63833d9b53b50d508cb5d782ad7b0 and tag apache-brooklyn.
+
+- Download link: [975807b89df63833d9b53b50d508cb5d782ad7b0.zip](https://github.com/cloudsoft/brooklyn-container-service/archive/975807b89df63833d9b53b50d508cb5d782ad7b0.zip) 
+
+- SHA1: f85ec5dd5530f7d0b3d2481e6c62cd0b6fa454e3
+
+- SHA256: b6a9c5148960f0e2c6c9977a4886a4865d59cf6fb495932adde00adabfce240b
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-06-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-06-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: brooklyn-container-service
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Cloudsoft Corporation Limited (CCLA on file)
+
+- Andrew Kennedy (ICLA on file)
+
+- Aled Sage (ICLA on file)
+
+- Svetoslav Neykov (ICLA on file)
+
+- Geoff Macartney (ICLA on file)
+
+- Duncan Godwin (ICLA on file)
+
+- Graeme Miller (ICLA on file)
+
+- Duncan Grant (ICLA on file)
+
+- Alex Heneveld (ICLA on file)
+
+- Mike Zaccardo (ICLA on file)
+
+- Mark McKenna (ICLA on file)
+
+- Andrea Turli (ICLA on file)
+
+- Sam Corbett (ICLA on file)
+
+- Guglielmo Nigri (ICLA on file)
+
+- Thomas Bouron (ICLA on file)
+
+| date | item |
+|------|------|
+| 2017-06-08 | Check that all active committers have a signed CLA on record. |
+| 2017-06-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-06-07 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-06-07 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related votes held on the Apache Brooklyn dev list:
+
+
+
+-  [Vote to to determine whether the Brooklyn PMC is in favour of accepting the code contribution](http://mail-archives.apache.org/mod_mbox/brooklyn-dev/201706.mbox/%3CCAEK0Ph1-Px2ixLvtig=qRM-RVo2gdQYx7+0Zy=-fp5pge5w_oQ@mail.gmail.com%3E) 
+
+-  [IP Clearance vote on general@incubator list](http://mail-archives.apache.org/mod_mbox/incubator-general/201706.mbox/%3CCAEK0Ph1wuX4dwvxt1oEs1-E=zmujbjp_4j77N0Eh2jjuBGBJkg@mail.gmail.com%3E) 
diff --git a/content/brooklyn-ui-angular.md b/content/brooklyn-ui-angular.md
new file mode 100644
index 0000000..e02a472
--- /dev/null
+++ b/content/brooklyn-ui-angular.md
@@ -0,0 +1,74 @@
+Title: Brooklyn UI in Angular/JS Intellectual Property (IP) Clearance Status
+
+
+An updated version of the JS browser-based client UI for accessing Brooklyn has been developed outwith the ASF and the developers would like to contribute it to the Apache Brooklyn project.
+
+
+
+- The Apache Brooklyn PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache Brooklyn project, into the brooklyn-ui module, ultimately replacing it.
+
+
+- Alex Heneveld (Apache Brooklyn committer) will be managing this contribution.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 23 Jul 2018 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. **Confirmed.**  |
+
+
+- Contributed software: https://issues.apache.org/jira/browse/INCUBATOR-214
+
+- MD5 sum for donated software: 56a3a76768339ba25b89b35b20a3047f
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 23 Jul 2018 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. **Confirmed, grant via email with PDF sent from Ross Gray CEO of Cloudsoft at 17:48 on 20 Jul 2018, acknowledged by Craig Russel ASF Secretary at 02:21 on 21 Jul 2018 (times BST).**  |
+| 23 Jul 2018 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. **Confirmed, ASF headers are present as required.**  |
+
+Identify name recorded for software grant: **Brooklyn UI in Angular/JS** 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Cloudsoft Corporation Limited (CCLA on file)
+
+- Thomas Bouron (ICLA on file)
+
+- Alex Heneveld (ICLA on file)
+
+| date | item |
+|------|------|
+| 23 Jul 2018 | Check that all active committers have a signed CLA on record. **Confirmed, CCLA and ICLAs on file as noted above.**  |
+| 23 Jul 2018 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. **Confirmed, a CCLA is on file where required and active committers have been made aware.**  |
+| 23 Jul 2018 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution, and 3rd-party code downloaded and use as part of the build complies with ASF license policy (mainly MIT and BSD licenses).**  |
+| 23 Jul 2018 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance request: http://mail-archives.apache.org/mod_mbox/incubator-general/201807.mbox/%3Ca22628a2-792a-2999-a29f-b617640a6c2f%40cloudsoft.io%3E
+
+- IP Clearance result: http://mail-archives.apache.org/mod_mbox/incubator-general/201807.mbox/%3Cd741cebf-8d92-27f2-3ede-9851be49810f%40cloudsoft.io%3E
+
+- Brooklyn PMC acceptance vote: http://mail-archives.apache.org/mod_mbox/brooklyn-dev/201807.mbox/%3C5dc7ad59-795e-fa7a-af32-918848229b32%40CloudsoftCorp.com%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-214
diff --git a/content/brooklyn.md b/content/brooklyn.md
deleted file mode 100644
index 26aa9dd..0000000
--- a/content/brooklyn.md
+++ /dev/null
@@ -1,211 +0,0 @@
-Title: Brooklyn Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Brooklyn project graduated on 2015-11-18</span>
-
-
-Brooklyn is a framework for modelling, monitoring, and managing applications through autonomic blueprints.
-
-
-
-- 2015-11-18: ASF board passes our resolution to graduate.
-
-
-- 2015-09-07: Welcome Ciprian Ciubotariu as new committer and PPMC member.
-
-
-- 2015-08-08: Welcome Svetoslav Neykov as new committer and PPMC member.
-
-
-- 2015-07-30: Welcome Hadrian Zbarcea as new committer and PPMC member.
-
-
-- 2015-07-27: Apache Brooklyn 0.7.0 (incubating) released.
-
-
-- 2014-12-23: Apache Brooklyn 0.7.0-M2 (incubating) released.
-
-
-- 2014-07-04: Welcome Andrea Turli as new committer and PPMC member.
-
-
-- 2014-06-30: Welcome Samuel Corbett as new committer and PPMC member.
-
-
-- 2014-05-02: Source code available via the ASF git repos. The project uses the RTC workflow.
-
-
-- 2014-05-02: Mailing lists created and activity begins.
-
-
-- 2014-05-01: Project enters incubation.
-
-
-- Main website: [https://brooklyn.incubator.apache.org](https://brooklyn.incubator.apache.org) 
-
-
--  [How to participate](https://brooklyn.incubator.apache.org/community/) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://brooklyn.incubator.apache.org/](http://brooklyn.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `brooklyn.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `brooklyn.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/BROOKLYN/](https://issues.apache.org/jira/browse/BROOKLYN/)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-brooklyn.git](https://gitbox.apache.org/repos/asf/incubator-brooklyn.git)  |
-| . | Git |  [https://gitbox.apache.org/repos/asf/incubator-brooklyn.git](https://gitbox.apache.org/repos/asf/incubator-brooklyn-site.git)  |
-| Mentors | hogstrom | Matt Hogstrom |
-| . | akarasulu | Alex Karasulu |
-| . | ke4qqq | David Nalley |
-| . | marrs | Marcel Offermans |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | olamy | Olivier Lamy |
-| . | chipchilders | Chip Childers |
-| . | asavu | Andrei Savu |
-| . | jzb | Joe Brockmeier |
-| . | jim | Jim Jagielski |
-| Committers | aledsage | Aled Sage |
-| . | heneveld | Alex Heneveld |
-| . | andreaturli | Andrea Turli |
-| . | grkvlt | Andrew Kennedy |
-| . | cipi | Ciprian Ciubotariu |
-| . | hadrian | Hadrian Zbarcea |
-| . | richard | Richard Downer |
-| . | sjcorbett | Sam Corbett |
-| . | svet | Svetoslav Neykov |
-
-
--  [June 2014](http://wiki.apache.org/incubator/June2014) 
-
--  [July 2014](http://wiki.apache.org/incubator/July2014) 
-
--  [August 2014](http://wiki.apache.org/incubator/August2014) 
-
--  [September 2014](http://wiki.apache.org/incubator/September2014) 
-
--  [December 2014](http://wiki.apache.org/incubator/December2014) 
-
--  [January 2015](http://wiki.apache.org/incubator/January2015) 
-
--  [March 2015](http://wiki.apache.org/incubator/March2015) 
-
--  [June 2015](http://wiki.apache.org/incubator/June2015) 
-
--  [September 2015](http://wiki.apache.org/incubator/September2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-05-01, [2015-09-18](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-82)  | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2014-04-23 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2014-05-05 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-|  [2014-05-15](https://issues.apache.org/jira/browse/INFRA-7662)  | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-05-02 | Ask infrastructure to set up and archive mailing lists. |
-|  [2014-05-14](https://issues.apache.org/jira/browse/INFRA-7663)  | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-05-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-05-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-05-02 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2104-05-15 | Tell Mentors to track progress in the file 'incubator/projects/brooklyn.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-05-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-05-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-07-27 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-07-27 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-05-15 | Check that all active committers have submitted a contributors agreement. |
-| 2014-05-27 | Add all active committers in the STATUS file. |
-| 2014-06-03 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/brpc.md b/content/brpc.md
deleted file mode 100644
index fd165f9..0000000
--- a/content/brpc.md
+++ /dev/null
@@ -1,147 +0,0 @@
-Title: Apache brpc Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-brpc is an industrial-grade RPC framework for building reliable and high-performance services.
-
-
-
-- 2018-11-13 Project enters incubation.
-
-
-- brpc Website - http://brpc.incubator.apache.org
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://brpc.incubator.apache.org/](http://brpc.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `brpc.incubator.apache.org`  |
-| . | private |  `private`  `@`  `brpc.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `brpc.incubator.apache.org`  |
-| Source code | . | . |
-| . | incubator-brpc | https://github.com/apache/incubator-brpc.git |
-| Roster | Whimsy |  [brpc Roster](https://whimsy.apache.org/roster/ppmc/brpc)  |
-| Mentors |  | . |
-| . | kmcgrail | Kevin A. McGrail |
-| . | jbonofre | Jean-Baptiste Onofré |
-| Committers |  | . |
-
-
--  [brpc Board Reports](https://whimsy.apache.org/board/minutes/brpc.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-11-24 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-11-24 | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| N/A | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/zipkin.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/buildr.md b/content/buildr.md
deleted file mode 100644
index a0e48da..0000000
--- a/content/buildr.md
+++ /dev/null
@@ -1,173 +0,0 @@
-Title: Buildr Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Buildr project graduated on 2009-02-23</span>
-
-
-Buildr is a build system for Java applications written in Ruby. We wanted something that’s simple and intuitive to use, so we only need to tell it what to do, and it takes care of the rest. But also something we can easily extend for those one-off tasks, with a language that’s a joy to use. And of course, we wanted it to be fast, reliable and have outstanding dependency management.
-
-
-
-- 2008-10-16 Buildr 1.3.3 release.
-
-- 2008-08-20 Antoine Contal has been voted in the Buildr PPMC.
-
-- 2008-08-20 Antoine Contal has been accepted as a new committer.
-
-- 2008-07-24 Buildr 1.3.2 release.
-
-- 2008-05-28 Buildr 1.3.1 release.
-
-- 2008-04-30 Buildr 1.3 release.
-
-- 2008-04-25 Victor Hugo Borja has been accepted in the Buildr PPMC.
-
-- 2008-01-30 Victor Hugo Borja is a new committer.
-
-- 2007-11-01 Buildr enters the Incubator.
-
-
-- Web site: [http://incubator.apache.org/buildr](http://incubator.apache.org/buildr) 
-
-
-- User mailing-list: [buildr-user@incubator.apache.org](mailto:buildr-user-subscribe@incubator.apache.org) 
-
-
-- Dev mailing-list: [buildr-dev@incubator.apache.org](mailto:buildr-dev-subscribe@incubator.apache.org) 
-
-
-- Jira: [https://issues.apache.org/jira/browse/BUILDR](https://issues.apache.org/jira/browse/BUILDR) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/buildr/](http://incubator.apache.org/buildr/)  |
-| Mailing List | dev |  [buildr-dev@incubator.apache.org](mailto:buildr-dev-subscribe@incubator.apache.org)  |
-| . | commits |  [buildr-commits@incubator.apache.org](mailto:buildr-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | Jira |  [https://issues.apache.org/jira/browse/BUILDR](https://issues.apache.org/jira/browse/BUILDR)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/incubator/buildr/](http://svn.apache.org/repos/asf/incubator/buildr/)  |
-| Mentors | jim | Jim Jagielski |
-| . | yoavs | Yoav Shapira |
-| . | mriou | Matthieu Riou |
-| Committers | assaf | Assaf Arkin |
-| . | boisvert | Alex Boisvert |
-| . | lacton | Antoine Contal |
-| . | mriou | Matthieu Riou |
-| . | vborja | Victor Hugo Borja |
-
-
--  [November 2007](http://wiki.apache.org/incubator/November2007) 
-
--  [December 2007](http://wiki.apache.org/incubator/December2007) 
-
--  [January 2008](http://wiki.apache.org/incubator/January2008) 
-
--  [April 2008](http://wiki.apache.org/incubator/April2008) 
-
--  [August 2008](http://wiki.apache.org/incubator/August2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007-11-15 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2007-11-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2007-11-13 | Subscribe all Mentors on the pmc and general lists. |
-| 2007-11-13 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2007-11-13 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2007-11-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-10-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-04 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-11-01 | Check that all active committers have submitted a contributors agreement. |
-| 2007-11-01 | Add all active committers in the STATUS file. |
-| 2007-11-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-11-02 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-11-01 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-11-01 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2007-11-13 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2008-03-22 | Clarify policy regarding Gem dependencies and the Ruby license. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to a new PMC, has the board voted to accept it? Yes.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-- Yes. The resolution to make Buildr a TLP has been approved in Dec. 2008.
diff --git a/content/bushel.md b/content/bushel.md
new file mode 100644
index 0000000..264a7d4
--- /dev/null
+++ b/content/bushel.md
@@ -0,0 +1,63 @@
+Title: Bushel Codebase Intellectual Property (IP) Clearance Status
+
+
+Bushel provides utility classes for Apache Ivy that allow a developer to use a directory of OSGi bundles as a dependency repository.
+
+
+
+- Which PMC will be responsible for the code: Apache Ant
+
+
+- Into which existing project/module: Apache Ivy.
+
+
+- Officer or member managing donation: Stefan Bodewig
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-11-05 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: MD5 ff51743b12c0fc3be7223b96c4cff672 (available at [JIRA Ticket IVY-1241](https://issues.apache.org/jira/browse/IVY-1241) ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-11-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-11-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Bushel
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Alex Radeski_ 
+
+-  _Jérôme Benois_ 
+
+-  _Nicolas Lalevee_ 
+
+| date | item |
+|------|------|
+| 2010-11-05 | Check that all active committers have a signed CLA on record. |
+| n/a | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| n/a | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-11-05 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: The VOTE thread accepting the donation can be found in the mailng list [archives](http://mail-archives.apache.org/mod_mbox/ant-dev/201011.mbox/%3C877hgresm4.fsf@v35516.1blu.de%3E) .
+
diff --git a/content/calcite-avatica-go.md b/content/calcite-avatica-go.md
new file mode 100644
index 0000000..7c0d455
--- /dev/null
+++ b/content/calcite-avatica-go.md
@@ -0,0 +1,77 @@
+Title: Calcite-Avatica-Go Codebase Intellectual Property (IP) Clearance Status
+
+
+Calcite-Avatica-Go is a client for Apache Phoenix and Apache Calcite Avatica written in the Go programming language and contributed by Boostport. It describes itself as "Apache Phoenix/Avatica SQL Driver". It is self-contained module, and a medium-sized code base (30 files, 8,000 lines of code). Because it is a different language from current Avatica (Go versus Java) it will probably become a new module in a new git repo and separate releases. It remains to be decided whether we keep the Phoenix-specific customizations in this module or apply those directly in Phoenix.
+
+
+
+- PMC that will be responsible for the code: Apache Calcite PMC
+
+- Into which existing project/module: Apache Calcite Avatica
+
+- Officer or member managing donation: Julian Hyde (jhyde)
+
+- Tracking case: [ [CALCITE-1240](https://issues.apache.org/jira/browse/CALCITE-1240) ]
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-07-27 |  [https://github.com/Boostport/avatica/commit/77207918cf826662cb4ea40cfffbfb5cb64bf4a0](https://github.com/Boostport/avatica/commit/77207918cf826662cb4ea40cfffbfb5cb64bf4a0) or [http://people.apache.org/~jhyde/boostport-avatica.patch](http://people.apache.org/~jhyde/boostport-avatica.patch) . |
+
+ `$ sha1sum boostport-avatica.patch 
+ba7441f20261409a2d5b38a88e5d8d6b0d826b86  boostport-avatica.patch
+$ sha1sum --version 
+sha1sum (GNU coreutils) 8.21
+$ md5sum boostport-avatica.patch
+6f66ce5756b67ecddb35bf1030c49a0b  boostport-avatica.patch
+$ md5sum --version 
+md5sum (GNU coreutils) 8.21` 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-07-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br><br></br>Corporate CLA for "Boostport Pty Ltd" is already on file in cclas.txt. |
+| 2017-07-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright<br></br><br></br>There are no copyright notices or other file headers in the code, therefore nothing to change. Code already includes an Apache License. |
+
+Identify name recorded for software grant: calcite-avatica-go
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Francis Chuang (francischuang)
+
+- Boostport Pty Ltd
+
+| date | item |
+|------|------|
+| 2017-07-27 | Check that all active committers have a signed CLA on record. |
+| 2017-07-27 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-07-27 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br><br></br>Not applicable. The code is 100% Apache Licensed. |
+| 2017-07-27 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br><br></br>The project has one category B dependency (go-cleanhttp is MPL), and we intend to address this before release; others are category A. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [[DISCUSS] Accept Boostport's Avatica Go client into Calcite/Avatica](http://mail-archives.apache.org/mod_mbox/calcite-dev/201707.mbox/%3CCAPSgeESfUwzKHudgH%3D1Lunvn4WJk29iR3mpxfay5KshQESoe0A%40mail.gmail.com%3E) thread on dev@calcite
+
+-  [Vote thread on general@incubator started on 2017-07-28](https://s.apache.org/calcite-avatica-go-clearance-vote) 
+
+-  [Vote on general@incubator passed on 2017-08-03](https://s.apache.org/calcite-avatica-go-clearance-result) 
+
+-  [Vote on Calcite PMC passed on 2017-08-07](https://s.apache.org/calcite-avatica-go-pmc-result) 
diff --git a/content/calcite.md b/content/calcite.md
deleted file mode 100644
index 06df6c8..0000000
--- a/content/calcite.md
+++ /dev/null
@@ -1,184 +0,0 @@
-Title: Calcite Incubation Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-Calcite graduated from the Apache Incubator in October, 2015 and is now a top level project (TLP) at Apache. For the latest information about Calcite please visit [http://calcite.apache.org/](http://calcite.apache.org/) 
-
-
- **THIS WEBSITE IS NO LONGER MAINTAINED!** 
-
-
-<span class="graduated">The Calcite project graduated in 2015-10</span>
-
-
-Calcite is a highly customizable engine for parsing and planning queries on data in a wide variety of formats. It allows database-like access, and in particular a SQL interface and advanced query optimization, for data not residing in a traditional database.
-
-
-
-- 2014-05-19 Project enters incubation.
-
-- 2014-09-04 Optiq 0.9.0-incubating released.
-
-- 2014-09-30 Optiq renamed to Calcite.
-
-- 2014-10-02 Calcite 0.9.1-incubating released.
-
-- 2014-11-05 Calcite 0.9.2-incubating released.
-
-- 2015-01-31 Calcite 1.0.0-incubating released.
-
-- 2015-03-13 Calcite 1.1.0-incubating released.
-
-- 2015-04-07 Calcite 1.2.0-incubating released.
-
-- 2015-05-30 Calcite 1.3.0-incubating released.
-
-- 2015-09-02 Calcite 1.4.0-incubating released.
-
-- 2015-10-22 Graduated.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website, Mailing lists, Bug tracking, Source code)
-
-
-- link to the project status file (Committers, non-incubation action items, project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [Calcite project site](http://calcite.apache.org)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `calcite.apache.org`  |
-| . | private |  `private`  `@`  `calcite.apache.org`  |
-| . | commits |  `commits`  `@`  `calcite.apache.org`  |
-| Bug tracking | . |  [Jira: CALCITE](https://issues.apache.org/jira/browse/CALCITE)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/calcite.git](https://gitbox.apache.org/repos/asf/calcite.git) <br></br>(mirrored at [https://github.com/apache/calcite](https://github.com/apache/calcite) ), [https://gitbox.apache.org/repos/asf/incubator-calcite-csv.git](https://gitbox.apache.org/repos/asf/incubator-calcite-csv.git) , [https://gitbox.apache.org/repos/asf/incubator-calcite-linq4j.git](https://gitbox.apache.org/repos/asf/incubator-calcite-linq4j.git) . |
-| Champion | hashutosh | Ashutosh Chauhan |
-| Mentors | gates | Alan Gates |
-| . | tdunning | Ted Dunning |
-| . | stevenn | Steven Noels |
-| Committers | jhyde | Julian Hyde |
-| . | jacques | Jacques Nadeau |
-| . | jamestaylor | James R. Taylor |
-| . | cwensel | Chris Wensel |
-| . | vladimirsitnikov | Vladimir Sitnikov |
-| . | amansinha | Aman Sinha |
-| . | jcamacho | Jesús Camacho Rodríguez |
-| . | jni | Jinfeng Ni |
-| . | jpullokk | John Pullokkaran |
-| . | ndimiduk | Nick Dimiduk |
-
-
--  [July](https://wiki.apache.org/incubator/July2014) , [August](https://wiki.apache.org/incubator/August2014) , [September](https://wiki.apache.org/incubator/September2014) , [October](https://wiki.apache.org/incubator/October2014) 2014; [January](https://wiki.apache.org/incubator/January2015) , [April](https://wiki.apache.org/incubator/April2015) , [September](https://wiki.apache.org/incubator/September2015) 2015
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  [2014-06-19](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-51) , [2014-09-26](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-56)  | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2014-04-30 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-|  [2014-06-24](https://issues.apache.org/jira/browse/INFRA-7776)  | Ask infrastructure to create source repository modules and grant the committers karma. |
-|  [2014-07-09](https://issues.apache.org/jira/browse/INFRA-7981)  | Ask infrastructure to set up and archive mailing lists. |
-|  [2014-06-16](https://issues.apache.org/jira/browse/INFRA-7904)  | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-|  [2014-08-03](https://issues.apache.org/jira/browse/INFRA-8133)  | Ask infrastructure to set up wiki (Confluence, Moin). |
-|  [2014-07-04](https://issues.apache.org/jira/browse/INFRA-7986)  | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-09-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-09-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-09-01 | Tell Mentors to track progress in the file 'incubator/projects/calcite.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-09-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-09-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-09-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-09-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-09-01 | Check that all active committers have submitted a contributors agreement. |
-| 2015-09-01 | Add all active committers in the STATUS file. |
-| 2015-09-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/carbondata.md b/content/carbondata.md
deleted file mode 100644
index bf0b29f..0000000
--- a/content/carbondata.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: CarbonData Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
- **THIS WEBSITE IS NOT LONGER MAINTAINED!** 
-
-
-<span class="graduated">The CarbonData project graduated on 2017-04-19.</span>
-
-
-Apache CarbonData is a new Apache Hadoop native file format for faster interactive query using advanced columnar storage, index, compression and encoding techniques to improve computing efficiency, in turn it will help speedup queries an order of magnitude faster over PetaBytes of data.
-
-
-
-- 2016-06-02 Project enters incubation.
-
-- 2016-06-05 JIRA, mailing liss, git created.
-
-- 2016-07-16 Add two new committers: Ravindra, Venkata Ramana.
-
-- 2016-08-27 First Apache CarbonData 0.1.0-incubating released.
-
-- 2016-10-10 Apache CarbonData 0.1.1-incubating released.
-
-- 2016-10-24 Add one new committer: Kumar Vishal.
-
-- 2016-11-20 Apache CarbonData 0.2.0-incubating released.
-
-- 2017-01-29 Apache CarbonData 1.0.0-incubating released.
-
-- 2017-04-19 Apache CarbonData graduation resolution enacted by the ASF Board.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://carbondata.incubator.apache.org](http://carbondata.incubator.apache.org)  |
-| Wiki | wiki |  [https://cwiki.apache.org/confluence/display/CARBONDATA](https://cwiki.apache.org/confluence/display/CARBONDATA)  |
-| Mailing list | dev |  `dev`  `@`  `carbondata.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `carbondata.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `carbondata.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/CARBONDATA](https://issues.apache.org/jira/browse/CARBONDATA)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-carbondata.git](https://gitbox.apache.org/repos/asf?p=incubator-carbondata.git)  |
-| Champion | jbonofre | Jean-Baptiste Onofré |
-| Mentor | hsaputra | Henry Saputra |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | umamahesh | Uma Maheswara Rao G |
-| PPMC/Committers | chenliang613 | Liang Chen |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | hsaputra | Henry Saputra |
-| . | umamahesh | Uma Maheswara Rao G |
-| . | jihongma | Jenny MA |
-| . | jackylk | Jacky Likun |
-| . | vimaldas | Vimal Das Kammath |
-| . | jarray888 | Jarray Qiuheng |
-| . | ravipesala | Ravindra Pesala |
-| . | gvramana | Venkata Ramana G |
-| . | kumarvishal09 | Kumar Vishal |
-| . | hexiaoqiao | Xiaoqiao He |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-06-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2016-06-02 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2016-06-02 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-06-04 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-06-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-06-05 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-06-06 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-06-04 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2016-06-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-06-06 | Give all Mentors access to the incubator git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-06-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-06-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-08-25 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-08-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-06-06 | Check that all active committers have submitted a contributors agreement. |
-| 2016-06-06 | Add all active committers in the STATUS file. |
-| 2016-06-06 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/cassandra-dtest.md b/content/cassandra-dtest.md
new file mode 100644
index 0000000..13b1f93
--- /dev/null
+++ b/content/cassandra-dtest.md
@@ -0,0 +1,62 @@
+Title: Cassandra dtest Codebase Intellectual Property (IP) Clearance Status
+
+
+The dtest project is a suite of distributed tests for Apache Cassandra written in python
+
+
+
+- The Apache Cassandra PMC will be responsible for the code
+
+
+- This contribution will be placed in a stand-alone module under the name cassandra-dtest
+
+
+- Officer or member managing donation: Jake Ferrell
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-06-04 |  [https://github.com/riptano/cassandra-dtest](https://github.com/riptano/cassandra-dtest) 6f7caba9c59daa949e67efc28f75e7de4c5b9fa7 |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-06-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-06-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2017-06-04 | Check that all active committers have a signed CLA on record. |
+| 2017-06-04 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-06-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-06-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: https://lists.apache.org/thread.html/d9e694ba8eaac8e8c70cbfd3f6ee249d43f8c67279882ffc65e56cac@%3Cdev.cassandra.apache.org%3E
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/cassandra.md b/content/cassandra.md
deleted file mode 100644
index 54d97e4..0000000
--- a/content/cassandra.md
+++ /dev/null
@@ -1,169 +0,0 @@
-Title: Cassandra Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project's status in the incubator. For more general project status, please see the project website.
-
-
-<span class="graduated">The Cassandra project graduated on 2010-02-17</span>
-
-
-The Cassandra Project is a massively scalable second generation distributed database.
-
-
-
-- 2009-12-31 0.5.0-rc1 released.
-
-- 2009-12-16 Jaakko Laine added as a new committer.
-
-- 2009-12-16 Gary Dusbabek added as a new committer.
-
-- 2009-12-09 0.5.0-beta2 released.
-
-- 2009-11-20 0.5.0-beta1 released.
-
-- 2009-11-19 Johan Oskarsson added as a new committer.
-
-- 2009-11-09 0.4.2 released.
-
-- 2009-10-16 0.4.1 released.
-
-- 2009-10-05 Chris Goffinet added as a new committer.
-
-- 2009-09-26 0.4.0 released.
-
-- 2009-09-16 0.4.0-rc2 released.
-
-- 2009-08-17 0.4.0-beta1 released.
-
-- 2009-07-20 0.3.0 released.
-
-- 2009-06-29 Jun Rao added as a new committer.
-
-- 2009-06-29 Eric Evans added as a new committer.
-
-- 2009-03-26 Jonathan Ellis added as a new committer.
-
-- 2009-01-02 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/cassandra/](http://incubator.apache.org/cassandra/)  |
-| Wiki | www |  [http://wiki.apache.org/cassandra](http://wiki.apache.org/cassandra)  |
-| Mailing list | devel |  `cassandra-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | user |  `cassandra-user`  `@`  `incubator.apache.org`  |
-| Mailing list | commits |  `cassandra-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/CASSANDRA](http://issues.apache.org/jira/browse/CASSANDRA)  |
-| Source code | SVN | incubator/cassandra |
-| Mentor | antelder | Ant Elder |
-| Mentor | BrianM | Brian McCallister |
-| Mentor | mriou | Matthieu Riou |
-| Committer/PMC | alakshman | Avinash Lakshman |
-| Committer/PMC | pmalik | Prashant Malik |
-| Committer/PMC | jbellis | Jonathan Ellis |
-| Committer/PMC | eevans | Eric Evans |
-| Committer/PMC | junrao | Jun Rao |
-| Committer/PMC | goffinet | Chris Goffinet |
-| Committer | kannan | Kannan Muthukkaruppan |
-| Committer | jhuang | Jiansheng Huang |
-| Committer |  | Dan Dumitriu |
-| Committer | johan | Johan Oskarsson |
-| Committer | gdusbabek | Gary Dusbabek |
-| Committer | jaakko | Jaakko Laine |
-
-
--  [March 2009](http://wiki.apache.org/incubator/April2009#Cassandra) 
-
--  [June 2009](http://wiki.apache.org/incubator/June2009#Cassandra) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009#Cassandra) 
-
--  [December 2009](http://wiki.apache.org/incubator/December2009#Cassandra) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-01-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2009-01-02 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2009-01-02 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2009-01-02 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-01-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-01-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-01-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2009-01-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-01-02 | Check that all active committers have submitted a contributors agreement. |
-| 2009-01-02 | Add all active committers in the STATUS file. |
-| 2009-01-02 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-01-02 | Ask infrastructure to create source repository modules and grant the committers karma. (JIRA: INFRA-1840) |
-| 2009-01-02 | Ask infrastructure to set up and archive Mailing lists. (JIRA: INFRA-1841) |
-| 2009-01-02 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). (JIRA: INFRA-1842) |
-| 2009-01-02 | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/cayenne.md b/content/cayenne.md
deleted file mode 100644
index 34f7ea9..0000000
--- a/content/cayenne.md
+++ /dev/null
@@ -1,164 +0,0 @@
-Title: Cayenne Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Cayenne project graduated on 2006-12-20</span>
-
-
-Cayenne is an open source component-oriented persistence framework licensed under the Apache License, providing object-relational mapping (ORM) and remoting services. With a wealth of unique and powerful features, Cayenne can address a wide range of persistence needs. Cayenne seamlessly binds one or more database schemas directly to Java objects, managing atomic commit and rollbacks, SQL generation, joins, sequences, and more. With Cayenne's Remote Object Persistence, those Java objects can even be persisted out to clients via Web Services. Or, with native XML serialization, objects can be even further persisted to non-Java clients - such as an Ajax-capable browser. In addition to this existing functionality, Cayenne is currently building a JPA-compatible persistence provider (JSR-220). In 2001, Cayenne was started as an open source collaborative environment, modeled after ASF. Thus, proposing Cayenne as an ASF project is the logical next step to further expand the community and increase participation.
-
-
-
-- 2006-03-06: [DB PMC sponsors Cayenne incubation](http://mail-archives.apache.org/mod_mbox/incubator-general/200603.mbox/%3c224f32340603060804wc46a5acn3d898ae03c2dce7c@mail.gmail.com%3e) 
-
-- 2006-10-07: [Version 2.0.1 released](http://mail-archives.apache.org/mod_mbox/incubator-cayenne-dev/200610.mbox/%3cF97DE912-AF6B-442F-8028-AEF07093A3BE@objectstyle.org%3e) 
-
-- 2006-11-05: [Added new committer: Malcom Edgar](http://objectstyle.org/cayenne/lists/cayenne-devel/2006/11/0009.html) 
-
-- 2006-12-5: [Incubator graduation vote passes.](http://mail-archives.apache.org/mod_mbox/incubator-general/200612.mbox/%3c3F81E767-B20F-471A-8428-58496DADF941@objectstyle.org%3e) 
-
-- 2006-12-20: Board passes proposal to make Cayenne a top level project.
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/cayenne/](http://incubator.apache.org/cayenne/)  |
-| Cayenne WIKI | wiki |  [http://cwiki.apache.org/CAY/](http://cwiki.apache.org/CAY/) <br></br> |
-| Mailing List | dev | cayenne-dev@incubator.apache.org |
-| commits | SCM | cayenne-commits@incubator.apache.org |
-| Project Management Committe | PMC | cayenne-private@incubator.apache.org |
-| User Mailing List | user | cayenne-user@incubator.apache.org |
-| Bug tracking | JIRA<br></br> |  [JIRA at Apache](http://issues.apache.org/cayenne/) <br></br> |
-| Source code | svn<br></br> | https://svn.apache.org/repos/asf/incubator/cayenne/ |
-| Mentor | <br></br> | Jean T. Anderson<br></br> |
-| Mentor | <br></br> | Brian McCallister<br></br> |
-| Mentor | <br></br> | Bill Dudney<br></br> |
-| Mentor | <br></br> | Jim Jagielski (Retired: 2006-10-20)<br></br> |
-| Committers<br></br> | aadamchik | Andrus Adamchik (PPMC May 2006)<br></br> |
-| <br></br> | cdaniluk | Cris Daniluk<br></br> |
-| <br></br> | bdudney | Bill Dudney (PPMC Mar 2006)<br></br> |
-| <br></br> | medgar | Malcolm Edgar<br></br> |
-| <br></br> | mgentry | Michael Gentry (PPMC Nov 2006)<br></br> |
-| <br></br> | torehalset | Tore Halset (PPMC Oct 2006)<br></br> |
-| <br></br> | mkienenb | Mike Kienenberger (PPMC May 2006)<br></br> |
-| <br></br> | kmenard | Kevin Menard<br></br> |
-
-
--  [March 2006](http://wiki.apache.org/incubator/March2006) 
-
--  [April 2006](http://wiki.apache.org/incubator/April2006) 
-
--  [May 2006](http://wiki.apache.org/incubator/May2006) 
-
--  [June 2006](http://wiki.apache.org/incubator/June2006) 
-
--  [September 2006](http://wiki.apache.org/incubator/September2006) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|-------|-------|
-| Done - 2006-03-13 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| Done 2006-02-25 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| Done 2006-03-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| Done - 2006-02-28 | Subscribe all Mentors on the pmc and general lists. |
-| Done - 2006-03-13 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| Done - 2006-04-24 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| Done - 2006-09-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| Done - 2006-04-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| Done 2006-10-05 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| Done 2006-10-05 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| Done 2006-04-14 | Check that all active committers have submitted a contributors agreement. |
-| Done 2006-05-08 | Add all active committers in the STATUS file. |
-| Done 2006-04-19 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| Done 2006-04-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| Done 2006-03-16 | Ask infrastructure to set up and archive Mailing lists. |
-| Done 2006-04-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| Done 2006-07-22 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **YES.** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **YES. All eight committers are independent of each other -- the Cayenne project originally began as an open source project before coming into the Incubator, so the committers have been independent from the beginning.** 
-
-- Are project decisions being made in public by the committers? **YES.** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **YES.** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? **N/A** 
-
-- If graduating to a new PMC, has the board voted to accept it? **2006-12-20** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? ** [2006-12-05](http://mail-archives.apache.org/mod_mbox/incubator-general/200612.mbox/%3c3F81E767-B20F-471A-8428-58496DADF941@objectstyle.org%3e) ** 
diff --git a/content/celix-device-access.md b/content/celix-device-access.md
new file mode 100644
index 0000000..596fca3
--- /dev/null
+++ b/content/celix-device-access.md
@@ -0,0 +1,62 @@
+Title: Device Access Codebase Intellectual Property (IP) Clearance Status
+
+
+The Celix Device Access donation contains an implementation of the OSGi Device Access Specification adapted for use in Apache Celix.
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: Celix
+
+
+- Officer or member managing donation: Alexander Broekhuis
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2012-01-31 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: 1aafd9820789832b7f572f2d6aa928ed (available as attachement device_access.zip on https://issues.apache.org/jira/browse/CELIX-29).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2012-02-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2012-02-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Source code to Device Access implementation attached to CELIX-29.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2012-04-01 | Check that all active committers have a signed CLA on record. |
+| 2012-04-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2012-04-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2012-04-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in the mailing list [archives](http://incubator.markmail.org/thread/xq6yqpg2g4d74pdx) ._ 
diff --git a/content/celix-http-admin.md b/content/celix-http-admin.md
new file mode 100644
index 0000000..13a3ae2
--- /dev/null
+++ b/content/celix-http-admin.md
@@ -0,0 +1,70 @@
+Title: Celix HTTP admin Intellectual Property (IP) Clearance Status
+
+
+The incoming codebase contains an HTTP admin implementation for Celix. This HTTP admin follows the OSGi spec and can be used to publish resources on a specified HTTP endpoint. The HTTP admin supports the use of websockets as well.
+
+
+
+- Which PMC will be responsible for the code: The Celix PMC
+
+
+- Into which existing project/module: Apache Celix
+
+
+- Officer or member managing donation: Roy Lenferink
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-07-10 | Source codebase is from [GitHub commit](https://github.com/apache/celix/pull/33/commits/1c8de37d583b250a31f8cb636641fd963361fe7e)  |
+
+Git commit SHA for donated software: 1c8de37d583b250a31f8cb636641fd963361fe7e
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-07-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-07-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: thales-celix-http-admin-service.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Thales Nederland B.V. _(SGA on file)_ 
+
+- Daan Fisher _(ICLA on file)_ 
+
+| date | item |
+|------|------|
+| 2019-07-10 | Check that all active committers have a signed CLA on record. |
+| 2019-07-10 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-07-10 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-07-10 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [dev@celix VOTE thread](https://lists.apache.org/thread.html/8370f83e9eb8799daaef7f95402f83b2e8e7d8c25ddb1c2ad72c9865@%3Cdev.celix.apache.org%3E) 
+
+-  [dev@celix RESULT thread](https://lists.apache.org/thread.html/b14b2c4221d40d0b610de738f6682b24de0e3d179ac13ad0f1b5df71@%3Cdev.celix.apache.org%3E) 
+
+-  [general@incubator VOTE thread](https://lists.apache.org/thread.html/6c918e64f8b5ec1e1843da77935d5374d76f48f73171a202f281bf24@%3Cgeneral.incubator.apache.org%3E) 
+
+-  [general@incubator RESULT thread](https://lists.apache.org/thread.html/c0c8abef5eda7462147ebcf0fa5cbd10ec06c3246065674e995da062@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/celix-publish-subscribe.md b/content/celix-publish-subscribe.md
new file mode 100644
index 0000000..23c2c64
--- /dev/null
+++ b/content/celix-publish-subscribe.md
@@ -0,0 +1,67 @@
+Title: Celix Publish Subscribe Codebase Intellectual Property (IP) Clearance Status
+
+
+A distributed service oriented implementation of the publish subscribe pattern. The design depends on 3 modules. A module for discovery, another module for serialization and transport and lastly a topology manager module which control the other modules. Multiple implementation can of the modules can be used to offer different technologies (e.g discovery using etcd or mdns). This donation contains: A PubSub Topology Manager implementation, A PubSub discovery implementation using etcd, A PubSub transport/serialization implementation using UDP multicast / JSON and an alternative PubSub transport/serialization implementation using ZeroMq / JSON.
+
+
+
+- Which PMC will be responsible for the code
+
+
+- Into which existing project/module
+
+
+- Officer or member managing donation:
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-01-27 | https://issues.apache.org/jira/browse/CELIX-389 SHA1 sum 7a28119a6805cd82289eb41674628ea502fdccac |
+
+MD5 or SHA1 sum for donated software: (Note versioned software used to calculate sum in parentheses).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-01-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-01-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+ _Identify name recorded for software grant: Celix publish-subscribe_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2017-01-27 | Check that all active committers have a signed CLA on record. |
+| 2017-01-27 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-01-27 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-01-27 See [1] | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.A part of the donation has LGPL |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+[1]: A part of the donation depends on a library using LGPL. This part is optional and not required to use Apache Celix or use the service oriented publish subscribe implementation. This is discussed in issue https://issues.apache.org/jira/browse/LEGAL-286.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote Thread](http://mail-archives.apache.org/mod_mbox/celix-dev/201701.mbox/%3CCAPhv5g-Nxbpk7vKgASRbRvmu9SRmvY8g-bvaT1hm5j58z7%2B%2Bew%40mail.gmail.com%3E) 
+
+-  [Vote Result](http://mail-archives.apache.org/mod_mbox/celix-dev/201701.mbox/%3CCAPhv5g_toA%2Bqthos%3DGHgoRS47cKY%3DY2TxCTiEOMHzcLxK_sMBg%40mail.gmail.com%3E) 
diff --git a/content/celix-pubsub-admin-tcp.md b/content/celix-pubsub-admin-tcp.md
new file mode 100644
index 0000000..f07bbfb
--- /dev/null
+++ b/content/celix-pubsub-admin-tcp.md
@@ -0,0 +1,70 @@
+Title: Celix TCP pubsub admin Intellectual Property (IP) Clearance Status
+
+
+The incoming codebase contains a TCP pubsub admin implementation for Celix. The TCP pubsub admin is an additional pubsub admin implementation next to the existing ZeroMQ and UDP MC pubsub admins.
+
+
+
+- Which PMC will be responsible for the code: The Celix PMC
+
+
+- Into which existing project/module: Apache Celix
+
+
+- Officer or member managing donation: Roy Lenferink
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-07-22 | Source codebase is from [GitHub commit](https://github.com/apache/celix/pull/36/commits/58f77a3e1419cba2108726066277ccd5d4af39fe)  |
+
+Git commit SHA for donated software: 58f77a3e1419cba2108726066277ccd5d4af39fe
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-07-24 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-07-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: thales-nederland-celix-tcp-pubsub-admin.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Thales Nederland B.V. _(SGA on file)_ 
+
+- Roy Bulter _(ICLA on file)_ 
+
+| date | item |
+|------|------|
+| 2019-07-22 | Check that all active committers have a signed CLA on record. |
+| 2019-07-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-07-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-07-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [dev@celix VOTE thread](https://lists.apache.org/thread.html/406df5d02e9f54fed234f316e622d6add1e73e2e8bbcbccebdd1e20c@%3Cdev.celix.apache.org%3E) 
+
+-  [dev@celix RESULT thread](https://lists.apache.org/thread.html/0f9ba172a6eee909173b70d8552b58a9fa4928f1f067d5b1b3d134ed@%3Cdev.celix.apache.org%3E) 
+
+-  [general@incubator VOTE thread](https://lists.apache.org/thread.html/f613462951da7b2ce05ae4cca076285b98b4d2419901f9ebb642e8ac@%3Cgeneral.incubator.apache.org%3E) 
+
+-  [general@incubator RESULT thread](https://lists.apache.org/thread.html/6be7314a9b8ef33a052215fcf40365c2594b0afaa0e5b97057dabdff@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/celix-pubsub-admin-websocket.md b/content/celix-pubsub-admin-websocket.md
new file mode 100644
index 0000000..96b1653
--- /dev/null
+++ b/content/celix-pubsub-admin-websocket.md
@@ -0,0 +1,66 @@
+Title: Celix websocket pubsub admin Intellectual Property (IP) Clearance Status
+
+
+The incoming codebase contains a websocket pubsub admin implementation for Celix. The websocket pubsub admin is an additional pubsub admin implementation next to the existing ZeroMQ, TCP and UDP MC pubsub admins.
+
+
+
+- Which PMC will be responsible for the code: The Celix PMC
+
+
+- Into which existing project/module: Apache Celix
+
+
+- Officer or member managing donation: Roy Lenferink
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-08-19 | Source codebase is from [GitHub commit](https://github.com/apache/celix/pull/39/commits/de7c3a19359a9908c56801dd081630400729f288)  |
+
+Git commit SHA for donated software: de7c3a19359a9908c56801dd081630400729f288
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-08-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-08-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: thales-nederland-celix-websocket-pubsub-admin.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Thales Nederland B.V. _(SGA on file)_ 
+
+- Daan Fischer _(ICLA on file)_ 
+
+| date | item |
+|------|------|
+| 2019-08-19 | Check that all active committers have a signed CLA on record. |
+| 2019-08-19 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-08-19 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-08-19 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [dev@celix VOTE thread](https://lists.apache.org/thread.html/857163b026964da1ea89ea30f295701fd420bdd007a104d69537e1cb@%3Cdev.celix.apache.org%3E) 
+
+-  [dev@celix RESULT thread](https://lists.apache.org/thread.html/4fe6311920cc5d518b12aff4fe0ee351e58a7c50cae033708d0e8dae@%3Cdev.celix.apache.org%3E) 
diff --git a/content/celix-shared-memory-rsa.md b/content/celix-shared-memory-rsa.md
new file mode 100644
index 0000000..1217297
--- /dev/null
+++ b/content/celix-shared-memory-rsa.md
@@ -0,0 +1,62 @@
+Title: Celix Shared Memory RSA Codebase Intellectual Property (IP) Clearance Status
+
+
+The Celix Shared Memro RSA donation contains an implementation, based on shared memory, of the OSGi Remote Service Admin Specification adapted for use in Apache Celix.
+
+
+
+- Which PMC will be responsible for the code
+
+
+- Into which existing project/module: Celix
+
+
+- Officer or member managing donation: Marcel Offermans
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-12-10 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: 4e30ce1ec54b885cf77617388f9601ff (available as attachment on issue https://issues.apache.org/jira/browse/CELIX-81).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-12-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-12-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: source code attached at issue https://issues.apache.org/jira/browse/CELIX-81 and the grant is at https://svn.apache.org/repos/private/documents/grants/thales-nederland-celix-remote-services-admin-bundle.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Thales Nederland B.V.
+
+| date | item |
+|------|------|
+| 2013-12-10 | Check that all active committers have a signed CLA on record. |
+| 2013-12-10 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-12-10 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-12-10 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/celix.md b/content/celix.md
deleted file mode 100644
index c61884d..0000000
--- a/content/celix.md
+++ /dev/null
@@ -1,139 +0,0 @@
-Title: Celix Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on [the project website](http://incubator.apache.org/celix/) .
-
-
-<span class="graduated">The Celix project graduated on 2014-07-16</span>
-
-
-Celix is an OSGi like implementation in C with a distinct focus on interoperability between Java and C.
-
-
-
-- 2014-04-02 Erik Jansman accepted as committer
-
-- 2014-03-20 Björn Petri accepted as committer
-
-- 2013-01-07 Roman Shaposhnik joins as a mentor
-
-- 2012-03-20 Pepijn Noltes accepted as committer
-
-- 2012-01-07 Luciano Resende steps down as mentor
-
-- 2010-11-02 New committer: Alexander Broekhuis
-
-- 2010-11-02 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/celix/](http://incubator.apache.org/celix/)  |
-| Mailing list | dev |  `celix-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `celix-commits`  `@`  `incubator.apache.org`  |
-| Mailing list | users | While in incubation, `celix-dev`  `@`  `incubator.apache.org` will be used. |
-| Mailing list | PPMC |  `celix-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/celix](https://issues.apache.org/jira/browse/celix)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/celix/](https://svn.apache.org/repos/asf/incubator/celix/)  |
-| Mentors | marrs | Marcel Offermans |
-| . | pauls | Karl Pauls |
-| . | rvs | Roman Shaposhnik |
-| Committers | alexanderb | Alexander Broekhuis |
-| . | pnoltes | Pepijn Noltes |
-| . | bpetri | Björn Petri |
-| . | ejansman | Erik Jansman |
-
-
-- See the project page at [http://incubator.apache.org/celix/community/boardreports/boardreports.html](http://incubator.apache.org/celix/community/boardreports/boardreports.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-11-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-11-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-11-09 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-11-09 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2010-12-18 | Ask infrastructure to set up wiki (Confluence). |
-| 2011-01-05 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-11-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-01-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-01-05 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-01-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-11-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-01-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-01-05 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-01-05 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-11-18 | Check that all active committers have submitted a contributors agreement. |
-| 2010-11-22 | Add all active committers in the STATUS file. |
-| 2010-11-22 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-### Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-### Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Exit {#Exit}
-
-### Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-### Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/chemistry-cmis-php-client.md b/content/chemistry-cmis-php-client.md
new file mode 100644
index 0000000..e054a56
--- /dev/null
+++ b/content/chemistry-cmis-php-client.md
@@ -0,0 +1,69 @@
+Title: Chemistry CMIS PHP Client Codebase Intellectual Property (IP) Clearance Status
+
+
+This is a CMIS client library, written in PHP. It allows for easy access to CMIS compliant repositories from PHP, along with providing a number of examples and tests.
+
+
+
+- Which PMC will be responsible for the code: Apache Chemistry (incubating)
+
+
+- Into which existing project/module: cmis-php (new)
+
+
+- Officer or member managing donation: Nick Burch
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-06-10 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+ [http://www.richmcknight.com/uploads/cmis-php-client-programming-chemistry-submission.tgz](http://www.richmcknight.com/uploads/cmis-php-client-programming-chemistry-submission.tgz) 
+
+
+SHA1 hash of software: 90ca2b38fbdbef672c3326383b4d66814bd13d73
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-06-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-06-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: documents/cclas/alfresco-software-ltd-php-cmis-client-library.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Alfresco Software, Ltd
+
+- Richard McKnight
+
+| date | item |
+|------|------|
+| 2010-06-03 | Check that all active committers have a signed CLA on record. |
+| 2010-06-03 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-06-10 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-06-10 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Re: Offer to Contribute PHP CMIS Client Library to Apache Chemistry](http://mail-archives.apache.org/mod_mbox/incubator-chemistry-dev/201005.mbox/%3C8BDBA6D9-2946-4ABF-AC7D-96CBBDB3E023@alfresco.com%3E) 
+
+-  [[VOTE] Accept PHP CMIS Client contribution and Richard McKnight as committer](https://mail-search.apache.org/private-arch/incubator-chemistry-private/201006.mbox/%3C29805C0F-55AD-4006-8F01-35C5CDCE64B4@alfresco.com%3E) 
diff --git a/content/chemistry-cmislib.md b/content/chemistry-cmislib.md
new file mode 100644
index 0000000..43b89b5
--- /dev/null
+++ b/content/chemistry-cmislib.md
@@ -0,0 +1,64 @@
+Title: Chemistry cmislib Intellectual Property (IP) Clearance Status
+
+
+Cmislib is a CMIS client library for Python that can be used to work with CMIS-compliant repositories such as Alfresco, IBM FileNet, Nuxeo and others. CMIS is a proposed specification with backing by major ECM players including those mentioned as well as Microsoft, Oracle, and SAP.
+
+
+The codebase contributed to Apache is the version 0.2 of cmislib.
+
+
+
+- Which PMC will be responsible for the code: Apache Chemistry (incubating)
+
+
+- Into which existing project/module: cmislib (new module)
+
+
+- Officer or member managing donation: Jukka Zitting
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-02-07 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: d90ee2445b4a11923d65e2269c4505373f9914d8 (SHA1).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-02-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-02-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: documents/cclas/optaros-inc-cmis-lib.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Optaros, Inc.
+
+- Jeff Potts
+
+| date | item |
+|------|------|
+| 2010-02-07 | Check that all active committers have a signed CLA on record. |
+| 2010-02-07 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-02-07 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-02-07 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [[RESULT] [VOTE] Accept the cmislib contribution (CMIS-107)](http://mail-archives.apache.org/mod_mbox/incubator-chemistry-dev/201002.mbox/%3C510143ac1002070516pab25182i58b38576b603205f@mail.gmail.com%3E) 
diff --git a/content/chemistry-opencmis.md b/content/chemistry-opencmis.md
new file mode 100644
index 0000000..6a083d5
--- /dev/null
+++ b/content/chemistry-opencmis.md
@@ -0,0 +1,87 @@
+Title: OpenCMIS Codebase Intellectual Property (IP) Clearance Status
+
+
+The OpenCMIS codebase implements the OASIS CMIS 1.0 specification as a client for both bindings (SOAP and Atom/Pub).The codebase was contributed to the Apache Chemistry project by Florian Müller, Jens Hübel, David Caruana, Stephan Klevenz, Martin Hermes and Paul Götz.
+
+
+
+- Which PMC will be responsible for the code: Apache Chemistry (incubating)
+
+
+- Into which existing project/module: OpenCMIS (new module)
+
+
+- Officer or member managing donation: Jukka Zitting
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-02-10 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: 041ef597916101de1995114c530b70d2fb00efdc (SHA1).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-02-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-02-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant:
+
+
+
+- /documents/grants/open-text-corp-opencmis.pdf
+
+- /documents/grants/opencmis.pdf
+
+- /documents/grants/sap-ag-opencmis.pdf
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Open Text Corp.
+
+- Alfresco Software, Ltd
+
+- SAP AG
+
+- David Ward
+
+- Florian Müller
+
+- Jens Hübel
+
+- Martin Hermes
+
+- Paul Goetz
+
+- Stephan Klevenz
+
+- David Caruana
+
+| date | item |
+|------|------|
+| 2010-02-10 | Check that all active committers have a signed CLA on record. |
+| 2010-02-10 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-02-10 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-02-10 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [[RESULT] [VOTE] Accept the OpenCMIS contribution (CMIS-113)](http://mail-archives.apache.org/mod_mbox/incubator-chemistry-dev/201002.mbox/%3C510143ac1002101013o588de19fr70ce8b3e9e5a601f@mail.gmail.com%3E) 
diff --git a/content/chemistry.md b/content/chemistry.md
deleted file mode 100644
index 1a2f2bd..0000000
--- a/content/chemistry.md
+++ /dev/null
@@ -1,500 +0,0 @@
-Title: Apache Chemistry Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Chemistry project graduated on 2010-02-16</span>
-
-
-Apache Chemistry is an implementation of the OASIS CMIS specification in Java, Python and PHP.
-
-
-
-- 2011-02-16 Project graduates to [TLP](http://chemistry.apache.org/) !
-
-- 2011-01-21 Second release of the OpenCMIS Java client and server, OpenCMIS 0.2.0-incubating
-
-- 2011-01-18 CMIS.net implementation in .Net started
-
-- 2010-09-17 First release of the OpenCMIS Java client and server, OpenCMIS 0.1.0-incubating
-
-- 2010-06-08 php-cmis-lib contribution accepted, and Richard McKnight added as a new committer
-
-- 2010-02-15 OpenCMIS contribution accepted and David Ward, Florian Müller, Jens Hübel, Martin Hermes, Paul Goetz and Stephan Klevenz added as new committers (6)
-
-- 2010-02-10 Nick Burch joins the project as a new mentor
-
-- 2010-02-10 cmislib contribution accepted and Jeff Potts added as a new committer
-
-- 2009-05-15 David Caruana added as a new committer
-
-- 2009-04-30 Project enters incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/chemistry/](http://incubator.apache.org/chemistry/)  |
-| . | wiki | . |
-| Mailing list | dev | chemistry-dev@incubator.apache.org |
-| . | commits | chemistry-commits@incubator.apache.org |
-| Bug tracking | jira |  [CMIS](https://issues.apache.org/jira/browse/CMIS)  |
-| Source code | svn |  [https://svn.apache.org/repos/asf/incubator/chemistry/](https://svn.apache.org/repos/asf/incubator/chemistry/)  |
-| Mentors | gianugo | Gianugo Rabellino |
-| . | jukka | Jukka Zitting |
-| . | nick | Nick Burch |
-| Committers | bs | Bogdan Stefanescu |
-| . | dcaruana | David Caruana |
-| . | dpfister | Dominique Pfister |
-| . | fguillaume | Florent Guillaume |
-| . | gabriele | Gabriele Columbro |
-| . | paolo | Paolo Mottadelli |
-| . | sfermigier | Stéfane Fermigier |
-| . | slacoin | Stéphane Lacoin |
-| . | stan | Sun Seng David Tan |
-| . | uncled | David Nuescheler |
-| . | jpotts | Jeff Potts |
-| . | dward | David Ward |
-| . | fmui | Florian Müller |
-| . | jens | Jens Hübel |
-| . | hermesm | Martin Hermes |
-| . | pgoetz | Paul Goetz |
-| . | sklevenz | Stephan Klevenz |
-| . | richardm | Richard McKnight |
-| Extra | . | . |
-
-The Chemistry PPMC consists of all the committers and mentors listed above.
-
-
-
-
-January 2011
-
-Apache Chemistry is an effort to provide an implementation of the CMIS (Content Management Interoperability Services) specification in Java, Python, PHP, JavaScript (and possibly other languages). Chemistry entered incubation on April 30th, 2009.
-
-
-Issues to address in the move towards graduation:
-
-
-
-- First non-Java release (PHP, Python)
-
-Issues for Incubator PMC or ASF Board:
-
-
-
-- None.
-
-Community development since the last report:
-
-
-
-- We have 8 active committers working on three sub projects. No new committer has been added last quarter. There are a few regular contributors of bug reports, suggestions and patches.
-
-- Traffic on the dev list is steady.
-
-Project development since the last report:
-
-
-
-- A second release of the Java subproject (OpenCMIS 0.2) is under way. A release candidate is available.
-
-- The Java APIs have been refined and should now be stable.
-
-- Continued work on the draft browser binding (JSON protocol) in the sandbox.
-
-- The Python subproject (cmislib) is preparing for its first release since joining the project.
-
-- The PHP subproject (phpclient) increased coverage of the spec, refined some of the existing functionality and updated documentation. Next steps are to begin preparations for the first release.
-
-
-October 2010
-
-Apache Chemistry is an effort to provide an implementation of the CMIS (Content Management Interoperability Services) specification in Java, Python, PHP, JavaScript (and possibly other languages). Chemistry entered incubation on April 30th, 2009.
-
-
-Issues to address in the move towards graduation:
-
-
-
-- First non-Java release (PHP, Python)
-
-Issues for Incubator PMC or ASF Board:
-
-
-
-- None.
-
-Community development since the last report:
-
-
-
-- None.
-
-Project development since the last report:
-
-
-
-- A first release of the Java subproject (OpenCMIS 0.1) was done.
-
-- Work to refine the Java APIs continues.
-
-- Continued work on the draft browser binding (JSON protocol) in the sandbox.
-
-
-July 2010
-
-Apache Chemistry is an effort to provide an implementation of the CMIS (Content Management Interoperability Services) specification in Java, Python, PHP, JavaScript (and possibly other languages). Chemistry entered incubation on April 30th, 2009.
-
-
-Issues to address in the move towards graduation:
-
-
-
-- First Java release (an attempt has been made but there were issues).
-
-- First non-Java release
-
-Issues for Incubator PMC or ASF Board:
-
-
-
-- None.
-
-Community development since the last report:
-
-
-
-- PHP library added, with Richard McKnight as new committer.
-
-Project development since the last report:
-
-
-
-- Oasis CMIS 1.0 spec is final.
-
-- Code merge OpenCMIS / Chemistry completed, only one Java code base now.
-
-- Improvement / stabilization of the client API.
-
-- Improvement of the online documentation in the wiki.
-
-- Enhanced query integration in OpenCMIS.
-
-- First prototyping around the proposed browser binding (JSON protocol) in the sandbox.
-
-- More license documentations to make release candidate ASF compliant.
-
-- Preparations for a first release 0.1.
-
-
-April 2010
-
-Apache Chemistry is an effort to provide a Java (and possibly others, like JavaScript) implementation of the upcoming CMIS (Content Management Interoperability Services) specification. Chemistry entered incubation on April 30th, 2009.
-
-
-A list of the three most important issues to address in the move towards graduation:
-
-
-
-- First formal incubator release. Although this is planned, there are several tasks to complete (e.g. documentation) and a learning curve to climb.
-
-Any issues that the Incubator PMC or ASF Board might wish/need to be aware of:
-
-
-There are currently no issues requiring board or Incubator PMC attention.
-
-
-How has the community developed since the last report
-
-
-
-- The OpenCMIS project (originally proposed to the Incubator which also targets a Java implementation of CMIS) has joined Apache Chemistry, with the following new committers - David Ward, Florian Müller, Jens Hübel, Martin Hermes, Paul Goetz and Stephan Klevenz
-
-- Jeff Potts has contributed his Python CMIS client library and became a committer
-.
-- Nick Burch has joined as a new mentor
-.
-- Mailing list traffic has increased 2.5 times since last quarter.
-
-How has the project developed since the last report
-
-
-
-- Development continues at a steady pace, and Chemistry now targets CMIS 1.0 CD07, the version of the specification submitted to OASIS.
-
-- Command-line Shell has been contributed (from Nuxeo).
-
-- Hudson builds have been setup and stabilized.
-
-- An agreement has been been met on how to merge the Chemistry and OpenCMIS codebases. The merge will take place in a branch, until stabilized (which should take no longer than 2 weeks).
-
-- A first formal incubator release of the merged Chemistry/OpenCMIS codebases is planned shortly after the merge is complete.
-
-
-January 2010
-
-Apache Chemistry is an effort to provide a Java (and possibly others, like JavaScript) implementation of the upcoming CMIS specification. Chemistry entered incubation on April 30th, 2009.
-
-
-There are currently no issues requiring board or Incubator PMC attention.
-
-
-Community
-
-
-
-- Another project (OpenCMIS) targetting a Java implementation of CMIS, like Chemistry, has been proposed to the Incubator. Discussions between OpenCMIS and Chemistry developers have identified areas of possible collaboration but the OpenCMIS incubation status has not moved forward.
-
-- Chemistry is now being used by companies or individuals outside the initial developers.
-
-Development
-
-
-
-- Development continues at a steady pace, mostly driven by Florent Guillaume.
-
-- Chemistry now targets CMIS 1.0 CD 05 draft, soon to be 06.
-
-- Nuxeo will contribute a command-line shell for CMIS in a few days.
-
-- SOAP bindings are planned in the coming days as well.
-
-Issues before graduation
-
-
-
-- Stabilize the general interest into a sustainable development community
-
-- Set up Hudson builds.
-
-- Create an Apache release of the Chemistry codebase
-
-
-October 2009
-
-Apache Chemistry is an effort to provide a Java (and possibly others, like JavaScript) implementation of the upcoming CMIS specification. Chemistry entered incubation on April 30th, 2009.
-
-
-There are currently no issues requiring board or Incubator PMC attention.
-
-
-Community
-
-
-
-- No notable community changes.
-
-Development
-
-
-
-- Development continues at a steady pace, mostly driven by Florent Guillaume and Gabriele Columbro.
-
-- A full 0.62/0.70 CMIS AtomPub binding TCK contributed and maintained against the spec by David Caruana
-
-- The codebase is currently split to two branches, targeting different draft versions of CMIS.
-
-Infrastructure
-
-
-
-- Chemistry is planning to use repository.apache.org as a Maven deployment target
-
-Issues before graduation
-
-
-
-- Stabilize the general interest into a sustainable development community
-
-- Make sure that all licensing details conform with Apache policies
-
-- Create an Apache release of the Chemistry codebase
-
-
-July 2009
-
-Apache Chemistry is an effort to provide a Java (and possibly others, like JavaScript) implementation of the upcoming CMIS specification. Chemistry entered incubation on April 30th, 2009.
-
-
-There are currently no issues requiring board or Incubator PMC attention.
-
-
-Community
-
-
-
-- David Caruana has been voted in as committer and member of the PPMC.
-
-Software
-
-
-
-- David Caruana offered contribution of Client Test Harness
-
-Licensing and other issues
-
-
-
-- None at the moment.
-
-Issues before graduation:
-
-
-
-- Stabilize the general interest and energy into a sustainable development community
-
-- Make sure that all licensing details conform with Apache policies
-
-- Create an Apache release of the Chemistry codebase
-
-
-June 2009
-
-Apache Chemistry is an effort to provide a Java (and possibly others, like JavaScript) implementation of the upcoming CMIS specification. Chemistry entered incubation on April 30th, 2009.
-
-
-The incubation process has started well. All the project infrastructure is in place and all initial committers have their Apache accounts. We even increased the headcount of the initial team as David Caruana joined the project as a new committer.
-
-
-Development of the Chemistry codebase has moved to Apache svn and there's been a number or related discussions on the mailing list. Overall the project is still in a startup phase as people are getting oriented with the scope and structure of the project. A number of license headers were updated to match Apache policies.
-
-
-Issues before graduation:
-
-
-
-- Stabilize the general interest and energy into a sustainable development community
-
-- Make sure that all licensing details conform with Apache policies
-
-- Create an Apache release of the Chemistry codebase
-
-
-May 2009
-
-Apache Chemistry is an effort to provide a Java (and possibly others, like JavaScript) implementation of the upcoming CMIS specification. Chemistry entered incubation on April 30th, 2009.
-
-
-The Chemistry project has just entered incubation and we've been busy getting started with everything. Most of the project infrastructure is already in place, all the CLAs have been received, and the initial codebases are now in Apache svn.
-
-
-Many Chemistry developers had a chance to meet in person in the CMIS PlugFest at the end of April, and the resulting energy has been visible also on the new Chemistry mailing lists. Among the results are updates to the core Chemistry codebase, a new JavaScript-based CMIS client codebase, and a proposal to contribute a Flex/Air -based CMIS explorer.
-
-
-Issues before graduation:
-
-
-
-- Stabilize the general interest and energy into a sustainable development community
-
-- Make sure that license headers and other details conform with Apache policies
-
-- Create an Apache release of the Chemistry codebase
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-04-30 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2009-04-30 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2009-04-30 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-04-30 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-04-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2009-04-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-04-30 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-04-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-08-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-09-17 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-09-17 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-08-16 | Check that all active committers have submitted a contributors agreement. |
-| 2009-08-16 | Add all active committers in the STATUS file. |
-| 2009-08-16 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-04-30 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-04-30 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-04-30 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2009-08-16 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/chukwa.md b/content/chukwa.md
deleted file mode 100644
index f5c8c58..0000000
--- a/content/chukwa.md
+++ /dev/null
@@ -1,200 +0,0 @@
-Title: Apache Chukwa Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Chukwa project graduated on 2013-09-27</span>
-
-
-Chukwa is a log collection and analysis framework for Apache Hadoop clusters.
-
-
-
-- 2012-09-06 Added new committer Grace Huang.
-
-- 2012-09-06 Added new committer Ivy Tang.
-
-- 2012-01-20 Added new committer Ahmed Fathalla.
-
-- 2010-10-20 Added new committer Jiaqi Tan.
-
-- 2010-07-14 Project enters incubation.
-
-
--  [Chukwa website](http://incubator.apache.org/chukwa/) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/chukwa/](http://incubator.apache.org/chukwa/)  |
-| . | wiki |  [http://wiki.apache.org/chukwa/](http://wiki.apache.org/chukwa/)  |
-| Developers Mailing List | dev |  `chukwa-dev`  `@`  `incubator.apache.org`  |
-| User Mailing List | user |  `chukwa-user`  `@`  `incubator.apache.org`  |
-| Commits Mailing List | commits |  `chukwa-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [Hosted on Apache JIRA.](https://issues.apache.org/jira/browse/CHUKWA)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/chukwa/](https://svn.apache.org/repos/asf/incubator/chukwa/)  |
-| Mentors | jukka | Jukka Zitting |
-| . | antelder | Ant Elder |
-| . | adc | Alan D. Cabrera |
-| . | berndf | Bernd Fondermann |
-| Committers | jboulon | Jerome Boulon |
-| . | cdouglas | Chris Douglas |
-| . | billgraham | Bill Graham |
-| . | asrabkin | Ari Rabkin |
-| . | gkesavan | Giridharan Kesavan |
-| . | tanjiaqi | Jiaqi Tan |
-| . | eyang | Eric Yang |
-| . | afathalla | Ahmed Fathalla |
-| . | ivytang | Ivy Tang |
-| . | jiehuang | Jie Huang |
-| Extra | . | . |
-
-
--  [October 2013](http://wiki.apache.org/incubator/October2013) 
-
--  [July 2013](http://wiki.apache.org/incubator/July2013) 
-
--  [April 2013](http://wiki.apache.org/incubator/April2013) 
-
--  [January 2013](http://wiki.apache.org/incubator/January2013) 
-
--  [July 2012](http://wiki.apache.org/incubator/July2012) 
-
--  [April 2012](http://wiki.apache.org/incubator/April2012) 
-
--  [January 2012](http://wiki.apache.org/incubator/January2012) 
-
--  [October 2011](http://wiki.apache.org/incubator/October2011) 
-
--  [July 2011](http://wiki.apache.org/incubator/July2011) 
-
--  [April 2011](http://wiki.apache.org/incubator/April2011) 
-
--  [January 2011](http://wiki.apache.org/incubator/January2011) 
-
--  [November 2010](http://wiki.apache.org/incubator/November2010) 
-
--  [October 2010](http://wiki.apache.org/incubator/October2010) 
-
--  [September 2010](http://wiki.apache.org/incubator/September2010) 
-
--  [August 2010](http://wiki.apache.org/incubator/August2010) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-08-05 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-07-26 | Ask infrastructure to set up new private ML and move other mailing lists. |
-| 2010-08-05 | Migrate the project's data from Hadoop to Incubator. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-06-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-06-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-08-05 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-08-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-08-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-08-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-10-09 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-10-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-08-05 | Check that all active committers have submitted a contributors agreement. |
-| 2011-10-02 | Add all active committers in the STATUS file. |
-| 2010-08-05 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- Yes, see: http://s.apache.org/chukwa-graduation-result
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-- Yes, see: October 16 2013 board meeting summary.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/clerezza.md b/content/clerezza.md
deleted file mode 100644
index dd45765..0000000
--- a/content/clerezza.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: Clerezza Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Clerezza project graduated on 2013-02-20</span>
-
-
-Clerezza is an OSGi-based modular application and set of components (bundles) for building RESTFul Semantic Web applications and services.
-
-
-
-- 2009-11-27 Project enters incubation.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/clerezza/](http://incubator.apache.org/clerezza/)  |
-|  | wiki |  [http://cwiki.apache.org/CLEREZZA/](http://cwiki.apache.org/CLEREZZA/)  |
-| Mailing list | developer |  `clerezza-dev`  `@`  `incubator.apache.org`  |
-|  | private (PPMC) |  `clerezza-private`  `@`  `incubator.apache.org`  |
-|  | commits |  `clerezza-commits`  `@`  `incubator.apache.org`  |
-|  | user | No user mailing list at the moment |
-| Bug tracking |  |  [https://issues.apache.org/jira/browse/CLEREZZA](https://issues.apache.org/jira/browse/CLEREZZA)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/clerezza](http://svn.apache.org/repos/asf/incubator/clerezza)  |
-| Champion | bdelacretaz | Bertrand Delacretaz |
-| Mentors | rgardler | Ross Gardler |
-|  | pauls | Karl Pauls |
-|  | reinhard | Reinhard Poetz |
-| Committers |  | (All committers are currently PPMC members as well) |
-|  | reto | Reto Bachmann-Gmuer |
-|  | mir | Manuel Innerhofen |
-|  | ito | Tsuyoshi Ito |
-|  | hasan | Hasan Hasan |
-|  | mmarth | Michael Marth |
-|  | tommaso | Tommaso Teofili |
-|  | bdelacretaz | Bertrand Delacretaz |
-|  | bblfish | Henry Story |
-|  | florent | Florent André |
-|  | rwesten | Rupert Westenthaler |
-|  | dspicar | Daniel Spicar |
-
-
--  [http://wiki.apache.org/incubator/December2009](http://wiki.apache.org/incubator/December2009) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| TODO | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| TODO | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-08-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| gmcdonald | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-18-07 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-18-07 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/click.md b/content/click.md
deleted file mode 100644
index 5447e02..0000000
--- a/content/click.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: Click Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Click project graduated on 2009-11-18</span>
-
-
-Click is a modern Java EE web application framework. It takes a component and page orientated approach to web applications with its main goals being ease of use and low barrier to entry. Another important focus of the project has been to provide high quality documentation and examples to get people started as quickly as possible.
-
-
-
-- 2009-11-20: Board passes proposal to make Apache Click a top level project
-
-- 2009-09-16: New commiter Adrian Antal
-
-- 2009-07-18: Click 1.5.3 released
-
-- 2009-07-12: Official Apache Click [blog](http://blogs.apache.org/click/) available
-
-- 2009-06-28: Apache Click 2.1.0-RC1 released
-
-- 2009-05-23: Click 1.5.2 released
-
-- 2009-02-15: Apache Click 2.0.1 released
-
-- 2008-07-21: Click is accepted in the ASF incubator with the goal of becoming a Top Level Project
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/click/](http://incubator.apache.org/click/)  |
-| Click WIKI | wiki |  [http://cwiki.apache.org/confluence/display/CLICK/](http://cwiki.apache.org/confluence/display/CLICK)  |
-| Users Mailing List | user |  [click-user@incubator.apache.org](mailto:click-user@incubator.apache.org)  |
-| Developers Mailing List | dev |  [click-dev@incubator.apache.org](mailto:click-dev@incubator.apache.org)  |
-| Commits Mailing List | commits |  [click-commits@incubator.apache.org](mailto:click-commits@incubator.apache.org)  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/CLK](https://issues.apache.org/jira/browse/CLK)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/click/](http://svn.apache.org/repos/asf/incubator/click/)  |
-| Mentors | aadamchik | Andrus Adamchik |
-| . | henning | Henning Schmiedehausen |
-| . | husted | Ted Husted |
-| . | wglass | Will Glass-Husain |
-| Committers | aadamchik | Andrus Adamchik |
-| . | henning | Henning Schmiedehausen |
-| . | husted | Ted Husted |
-| . | medgar | Malcolm Edgar |
-| . | sabob | Bob Schellink |
-| . | takezoe | Naoki Takezoe |
-| . | wglass | Will Glass-Husain |
-
-
--  [October 2008](http://wiki.apache.org/incubator/October2008) 
-
--  [November 2008](http://wiki.apache.org/incubator/November2008) 
-
--  [December 2008](http://wiki.apache.org/incubator/December2008) 
-
--  [March 2009](http://wiki.apache.org/incubator/March2009) 
-
--  [June 2009](http://wiki.apache.org/incubator/June2009) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-04-04 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-07-02 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-07-31 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-11-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-07-27 | Tell Mentors to track progress in the file 'incubator/projects/click.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-07-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-01-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-01-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, have the right to combine with Apache-licensed code and redistribute. |
-| 2009-01-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-07-27 | Check that all active committers have submitted a contributors agreement. |
-| 2008-07-27 | Add all active committers in the STATUS file. |
-| 2008-07-27 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-07-27 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-07-27 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-07-27 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2009-01-19 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/climate.md b/content/climate.md
deleted file mode 100644
index 76dca1c..0000000
--- a/content/climate.md
+++ /dev/null
@@ -1,172 +0,0 @@
-Title: Open Climate Workbench Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Open Climate Workbench project graduated on 2014-02-19</span>
-
-
-The Apache Open Climate Workbench software provides analysis and evaluation of climate models, and related to the use of remote sensing data in that process.
-
-
-
-- 2013-02-15 Project enters incubation. ( [See proposal](https://wiki.apache.org/incubator/ClimateProposal) )
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://climate.incubator.apache.org/](http://climate.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/CLIMATE/Home](https://cwiki.apache.org/confluence/display/CLIMATE/Home)  |
-| Mailing list | dev |  `dev`  `@`  `climate.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `climate.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/climate](https://issues.apache.org/jira/browse/climate)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/climate/](https://svn.apache.org/repos/asf/incubator/climate/)  |
-| Mentors | cdouglas | Chris Douglas |
-| . | niq | Nick Kew |
-| . | smarru | Suresh Marru |
-| . | mattmann | Chris A. Mattmann |
-| . | pramirez | Paul Michael Ramirez |
-| Committers | . | . |
-| . | ahart | Andrew Hart |
-| . | boustani | Maziyar Boustani |
-| . | cdouglas | Christopher Douglas |
-| . | cjack | Chris Jack |
-| . | crichton | Dan Crichton |
-| . | estani | estani |
-| . | goodale | Cameron Eugene Goodale |
-| . | goodman | Alex Goodman |
-| . | huikyole | Huikyo Lee |
-| . | jasonevans | Jason Peter Evans |
-| . | jkim | Jinwon Kim |
-| . | joyce | Michael James Joyce |
-| . | lcarriere | Laura Carriere |
-| . | lfitaborrell | Lluis Fita Borrell |
-| . | luca | Luca Cinquini |
-| . | mattmann | Chris Mattmann |
-| . | niq | Nick Kew |
-| . | ploikith | Paul C. loikith |
-| . | pramirez | Paul Michael Ramirez |
-| . | pzimdars | Paul Zimdars |
-| . | ramarao | M. V. S. Rama Rao |
-| . | sanjay | J Sanjay |
-| . | skhuidiky | Shakeh Elisabeth Khudikyan |
-| . | smarru | Suresh Marru |
-| . | waliser | Duane Waliser |
-| . | witehall | Kim Whitehall |
-
-
--  [March 2013](https://wiki.apache.org/incubator/March2013) 
-
--  [April 2013](https://wiki.apache.org/incubator/April2013) 
-
--  [May 2013](https://wiki.apache.org/incubator/May2013) 
-
--  [June 2013](https://wiki.apache.org/incubator/June2013) 
-
--  [July 2013](https://wiki.apache.org/incubator/July2013) 
-
--  [August 2013](https://wiki.apache.org/incubator/August2013) 
-
--  [September 2013](https://wiki.apache.org/incubator/September2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-03-13 | Make sure that the requested project name does not already exist. [PODLINGNAMESEARCH-26](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-26)  |
-| 2013-02-24 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-02-24 | Ask infrastructure to create source repository modules and grant the committers karma.( [INFRA-5876](https://issues.apache.org/jira/browse/INFRA-5876) ) |
-| 2013-02-24 | Ask infrastructure to set up and archive mailing lists.( [INFRA-5875](https://issues.apache.org/jira/browse/INFRA-5875) ) |
-| 2013-02-24 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla).( [INFRA-5877](https://issues.apache.org/jira/browse/INFRA-5877) ) |
-| 2013-03-20 | Ask infrastructure to set up wiki (Confluence, Moin).( [INFRA-5878](https://issues.apache.org/jira/browse/INFRA-5878) ) |
-| 2013-04-25 | Migrate the project to our infrastructure.( [INFRA-5966](https://issues.apache.org/jira/browse/INFRA-5966) ) |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-04-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-07-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-07-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-07-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-07-17 | Check that all active committers have submitted a contributors agreement. |
-| 2013-10-26 | Add all active committers in the STATUS file. |
-| 2013-07-17 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-| date | item |
-|------|------|
-| 2014-02-15 | If graduating to an existing PMC, has the PMC voted to accept it? [see here](https://mail-archives.apache.org/mod_mbox/incubator-general/201402.mbox/%3CCF132580.12F53A%25chris.a.mattmann%40jpl.nasa.gov%3E)  |
-| 2014-01-15 | If graduating to a new PMC, has the board voted to accept it? [see here](https://mail-archives.apache.org/mod_mbox/climate-dev/201401.mbox/%3CCEFC089F.12A9EF%25chris.a.mattmann%40jpl.nasa.gov%3E)  |
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/cloudstack-contrail-plugin.md b/content/cloudstack-contrail-plugin.md
new file mode 100644
index 0000000..5c8aa47
--- /dev/null
+++ b/content/cloudstack-contrail-plugin.md
@@ -0,0 +1,62 @@
+Title: Plugin for CloudStack to control Contrail Codebase Intellectual Property (IP) Clearance Status
+
+
+A patch that adds a plugin to Apache CloudStack to enable control of a Contrail network environment.
+
+
+
+- Which PMC will be responsible for the code: CloudStack PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Chip Childers
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-09-24 | 1 File available at https://reviews.apache.org/r/14325/ |
+
+MD5 or SHA1 sum for donated software: E1 CA 9B 9B B0 53 32 10 43 E4 0D 93 1F B6 23 AB
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-10-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-10-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: juniper-cloudstack-contrail.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Juniper Networks, Inc_ 
+
+| date | item |
+|------|------|
+| 2013-10-04 | (N/A - This is an Software Grant Agreement) Check that all active committers have a signed CLA on record. |
+| 2013-10-04 | (N/A - This is an Software Grant Agreement) Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-10-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-10-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the [dev@cloudstack.apache.org](http://mail-archives.apache.org/mod_mbox/cloudstack-dev/201310.mbox/%3C20131001145512.GB2396@USLT-205755.sungardas.corp%3E) mailing list.
diff --git a/content/cloudstack-documentation-for-various-features.md b/content/cloudstack-documentation-for-various-features.md
new file mode 100644
index 0000000..04bd2f8
--- /dev/null
+++ b/content/cloudstack-documentation-for-various-features.md
@@ -0,0 +1,62 @@
+Title: CloudStack Documentaion for various features Codebase Intellectual Property (IP) Clearance Status
+
+
+The CloudStack documentation donation enables CloudStack users to understand and use the features
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-01-23 | 1 File available at http://people.apache.org/~jtomechak/Jessica_docs.tar |
+
+MD5 or SHA1 sum for donated software: fa92fa4ce70722de1610a33909ad069a ( _available as attachment Jessica_docs.tar on http://people.apache.org/~jtomechak/_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-01-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-25 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check that all active committers have a signed CLA on record. |
+| 2013-01-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in mailing list http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3c7A92FF96DF135843B4B608FB576BFC3E012DA3ADF55D@SJCPMAILBOX01.citrite.net%3e_ 
diff --git a/content/cloudstack-ec2stack.md b/content/cloudstack-ec2stack.md
new file mode 100644
index 0000000..b8e331b
--- /dev/null
+++ b/content/cloudstack-ec2stack.md
@@ -0,0 +1,67 @@
+Title: CloudStack EC2 API Interface Codebase Intellectual Property (IP) Clearance Status
+
+
+ec2stack is an API wrapper that maps the AWS Elastic Compute Cloud (EC2) API to the CloudStack API. It consist in a Python Flask application that implements a web server that serves a EC2 compatible API. The API calls are mapped to the CloudStack API. It serves as an API proxy and translater to allow users of AWS EC2 to use the EC2 clients to issue API calls to a CloudStack public or private cloud. The code contains the server and API routes, as well as unit tests.
+
+
+
+- Which PMC will be responsible for the code: CloudStack PMC
+
+
+- Into which existing project/module: Apache CloudStack
+
+
+- Officer or member managing donation: Sebastien Goasguen
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-04-27 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+| 2015-04-27 | v0.7.2 tag at https://github.com/BroganD1993/ec2stack/releases/tag/v0.7.2 |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-04-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-04-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Sebastien Goasguen_ 
+
+-  _Ian Duffy_ 
+
+-  _Darren Brogan_ 
+
+| date | item |
+|------|------|
+| 2015-04-13 | Check that all active committers have a signed CLA on record. |
+| N/A | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-04-15 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-04-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found on dev@cloudstack.apache.org or_  _http://markmail.org/thread/wbs64lyfd6ptgwwv_ 
diff --git a/content/cloudstack-egress-firewall-rules.md b/content/cloudstack-egress-firewall-rules.md
new file mode 100644
index 0000000..38b87b0
--- /dev/null
+++ b/content/cloudstack-egress-firewall-rules.md
@@ -0,0 +1,60 @@
+Title: CloudStack Egress firewall rules for guest network Codebase Intellectual Property (IP) Clearance Status
+
+
+The Egress traffic originates from the guest network and sent to public network. This features controls the Egress (outgoing) traffic from the guest network in Advanced zone. The egress firewall rules applied will restrict the traffic from guest network on the VR.
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2013-01-17 | Codebase is in reviewboard at https://reviews.apache.org/r/9010/ |
+
+MD5 sum for donated software: 7a4a76f1301f2c8a8472e926b9dc561e
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-01-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check that all active committers have a signed CLA on record. |
+| 2013-01-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in mailing list http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3C7A92FF96DF135843B4B608FB576BFC3E012DA3ADF543@SJCPMAILBOX01.citrite.net%3E_ 
diff --git a/content/cloudstack-enahnced-baremetal-provisioning.md b/content/cloudstack-enahnced-baremetal-provisioning.md
new file mode 100644
index 0000000..14745f9
--- /dev/null
+++ b/content/cloudstack-enahnced-baremetal-provisioning.md
@@ -0,0 +1,62 @@
+Title: CloudStack Enhanced Baremetal Provisoning Codebase Intellectual Property (IP) Clearance Status
+
+
+The CloudStack Enhanced Baremetal Provisoning donation enables CloudStack to support kickstart install for RedHat Linux in Baremetal provisioning
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-01-23 | 1 File available at http://people.apache.org/~frankzhang/CLOUDSTACK-774-baremetal-support.zip: MD5 (CLOUDSTACK-774-baremetal-support.patch) = cd955772609fa31286e70735219f03f1 |
+
+MD5 or SHA1 sum for donated software: cd955772609fa31286e70735219f03f1 ( _available as attachment CLOUDSTACK-774-baremetal-support.zip on http://people.apache.org/~frankzhang_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-01-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check that all active committers have a signed CLA on record. |
+| 2013-01-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in mailing list http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3c7A92FF96DF135843B4B608FB576BFC3E012DA3ADF546@SJCPMAILBOX01.citrite.net%3e_ 
diff --git a/content/cloudstack-go-sdk.md b/content/cloudstack-go-sdk.md
new file mode 100644
index 0000000..ecb0c91
--- /dev/null
+++ b/content/cloudstack-go-sdk.md
@@ -0,0 +1,64 @@
+Title: CloudStack Go SDK Codebase Intellectual Property (IP) Clearance Status
+
+
+Cloudstack provides a web based API that can be consumed from different runtime environments. There are several bindings, some of which are developed in the ecosystem surrounding the system. The Go based CloudStack API SDK was originally written and maintained by terraform users and developers. It is implemented in the Go programming language.
+
+
+
+- Which PMC will be responsible for the code: CloudStack PMC
+
+
+- Into which existing project/module: Apache CloudStack
+
+
+- Officer or member managing donation: Paul Angus
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2021-06-22 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. _We will need to change the name as it already exists_  |
+| 2021-06-22 | The tags at https://github.com/xanzy/go-cloudstack/releases/tag/apache-license-2.0 |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-06-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2021-06-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Sander van Harmelen (sander@vanharmelen.nl)_ 
+
+| date | item |
+|------|------|
+| 2021-06-22 | Check that all active committers have a signed CLA on record. |
+| N/A | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2021-06-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2021-06-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+| 2021-07-08 | IP clearance process tracked on project Github issue https://github.com/apache/cloudstack/issues/5159 All top contributors by code additions/deletions/commmits have agreed to the codebase donation and relicensing, no objections or disagreements were communicated to the project. The Github issue tracking IP clearance and a mailing list thread https://markmail.org/message/avgoh7xnssgvoysm documents their no objections. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found on dev@cloudstack.apache.org or:_  _https://markmail.org/message/g4prb25g7wakbifa_ 
diff --git a/content/cloudstack-gstack.md b/content/cloudstack-gstack.md
new file mode 100644
index 0000000..6cf20e4
--- /dev/null
+++ b/content/cloudstack-gstack.md
@@ -0,0 +1,67 @@
+Title: CloudStack GCE API Interface Codebase Intellectual Property (IP) Clearance Status
+
+
+gstack is an API wrapper that maps the Google Cloud Platform compute engine (GCE) API to the CloudStack API. It consist in a Python Flask application that implements a web server that serves a GCE compatible API. The API calls are mapped to the CloudStack API. It serves as an API proxy and translater to allow users of Google GCE to use the GCE client to issue API calls to a CloudStack public or private cloud. The code contains the server and API routes, as well as unit tests.
+
+
+
+- Which PMC will be responsible for the code: CloudStack PMC
+
+
+- Into which existing project/module: Apache CloudStack
+
+
+- Officer or member managing donation: Sebastien Goasguen
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-04-27 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. _We will need to change the name as it already exists_  |
+| 2015-04-27 | 1.1.2 tag at https://github.com/NOPping/gstack/releases/tag/v1.1.2 |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-04-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-04-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Sebastien Goasguen_ 
+
+-  _Ian Duffy_ 
+
+-  _Darren Brogan_ 
+
+| date | item |
+|------|------|
+| 2015-04-13 | Check that all active committers have a signed CLA on record. |
+| N/A | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-04-15 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-04-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found on dev@cloudstack.apache.org or:_  _http://markmail.org/thread/adk2e26ispxfd4rc_ 
diff --git a/content/cloudstack-marvin-test-suite.md b/content/cloudstack-marvin-test-suite.md
new file mode 100644
index 0000000..d4ee2e8
--- /dev/null
+++ b/content/cloudstack-marvin-test-suite.md
@@ -0,0 +1,64 @@
+Title: CloudStack Marvin Test Suite Codebase Intellectual Property (IP) Clearance Status
+
+
+The test suite included in the associated grant from Citrix was developed under contract for them by a third party.
+
+
+
+- Which PMC will be responsible for the code: CloudStack PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Chip Childers
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-02-15 |  [http://people.apache.org/~tsp/ipclearance_tests.tar.bz2](http://people.apache.org/~tsp/ipclearance_tests.tar.bz2)  |
+
+MD5 (ipclearance_tests.tar.bz2) = af15bbd69ae732eae52d25217b3c15f5
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-05-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| TDB | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: citrix-cloudstack2.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-05-02 | Check that all active committers have a signed CLA on record. |
+| 2013-05-02 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-05-02 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-05-02 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- VOTE Thread: http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3CCA%2B96GG6Yvj-A0XjhePjBcje7oNVCn1h436shZ6MEfuz0UMDcUg%40mail.gmail.com%3E
+
+- VOTE RESULTS: http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3CCA+96GG7d_1ineP0On=LXAo07AoR=cA11X1MJpirVxMgW3hXYmQ@mail.gmail.com%3E
diff --git a/content/cloudstack-network-services-in-shared-networks.md b/content/cloudstack-network-services-in-shared-networks.md
new file mode 100644
index 0000000..5708592
--- /dev/null
+++ b/content/cloudstack-network-services-in-shared-networks.md
@@ -0,0 +1,60 @@
+Title: CloudStack provide network services (PF, NAT, LB) in shared networks of advanced zone Codebase Intellectual Property (IP) Clearance Status
+
+
+This implementation is to enable Firewall, NAT and load balancing network services in the shared networks that gets created in the advanced zone.
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2013-01-17 | Codebase is here http://people.apache.org/~muralireddy/0001-CLOUDSTACK-312-enable-L4-L7-network-services-in-the-.patch |
+
+MD5 sum for donated software: b23acfff56fa68b9aec9cd507fe08252
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2012-01-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check that all active committers have a signed CLA on record. |
+| 2013-01-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in mailing list http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3c7A92FF96DF135843B4B608FB576BFC3E012DA3ADF54A@SJCPMAILBOX01.citrite.net%3e_ 
diff --git a/content/cloudstack-optional-public-ip-assignment-for-EIP-with-basic-zone.md b/content/cloudstack-optional-public-ip-assignment-for-EIP-with-basic-zone.md
new file mode 100644
index 0000000..d0a246b
--- /dev/null
+++ b/content/cloudstack-optional-public-ip-assignment-for-EIP-with-basic-zone.md
@@ -0,0 +1,60 @@
+Title: CloudStack provide Optional Public IP assignment for EIP with Basic Zone Codebase Intellectual Property (IP) Clearance Status
+
+
+In basic zone CloudStack provides AWS EIP like functionality using static NAT (1:1 NAT) from public IP to VM's private IP.
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2013-01-17 | Codebase is here http://people.apache.org/~muralireddy/0001-CLOUDSTACK-265-provide-option-to-turn-off-automatic-.patch |
+
+MD5 sum for donated software: 1a2add9ea35535a5a98f44a281b57bf4
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check that all active committers have a signed CLA on record. |
+| 2013-01-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in mailing list http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3c7A92FF96DF135843B4B608FB576BFC3E012DA3ADF548@SJCPMAILBOX01.citrite.net%3e_ 
diff --git a/content/cloudstack-rdp-client.md b/content/cloudstack-rdp-client.md
new file mode 100644
index 0000000..86fc14e
--- /dev/null
+++ b/content/cloudstack-rdp-client.md
@@ -0,0 +1,62 @@
+Title: CloudStack RDP Plugin to provide access to Hyper-V based VMs for Codebase Intellectual Property (IP) Clearance Status
+
+
+A patch that adds RDP plugin to Apache CloudStack to provide access to Hyper-V based VMs.
+
+
+
+- Which PMC will be responsible for the code: CloudStack PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Chip Childers (chipchilders)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-10-16 | 1 File available at https://reviews.apache.org/r/14701/ |
+
+MD5 or SHA1 sum for donated software: 23 16 f0 99 76 97 3f 32 be 3e 72 30 18 89 74 27
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-10-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| Will be completed after import | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Signed Cloudstack license admt_Citrix-ASF_10-29-2013.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems, Inc_ 
+
+| date | item |
+|------|------|
+| 2013-10-30 | (N/A - This is an Software Grant Agreement) Check that all active committers have a signed CLA on record. |
+| 2013-10-30 | (N/A - This is an Software Grant Agreement) Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-10-30 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-10-30 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the [dev@cloudstack.apache.org](http://mail-archives.apache.org/mod_mbox/cloudstack-dev/201310.mbox/%3c9ADDE3F979256644BED8F0D244BE51F0092A50@AMSPEX01CL02.citrite.net%3e) mailing list.
diff --git a/content/cloudstack-reset-ssh-key.md b/content/cloudstack-reset-ssh-key.md
new file mode 100644
index 0000000..134a9b0
--- /dev/null
+++ b/content/cloudstack-reset-ssh-key.md
@@ -0,0 +1,62 @@
+Title: CloudStack Reset SSH Key to access a VM in CloudStack Codebase Intellectual Property (IP) Clearance Status
+
+
+User should be able to reset the ssh key for a VM, i.e., to associate a new/different ssh key for a VM
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-01-22 | 1 File available at https://reviews.apache.org/r/8905/ |
+
+MD5 or SHA1 sum for donated software: 00a99ca408d661154eb22c0268bfcd8f 0001-CLOUDSTACK-297-Reset-SSH-key-to-access-VM.patch
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check that all active committers have a signed CLA on record. |
+| 2013-01-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in mailing list http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3c7A92FF96DF135843B4B608FB576BFC3E012DA3ADF53E@SJCPMAILBOX01.citrite.net%3e_ 
diff --git a/content/cloudstack-srx-f5-inline-mode.md b/content/cloudstack-srx-f5-inline-mode.md
new file mode 100644
index 0000000..18f4212
--- /dev/null
+++ b/content/cloudstack-srx-f5-inline-mode.md
@@ -0,0 +1,62 @@
+Title: CloudStack SRX-F5 inline mode support Codebase Intellectual Property (IP) Clearance Status
+
+
+The CloudStack SRX and F5 inline mode support donation enables CloudStack's ability to put one firewall device in front of one load balancing devices
+
+
+
+- Which PMC will be responsible for the code: Incubator PMC
+
+
+- Into which existing project/module: CloudStack
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-01-22 | 1 File available at http://people.apache.org/~yasker/: MD5 (SRX_F5_inline_mode.tar.gz) = 7810103bcde96a42ab27ae6e2c2de832 |
+
+MD5 or SHA1 sum for donated software: 7810103bcde96a42ab27ae6e2c2de832 ( _available as attachment SRX_F5_inline_mode.tar.gz on http://people.apache.org/~yasker/_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Citrix Systems Inc_ 
+
+| date | item |
+|------|------|
+| 2013-01-22 | Check that all active committers have a signed CLA on record. |
+| 2013-01-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found in mailing list http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201301.mbox/%3c7A92FF96DF135843B4B608FB576BFC3E012DA3ADF535@SJCPMAILBOX01.citrite.net%3e_ 
diff --git a/content/cloudstack-terraform.md b/content/cloudstack-terraform.md
new file mode 100644
index 0000000..43a969b
--- /dev/null
+++ b/content/cloudstack-terraform.md
@@ -0,0 +1,64 @@
+Title: CloudStack Terraform Provider Codebase Intellectual Property (IP) Clearance Status
+
+
+Terraform relies on plugins called "providers" to interact with cloud providers, SaaS providers, and other APIs. The CloudStack Terraform provider allows Terraform users to build, change and version infrastructure on Apache CloudStack using Go-based CloudStack API SDK (being donated separately). The provider is written in the Go programming language.
+
+
+
+- Which PMC will be responsible for the code: CloudStack PMC
+
+
+- Into which existing project/module: Apache CloudStack
+
+
+- Officer or member managing donation: Paul Angus
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2021-06-22 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. _We will need to change the name as it already exists_  |
+| 2021-06-22 | The tags at https://github.com/xanzy/terraform-provider-cloudstack/releases/tag/apache-license-2.0 |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-06-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2021-06-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Sander van Harmelen (sander@vanharmelen.nl)_ 
+
+| date | item |
+|------|------|
+| 2021-06-22 | Check that all active committers have a signed CLA on record. |
+| N/A | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2021-06-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2021-06-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+| 2021-07-08 | IP clearance process tracked on project Github issue https://github.com/apache/cloudstack/issues/5159 All top contributors by code additions/deletions/commmits have agreed to the codebase donation and relicensing, no objections or disagreements were communicated to the project. The Github issue tracking IP clearance and a mailing list thread https://markmail.org/message/avgoh7xnssgvoysm documents their no objections. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation can be found on dev@cloudstack.apache.org or:_  _https://markmail.org/message/g4prb25g7wakbifa_ 
diff --git a/content/cloudstack.md b/content/cloudstack.md
deleted file mode 100644
index 402f75b..0000000
--- a/content/cloudstack.md
+++ /dev/null
@@ -1,750 +0,0 @@
-Title: CloudStack Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The CloudStack project graduated on 2013-03-20</span>
-
-
-CloudStack is an IaaS (“Infrastracture as a Service”) cloud orchestration platform.
-
-
-
-- 2013-03-20 Apache CloudStack graduates to become a TLP
-
-- 2013-03-01 Sebastien Goasguen is voted and added as a new PPMC member
-
-- 2013-03-01 Marcus Sorenson is voted and added as a new PPMC member
-
-- 2013-02-27 Noa Resare is voted and added as a new committer
-
-- 2013-02-26 Sateesh Chodapuneedi is voted and added as a new committer
-
-- 2013-02-26 Radhika Puthiyetath is voted and added as a new committer
-
-- 2013-02-13 Likitha Shetty is voted and added as a new commiter
-
-- 2013-02-12 Version 4.0.1-incubating released.
-
-- 2013-01-31 Koushik Das is voted and added as a new committer
-
-- 2013-01-24 John Burwell is voted and added as a new committer
-
-- 2013-01-03 Sebastien Goasguen is voted and added as a new committer
-
-- 2013-01-03 Joe Brockmeier is voted and added as a new PPMC member
-
-- 2013-01-02 Kelcey Damage is voted and added as a new committer
-
-- 2012-12-11 Min Chen is voted and added as a new committer
-
-- 2012-12-02 Chiradeep Vittal is voted and added as a new PPMC member
-
-- 2012-11-19 Hugo Trippaers is voted and added as a new PPMC member
-
-- 2012-11-12 Sudha Ponnaganti is voted and added as a new committer
-
-- 2012-11-06 Version 4.0.0-incubating released.
-
-- 2012-10-30 Alex Huang is voted and added as a new PPMC member
-
-- 2012-10-18 Gavin Lee is voted and added as a new committer
-
-- 2012-10-10 Edison Su is voted and added as a new PPMC member
-
-- 2012-10-10 Marcus Sorensen is voted and added as a new committer
-
-- 2012-10-05 Rohit Yadav is voted and added as a new committer
-
-- 2012-09-04 John Kinsella is voted and added as a new PPMC member
-
-- 2012-09-03 Jira instance at the ASF goes live
-
-- 2012-08-23 Joe Brockmeier is voted and added as a new committer
-
-- 2012-08-14 Chip Childers is voted and added as a new PPMC member
-
-- 2012-08-07 Wido den Hollander is voted and added as a new PPMC member
-
-- 2012-08-06 Jason Bausewein is voted and added as a new committer
-
-- 2012-08-06 Mice Xia is voted and added as a new committer
-
-- 2012-07-25 Chip Childers is voted and added as a new committer
-
-- 2012-07-11 John Kinsella is voted and added as a new committer
-
-- 2012-07-11 Pranav Saxena is voted and added as a new committer
-
-- 2012-07-11 Prasanna Santhanam is voted and added as a new committer
-
-- 2012-07-11 Hugo Trippaers is voted and added as a new commiter
-
-- 2012-06-19 Olga Smola is voted and added as a new committer
-
-- 2012-06-18 Wido den Hollander is voted and added as a new committer
-
-- 2012-04-16 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/cloudstack](http://incubator.apache.org/cloudstack)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/CLOUDSTACK/Index](https://cwiki.apache.org/confluence/display/CLOUDSTACK/Index)  |
-| Mailing list | dev |  `cloudstack-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `cloudstack-commits`  `@`  `incubator.apache.org`  |
-| . | users |  `cloudstack-users`  `@`  `incubator.apache.org`  |
-| . | issues |  `cloudstack-issues`  `@`  `incubator.apache.org`  |
-| . | marketing |  `cloudstack-marketing`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/CLOUDSTACK](https://issues.apache.org/jira/browse/CLOUDSTACK)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-cloudstack.git](https://gitbox.apache.org/repos/asf/incubator-cloudstack.git)  |
-| . | SVN (project site and PPMC admin docs only) |  [https://svn.apache.org/repos/asf/incubator/cloudstack/](https://svn.apache.org/repos/asf/incubator/cloudstack/)  |
-| Mentors | jim | Jim Jagielski |
-| . | dkulp | J. Daniel Kulp |
-| . | akarasulu | Alex Karasulu |
-| . | olamy | Olivier Lamy |
-| . | brett | Brett Porter |
-| . | hogstrom | Matt Richard Hogstrom |
-| . | mnour | Mohammad Nour El-Din |
-| . | nslater | Noah Slater (2012-08-07) |
-| Podling PMC | willchan | Will Chan |
-| . | widodh | Wido den Hollander (2012-08-07) |
-| . | kluge | Kevin Kluge |
-| . | ke4qqq | David Nalley |
-| . | chipchilders | Chip Childers (2012-08-14) |
-| . | jlk | John Kinsella (2012-07-11) |
-| . | edison | Edison Su |
-| . | ahuang | Alex Huang |
-| . | hugo | Hugo Trippaers (2012-07-11) |
-| . | chiradeep | Chiradeep Vittal |
-| . | jzb | Joe Brockmeier (2012-08-23) |
-| . | mlsorensen | Marcus Sorensen (2012-10-10) |
-| . | sebgoa | Sebastien Goasguen (2013-01-03) |
-| Committers | aprateek | Abhinandan Prateek |
-| . | alena1108 | Alena Prokharchyk |
-| . | anthonyxu | Anthony Xu |
-| . | bfederle | Brian Federle |
-| . | frankzhang | Frank Zhang |
-| . | gavinlee | Gavin Lee (2012-10-18) |
-| . | jbausewein | Jason Bausewein (2012-08-06) |
-| . | jtomechak | Jessica Tomechak |
-| . | jessicawang | Jessica Wang |
-| . | jburwell | John Burwell (2013-01-24) |
-| . | kdamage | Kelcey Damage (2013-01-02) |
-| . | kelveny | Kelven Yang |
-| . | kishan | Kishan Kavala |
-| . | koushik | Koushik Das (2013-01-31) |
-| . | likithas | Likitha Shetty (2013-02-13) |
-| . | mchen | Minh Chen (2012-12-11) |
-| . | mice | Mice Xia (2012-08-06) |
-| . | muralireddy | Murali Reddy |
-| . | nitin | Nitin Mehta |
-| . | noa | Noa Resare (2013-02-27) |
-| . | olgasmola | Olga Smola (2012-06-19) |
-| . | prachidamle | Prachi Damle |
-| . | pranavs | Pranav Saxena (2012-07-11) |
-| . | tsp | Prasanna Santhanam (2012-07-11) |
-| . | radhika | Radhika Puthiyetath (2013-02-26) |
-| . | bhaisaab | Rohit Yadav (2012-10-05) |
-| . | slriv | Sam Robertson |
-| . | sateesh | Sateesh Chodapuneedi (2013-02-26) |
-| . | yasker | Sheng Yang |
-| . | schhen | Sonny Chhen |
-| . | sudhap | Sudha Ponnaganti (2012-11-12) |
-| Extra | . | . |
-
-# January 2013 {#Jan2013}
-
-```
-
-CloudStack
-
-CloudStack is an IaaS (“Infrastracture as a Service”) cloud orchestration platform.
-
-CloudStack has been incubating since 2012-04-16.
-
-A list of the three most important issues to address in the move towards graduation
-
-  1. Continuing to build the community and increase diversity, while effectively managing the overall scale of the project.
-  2. Ensuring all deliberation, decision-making, and development is happening openly and collaboratively.
-  3. Transfer trademark, etc. to Apache
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues at this time
-
-How has the community developed since the last report?
-
-  The project has continuted to grow and has added several new PPMC members and committers since October:
-
-  - Edison Su, Alex Huang, Hugo Trippaers, and Chiradeep Vittal, have joined the PPMC since October.
-
-  - Rohit Yadav, Marcus Sorensen, Gavin Lee, Sudha Ponnaganti, Kelcey Damage, and Min Chen have become committers.
-
-  Members of the CloudStack community have been active in promoting the project since the last report, with members giving talks about Apache CloudStack at USENIX LISA, CPOSC, ApacheCon EU, LinuxCon EU, and other events. 
-
-  The CloudStack Collaboration Conference (sponsored primarily by Citrix) was a fairly successful first conference. More than 300 people attended the event, held November 30 - December 2 in Las Vegas at The Venetian. 
-
-How has the project developed since the last report?
-
-  The first release, 4.0.0-incubating, was announced on November 6th. 
-
-  The CloudStack.org domain now points to Apache infrastructure. 
-
-  4.0.1 and 4.1.0 are currently in development. The community has decided to work on a time-based release cycle for feature releases, with 4.1.0 expected at the beginning of April. Feature releases will follow a four-month cycle thereafter. 
-
-        
-```
-
-# October 2012 {#October2012}
-
-```
-
-CloudStack
-
-CloudStack is an IaaS (“Infrastracture as a Service”) cloud orchestration
-platform. CloudStack has been in incubation since 2012-04-16
-
-A list of the three most important issues to address in the move towards
-graduation
-
-  1. Continuing to build the community and increase diversity
-  2. Shipping a release
-  3. Transfer trademark, etc. to Apache
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues at this time
-
-How has the community developed since the last report?
-
-  The project has continued to improve its diversity, adding
-  Chip Childers, John Kinsella, and Wido den Hollander to the PPMC
-  and 3 new committers since the month of August. (Mice Xia, Jason
-  Bausewein, and Joe Brockmeier.) We have also taken on a new mentor,
-  Noah Slater.
-
-  Contributors and committers have been active in promoting CloudStack
-  at events, such as LinuxCon, Ohio LinuxFest, PuppetConf, a get-together
-  at Schuberg Philis, and a number of other events.
-
-  The community is participation at LinuxCon EU and ApacheCon EU and
-  a number of other events through the remainder of 2012.
- 
-  Citrix is acting as primary sponsor of a CloudStack Collaboration
-  Conference for November 30 through December 2 in Las Vegas. The
-  conference is open to the community, and programming for the event
-  will be chosen by a committee that includes members of the CloudStack
-  community outside Citrix.
-
-How has the project developed since the last report?
-
-  The pending 4.0 release has been branched. The project has made a great
-  deal of progress towards the 4.0 release, handling a number of technical
-  issues (such as a move to Maven) and resolving almost all known legal
-  issues that would pose an obstacle to a release. The sole remaining
-  blocker is under discussion and should be resolved shortly.
-
-  The Jira instance for CloudStack was stood up in early September. License
-  checks have been automated to ensure that we remain compliant with Apache
-  guidelines going forward.
-
-Signed-off-by: nslater, mfranklin
-        
-```
-
-# August 2012 {#August2012}
-
-```
-
-CloudStack
-
-A list of the three most important issues to address in the move towards graduation
-
-  1. Licensing work
-  2. Finishing up the move of CloudStack infrastructure resources to the ASF.
-  3. Shipping a release.
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues at this time
-
-How has the community developed since the last report?
-
-  CloudStack has added 6 new committers in the month of July.
-
-  We had BOF and hackathon time at OSCON, which was a positive benefit for
-  those committers who attended, particularly in being able to delve into
-  issues around incubation, branding, and licensing. Additionally two
-  committers presented tutorials at OSCON one focused on end users deploying
-  CloudStack and the other focused on developers hacking on CloudStack, both
-  had great attendance.
-
-  We have also had some offers of contribution from people at Bitergia who are
-  interested in contributing the work that they have done around metrics. which
-  was a very encouraging start to growing the community.
-
-How has the project developed since the last report?
-
-  Lots of modularization has been injected into CloudStack, which makes some
-  of our licensing issues far less of a problem as we can merely turn the
-  affected code off by default.
-
-  The wiki has begun migration to an ASF hosted wiki instance.
-
-  One of the CloudStack committers provided a dramatically easier way to be
-  able to test and develop for CloudStack in the form a completely contained
-  CloudStack environment that can be run as a VirtualBox VM. Much additional
-  enhancement has been contributed to this making the process easier and
-  easier to update.
-
-  We also saw the movement of documentation from binary .docx files to
-  DocBook XML; while this effort isn't complete it does permit folks to far
-  more easily collaborate, as well as providing a far better interface
-  for l10n.
-
-Signed-off-by: brett, jukka, jim
-        
-```
-
-# July 2012 {#July2012}
-
-```
-
-CloudStack
-
-CloudStack is an IaaS (“Infrastracture as a Service”) cloud orchestration
-platform. CloudStack has been in incubation since 2012-04-16
-
-The top 3 issues to address to move towards graduation:
-
-  - CloudStack's source still contains works that are prohibited for release
-    under ASF guidelines
-  - Performing a release
-  - Migration of infrastructure (bug tracker, CI, websites, etc)
-
-How has the community developed since the last report:
-
-  As of the time of this report at least one new committer has been added.
-  Additionally, a number of previously unknown developers have begun making
-  substantial quantities of bugfixes and even working on new functionality.
-
-How has the project developed since the last report:
-
-  The project itself continues to deal with process questions as well as
-  learning how to operate in the new environment. A good deal of work has
-  been happening on resolving the problems in the code base around licensing,
-  though not currently close to finishing.
-
-Signed off by mentor:
-        
-```
-
-# June 2012 {#June2012}
-
-```
-
-CloudStack
-
-CloudStack is an IaaS (“Infrastracture as a Service”) cloud orchestration
-platform. CloudStack has been in incubation since 2012-04-16
-
-CloudStack has been in the incubator for approximately 1.5 months. Mailing
-lists have migrated, accounts for the initial committers have been set up,
-and the initial code drop/git repo has been setup. Many new names are now
-participating in conversations on the mailing lists, with several of them
-volunteering to help move things along. The number of submitted patches from
-'new names' in the month of May is in the double digits, and range from
-trivial one line fixes to two major patches with over 1,000 changed lines
-each. The community is beginning to exercise some of its decision making
-power by deciding about release tempo, future version schemes and numbers,
-and a number of other internal plumbing issues. Much remains to be done in
-preparation for the initial release, and those tasks are being identified.
-We also have a number of external resources (bug tracker, wiki, CI) that
-are still awaiting migration. 
-
-Top 3 Issues to address in move towards graduation
-
-  - The project is using source and binaries with a number of
-    non-ASF-approved licenses. This needs remediation.
-
-  - Diversity of the contributor base still needs to be expanded.
-
-  - While we are making progress, there still remains a number of large
-    pieces (bug tracker, wiki, test infra) that still need to be migrated
-    to ASF infrastructure.
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues that we are aware of at this point.
-
-How has the community developed since the last report?
-
-  See the above narration, but generally speaking the community is beginning
-  to exercise its decision making powers, largely around internal plumbing
-  issues at the moment. We are also seeing a number of new developers
-  submitting patches. 
-
-How has the project developed since the last report?
-
-  The project continues to have many issues to tackle for its first release
-  and is identifying and moving forward on those issues. Work continues on
-  solutions to remove the need to massive (or any) amount of additional
-  hardware to test/develop with in an effort to lower the barrier to
-  participate. 
-
-Signed off by mentor:
-        
-```
-
-# May 2012 {#May2012}
-
-```
-
-Overview:
-
-  Cloudstack just entered the incubator a couple of weeks ago. Since then,
-  the mailing list has been setup  and discussions have started to migrate
-  from the existing list to the ASF-hosted list, with several 'new names'
-  participating including one of those 'new names' submitting a patch.
-  Currently, the code repository and bulk of existing infrastructure is still
-  hosted by Citrix, but the community is looking forward to getting that
-  moved to Apache as soon as possible.
-
-A list of the most important issues to address in the move towards graduation:
-
-  1. The base level of infrastructure migration has begun but still has far
-     to be finished. At present the mailing lists exist, but wiki, project
-     website, source repository, bug tracker, etc still need to be brought
-     up and migrated. In many ways we are blocked on further progress by
-     lack of account creation for initial committers.
-
-  2. Diversity of the contributor base still needs to be expanded - this was
-     identified as an issue in the proposal, and remains one, though we are
-     encouraged by a seeming uptick (we've been in incubation for less than
-     a week, so trends are indeed difficult to identify at this point) in
-     interest on the mailing lists from previously uninvolved individuals.
-
-  3. The project needs a working process definition.  What is the review
-     process for contributions, recommendations for engaging before writing
-     large amounts of code, etc.
-
-  4. The project is using source and binaries with a number of
-     non-ASF-approved licenses.  This needs remediation.
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues that we are aware of at this point.
-
-How has the community developed since the last report?
-
-  There has been no previous report - so nothing to report here.
-
-How has the project developed since the last report?
-
-  There has been no previous report - so nothing to report here.
-        
-```
-
-# June 2012 {#June2012}
-
-```
-
-CloudStack has been in the incubator for approximately 1.5 months. Mailing
-lists have migrated, accounts for the initial committers have been set up,
-and the initial code drop/git repo has been setup. Many new names are now
-participating in conversations on the mailing lists, with several of them
-volunteering to help move things along. The number of submitted patches from
-'new names' in the month of May is in the double digits, and range from
-trivial one line fixes to two major patches with over 1,000 changed lines
-each. The community is beginning to exercise some of its decision making
-power by deciding about release tempo, future version schemes and numbers,
-and a number of other internal plumbing issues. Much remains to be done in
-preparation for the initial release, and those tasks are being identified.
-We also have a number of external resources (bug tracker, wiki, CI) that
-are still awaiting migration. 
-
-Top 3 Issues to address in move towards graduation
-
-  - The project is using source and binaries with a number of
-    non-ASF-approved licenses. This needs remediation.
-
-  - Diversity of the contributor base still needs to be expanded.
-
-  - While we are making progress, there still remains a number of large
-    pieces (bug tracker, wiki, test infra) that still need to be migrated
-    to ASF infrastructure.
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues that we are aware of at this point.
-
-How has the community developed since the last report?
-
-  See the above narration, but generally speaking the community is beginning
-  to exercise its decision making powers, largely around internal plumbing
-  issues at the moment. We are also seeing a number of new developers
-  submitting patches. 
-
-How has the project developed since the last report?
-
-  The project continues to have many issues to tackle for its first release
-  and is identifying and moving forward on those issues. Work continues on
-  solutions to remove the need to massive (or any) amount of additional
-  hardware to test/develop with in an effort to lower the barrier to
-  participate.
-        
-```
-
-# July 2012 {#July2012}
-
-```
-
-          The top 3 issues to address to move towards graduation:
-
-          - CloudStack's source still contains works that are prohibited for release
-            under ASF guidelines
-          - Performing a release
-          - Migration of infrastructure (bug tracker, CI, websites, etc)
-
-          How has the community developed since the last report:
-
-            As of the time of this report at least one new committer has been added.
-            Additionally, a number of previously unknown developers have begun making
-            substantial quantities of bugfixes and even working on new functionality.
-
-          How has the project developed since the last report:
-
-            The project itself continues to deal with process questions as well as
-            learning how to operate in the new environment. A good deal of work has
-            been happening on resolving the problems in the code base around licensing,
-            though not currently close to finishing.
-        
-```
-
-# August 2012 {#Aug2012}
-
-```
-
-A list of the three most important issues to address in the move towards graduation
-
-  1. Licensing work
-  2. Finishing up the move of CloudStack infrastructure resources to the ASF.
-  3. Shipping a release.
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues at this time
-
-How has the community developed since the last report?
-
-  CloudStack has added 6 new committers in the month of July.
-
-  We had BOF and hackathon time at OSCON, which was a positive benefit for
-  those committers who attended, particularly in being able to delve into
-  issues around incubation, branding, and licensing. Additionally two
-  committers presented tutorials at OSCON one focused on end users deploying
-  CloudStack and the other focused on developers hacking on CloudStack, both
-  had great attendance.
-
-  We have also had some offers of contribution from people at Bitergia who are
-  interested in contributing the work that they have done around metrics. which
-  was a very encouraging start to growing the community.
-
-How has the project developed since the last report?
-
-  Lots of modularization has been injected into CloudStack, which makes some
-  of our licensing issues far less of a problem as we can merely turn the
-  affected code off by default.
-
-  The wiki has begun migration to an ASF hosted wiki instance.
-
-  One of the CloudStack committers provided a dramatically easier way to be
-  able to test and develop for CloudStack in the form a completely contained
-  CloudStack environment that can be run as a VirtualBox VM. Much additional
-  enhancement has been contributed to this making the process easier and
-  easier to update.
-
-  We also saw the movement of documentation from binary .docx files to
-  DocBook XML; while this effort isn't complete it does permit folks to far
-  more easily collaborate, as well as providing a far better interface
-  for l10n.
-
-Signed-off-by: brett, jukka, jim
-        
-```
-
-# October 2012 {#October2012}
-
-```
-
-A list of the three most important issues to address in the move towards
-graduation
-
-  1. Continuing to build the community and increase diversity
-  2. Shipping a release
-  3. Transfer trademark, etc. to Apache
-
-Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of?
-
-  No issues at this time
-
-How has the community developed since the last report?
-
-  The project has continued to improve its diversity, adding
-  Chip Childers, John Kinsella, and Wido den Hollander to the PPMC
-  and 3 new committers since the month of August. (Mice Xia, Jason
-  Bausewein, and Joe Brockmeier.) We have also taken on a new mentor,
-  Noah Slater.
-
-  Contributors and committers have been active in promoting CloudStack
-  at events, such as LinuxCon, Ohio LinuxFest, PuppetConf, a get-together
-  at Schuberg Philis, and a number of other events.
-
-  The community is participation at LinuxCon EU and ApacheCon EU and
-  a number of other events through the remainder of 2012.
- 
-  Citrix is acting as primary sponsor of a CloudStack Collaboration
-  Conference for November 30 through December 2 in Las Vegas. The
-  conference is open to the community, and programming for the event
-  will be chosen by a committee that includes members of the CloudStack
-  community outside Citrix.
-
-How has the project developed since the last report?
-
-  The pending 4.0 release has been branched. The project has made a great
-  deal of progress towards the 4.0 release, handling a number of technical
-  issues (such as a move to Maven) and resolving almost all known legal
-  issues that would pose an obstacle to a release. The sole remaining
-  blocker is under discussion and should be resolved shortly.
-
-  The Jira instance for CloudStack was stood up in early September. License
-  checks have been automated to ensure that we remain compliant with Apache
-  guidelines going forward.
-
-Signed-off-by: nslater, mfranklin
-        
-```
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-02-25 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. Completed via [PODLINGNAMESEARCH-23](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-23)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2012-05-27 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-05-27 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-04-19 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-04-17 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012-07-14 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-11-01 | Migrate the end-user site |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-09-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-09-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-09-10 | Give all Mentors access to the incubator SVN and git repositories. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-10-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-09-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-09-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-09-14 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-09-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-10-05 | Check that all active committers have submitted a contributors agreement. |
-| 2012-10-05 | Add all active committers in the STATUS file. |
-| 2012-10-05 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2012-09-14 | Remove all binaries from source repo |
-| 2012-10-09 | Fix artifact naming so that they comply with ASF guidelines |
-| 2012-10-10 | Comply with ASF Cryptography requirements for Export compliance |
-| 2012-10-08 | Write release process documentation |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-N/A
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Board resolution passed on 2013-03-20.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- IPMC Vote [RESULT](http://mail-archives.apache.org/mod_mbox/incubator-general/201303.mbox/%3C20130317165226.GG16726%40USLT-205755.sungardas.corp%3E) 
diff --git a/content/cmda.md b/content/cmda.md
deleted file mode 100644
index 16ada63..0000000
--- a/content/cmda.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: Apache Climate Model Diagnostic Analyzer Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Climate Model Diagnostic Analyzer (CMDA) provides web services for multi-aspect physics-based and phenomenon-oriented climate model performance evaluation and diagnosis through the comprehensive and synergistic use of multiple observational data, reanalysis data, and model outputs.
-
-
-<span class="retired">The Climate Model Diagnostic Analyzer project retired on 2017-02-05</span>
-
-
-
-- 2015-05-08 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://cmda.incubator.apache.org/](http://cmda.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `cmda.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `cmda.incubator.apache.org`  |
-| . | commits |  `private`  `@`  `cmda.incubator.apache.org`  |
-| . | commits |  `users`  `@`  `cmda.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/CMDA](https://issues.apache.org/jira/browse/CMDA)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-cmda.git](https://gitbox.apache.org/repos/asf/incubator-cmda.git)  |
-| Mentors | mattmann | Chris Mattmann |
-| . | whitehall | Kim Whitehall |
-| . | joyce | Michael James Joyce |
-| . | greddin | Gregory D. Reddin |
-| . | jcarman | James W. Carman |
-| Committers | seungwon |  [Seungwon Lee](mailto:seungwon.lee@jpl.nasa.gov)  |
-| . | lpan |  [Lei Pan](mailto:lei.pan@jpl.nasa.gov)  |
-| . | czhai |  [Chengxing Zhai](mailto:chengxing.zhai@jpl.nasa.gov)  |
-| . | benyangtang |  [Benyang Tang](mailto:benyang.tang@jpl.nasa.gov)  |
-| . | jiazhang |  [Jia Zhang](mailto:jia.zhang@sv.cmu.edu)  |
-| . | weiwang |  [Wei Wang](mailto:wei.wang@sv.cmu.edu)  |
-| . | clee |  [Chris Lee](mailto:chris.lee@sv.cmu.edu)  |
-| . | xingwei |  [Xing Wei](mailto:xing.wei@sv.cmu.edu)  |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-05-10 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2015-05-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-05-10 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-05-10 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-05-10 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-05-10 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/commons-flatfile.md b/content/commons-flatfile.md
new file mode 100644
index 0000000..e699293
--- /dev/null
+++ b/content/commons-flatfile.md
@@ -0,0 +1,62 @@
+Title: XYZ Codebase Intellectual Property (IP) Clearance Status
+
+
+Implementation of a Java library for the handling of flat data structures.
+
+
+
+- Which PMC will be responsible for the code: **Commons** 
+
+
+- Into which existing project/module: **Apache Commons** 
+
+
+- Officer or member managing donation: Matt Benson (mbenson AT apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+|  _not applicable_  | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+IP at http://svn.apache.org/repos/asf/incubator/donations/commons-pmc/flatfile/ MD5 sum for donated software: c20379daef3e7d16bfb043707ef68f02 (OpenSSL 0.9.7e-p1 25 Oct 2004).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-09-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| not applicable | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Flatfile codebase including source, tests and documentation for contribution to apache commons
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Permanent General Assurance Corporation (ASF contact: mbenson AT pgac.com)
+
+| date | item |
+|------|------|
+| not applicable | Check that all active committers have a signed CLA on record. |
+| not applicable | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| not applicable | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| not applicable | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Commons PMC votes to accept codebase: [http://markmail.org/message/3b7xc76lvmurzkqe](http://markmail.org/message/3b7xc76lvmurzkqe) 
diff --git a/content/commonsrdf.md b/content/commonsrdf.md
index 2127c29..2579f64 100644
--- a/content/commonsrdf.md
+++ b/content/commonsrdf.md
@@ -1,176 +1,57 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: Commons RDF Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="graduated">The CommonsRDF project graduated on 2016-11-28</span>
-
-
-Commons RDF is a set of interfaces and classes for RDF 1.1 concepts and behaviours. The commons-rdf-api module defines interfaces and testing harness. The commons-rdf-simple module provides a basic reference implementation to exercise the test harness and clarify API contracts.
+Commons RDF is a library which provides a set of interfaces for the RDF 1.1 concepts that can be used to expose common RDF 1.1 concepts using common Java interfaces. The goal is to provide agreed and clear interfaces that could be implemented by the upcoming versions of the main Java toolkits (Apache Jena 3.0 and OpenRDF Sesame 4.0) as well as reused by existing wrappers.
 
 
 
-- 2015-03-06 Project enters incubation.
-
-- 2015-05-17 CommonsRDF 0.1.0-incubating released
-
-- 2016-05-24 CommonsRDF 0.2.0-incubating released
-
-- 2016-11-15 CommonsRDF 0.3.0-incubating released
-
-- 2016-11-28 CommonsRDF graduated as a sub-project of Apache Commons
+- Which PMC will be responsible for the code: Apache Commons
 
 
-- The podling site is at [commonsrdf.incubator.apache.org](http://commonsrdf.incubator.apache.org/) .
-
--  [Project Maturity Assessment](https://github.com/apache/incubator-commonsrdf/blob/ab7afbfe5f883f095c2da9ea6532019040836f45/MATURITY.md) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www | Original: [http://commons-rdf.github.io/](http://commons-rdf.github.io/) Podling: [http://commonsrdf.incubator.apache.org/](http://commonsrdf.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `commonsrdf.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `commonsrdf.incubator.apache.org`  |
-| . | private |  `private`  `@`  `commonsrdf.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/COMMONSRDF](https://issues.apache.org/jira/browse/COMMONSRDF)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-commonsrdf.git](https://gitbox.apache.org/repos/asf?p=incubator-commonsrdf.git)  |
-| Champion | lewismc | Lewis John McGibbney |
-| Mentors | johndament | John D Ament |
-| . | ggregory | Gary Gregory |
-| Committers | wikier | Sergio Fernández |
-| . | stain | Stian Soiland-Reyes |
-| . | enridaga | Enrico Daga |
-| . | britter | Benedikt Ritter |
-| Emeritus | . | . |
-| . | andy | Andy Seaborne |
-| . | ansell | Peter Ansell |
-| . | reto | Reto Gmür |
-| Emeritus mentor | rvesse | Rob Vesse |
+- Into which existing project/module: Apache Commons Sanbox
 
 
--  [March2015](http://wiki.apache.org/incubator/March2015) 
+- Officer or member managing donation: @@TODO@@
 
--  [April2015](http://wiki.apache.org/incubator/April2015) 
-
--  [May2015](http://wiki.apache.org/incubator/May2015) 
-
--  [June2015](http://wiki.apache.org/incubator/June2015) 
-
--  [September2015](http://wiki.apache.org/incubator/September2015) 
-
--  [December2015](http://wiki.apache.org/incubator/December2015) 
-
--  [March2016](http://wiki.apache.org/incubator/March2016) 
-
--  [June2016](http://wiki.apache.org/incubator/June2016) 
-
--  [September2016](http://wiki.apache.org/incubator/September2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2015-03-07 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| XXXX-XX-XX | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names: N/A. |
-| XXXX-XX-XX | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance: N/A. |
-| XXXX-XX-XX | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. TODO |
+| 2015-03-26 | No evidences of registration of the trademark for an existing software product have been found. |
+| 2015-03-27 | Attached to [COMMONSRDF-1](https://issues.apache.org/jira/browse/COMMONSRDF-1) as **commons-rdf.bundle** a bundle containing the master branch at github ( [https://github.com/commons-rdf/commons-rdf/tree/master](https://github.com/commons-rdf/commons-rdf/tree/master) by 2015-03-28 (tagged as [apache-import-20150327](https://github.com/commons-rdf/commons-rdf/releases/tag/apache-import-20150327) ). Software Grant Agreement signed and archived by ASF Secretary. |
 
-## Infrastructure {#Infrastructure}
+MD5 sum for donated software: `84095aae6d752b864e10181ec78ed299` .
 
-| date | item |
-|------|------|
-| 2015-03-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-03-07 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-03-07 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-03-07 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-03-27 | Project src migrated to Apache. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-03-07 | Subscribe all Mentors on the pmc and general lists. |
-| XXXX-XX-XX | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file). TODO |
-| 2015-03-11 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2015-03-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. Software Grant acknowledged by secretary@ 2015-03-27. |
-| XXXX-XX-XX | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. TODO |
+| 2015-03-26 | Code was developed by Sergio Fernández (Apache ID wikier), Andy Seaborne (andy), Peter Ansell (ansell) and Stian Soiland-Reyes (stain), who already are all ASF committers and have both ICLA and CCLA with effect when the code was developed. |
+| 2015-03-29 | All code files now have standard ASF headers, license headers added to other relevant files (POMs, XML etc). RAT report is clean. |
+
+Identify name recorded for software grant: n/a.
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. ONGOING |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. ONGOING |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
 
 | date | item |
 |------|------|
-| 2015-03-11 | Check that all active committers have submitted a contributors agreement. DONE. |
-| 2015-03-11 | Add all active committers in the STATUS file. DONE. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. ONGOING. |
+| 2015-03-26 | All committers have an ICLA on file |
+| 2015-03-26 | All committers have an a CCLA on file that names him and has agreed to donate the code to the Apache Commons under the existing ICLA and CCLA |
+| 2015-03-26 | There is no non-Apache licensed code present in the donated software |
+| 2015-03-26 | All dependencies are other Apache projects or open source projects compatible with the Apache License |
 
-## Project specific {#Project+specific}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
- _Add project specific tasks here._ 
+Related VOTEs: n/a.
 
 
-# Incubation {#Incubation}
+The original donation discussion can be found at the thread [http://mail-archives.apache.org/mod_mbox/commons-dev/201407.mbox/%3C53CCEA51.9070801%40apache.org%3E](http://mail-archives.apache.org/mod_mbox/commons-dev/201407.mbox/%3C53CCEA51.9070801%40apache.org%3E) 
 
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **Yes, see [project team](https://commons.apache.org/proper/commons-rdf/team-list.html) ** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **Yes, the committers are not affiliated outside ASF** 
-
-- Are project decisions being made in public by the committers? **Yes, decisions made on [dev@commonsrdf](https://lists.apache.org/list.html?dev@commonsrdf.apache.org) (now [dev@commons](https://lists.apache.org/list.html?dev@commons.apache.org) )** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **Follows [Apache Commons decision-making process](https://wiki.apache.org/commons/CommonsEtiquette) ** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **Yes, see [Project Maturity Assessment](https://github.com/apache/incubator-commonsrdf/blob/ab7afbfe5f883f095c2da9ea6532019040836f45/MATURITY.md) ** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? **Yes, [accepted by Commons PMC](https://lists.apache.org/thread.html/e5817369e5e713183efcac0ba54d1a7dac6a69e718b32d94b7fbe535@%3Cdev.commons.apache.org%3E) ** 
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? **Graduation was [accepted by Incubator PMC](https://lists.apache.org/thread.html/64ddd50681f6ea6e9fb8c3e5b2b01644d1367ddc39cf2ecb48956b45@%3Cdev.commonsrdf.apache.org%3E) ** 
diff --git a/content/composer.md b/content/composer.md
deleted file mode 100644
index ef955f0..0000000
--- a/content/composer.md
+++ /dev/null
@@ -1,173 +0,0 @@
-Title: Apache Composer Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look at the [project website](http://incubator.apache.org/composer) .
-
-
-<span class="retired">The Composer project retired on 2008-05-13</span>
-
-
-Apache Composer would have been a merging of PicoContainer and Plexus. This project has been retired from the incubator.
-
-
-
-- 2008-05-09 Project cancelled. PicoContainer and Plexus will not merge or arrive at Apache as a project.
-
-
-- 2007-10-30 Project accepted for incubation in Apache.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/composer/](http://incubator.apache.org/composer/)  |
-| Wiki | wiki |  [http://cwiki.apache.org/confluence/display/CXF](http://cwiki.apache.org/confluence/display/CXF)  |
-| Mailing list | dev |  `composer-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | user |  `composer-user`  `@`  `incubator.apache.org`  |
-| Mailing list | commits |  `composer-commits`  `@`  `incubator.apache.org`  |
-| Mailing list | issues (JIRA) |  `composer-issues`  `@`  `incubator.apache.org`  |
-| Mailing list | notifications (Continuum) |  `composer-notifications`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA<br></br> |  [https://issues.apache.org/jira/browse/COMP](https://issues.apache.org/jira/browse/COMP)  |
-| Source code | SVN<br></br> |  [http://svn.apache.org/repos/asf/incubator/composer/](http://svn.apache.org/repos/asf/incubator/composer/)  |
-| Proposal | wiki |  [http://wiki.apache.org/incubator/ComposerProposal](http://wiki.apache.org/incubator/ComposerProposal) <br></br> |
-| Mentors |  | Jason van Zyl, Peter Royal |
-| Committers | jvanzyl | Jason van Zyl |
-|  | jdcasey | John Casey |
-|  | trygvis | Trygve Laugstol |
-|  | brett | Brett Porter |
-|  | carlos | Carlos Sanchez |
-|  | evenisse | Emmanuel Venisse |
-|  | jmcconnell | Jesse McConnell |
-|  | joakime | Joakim Erdfelt |
-|  | kenney | Kenney Westerhof |
-|  | jdillon | Jason Dillon |
-|  | handyande | Andrew Williams |
-|  | jochen | Jochen Wiedmann |
-|  |  olamy| Olivier Lamy |
-|  |  | Oleg Gusakov |
-|  |  | Frankie Wu |
-|  |  | Durai Arasan |
-|  |  | Piotr Tabor |
-|  |  rinku| Rahul Thakur |
-|  |  | Eirik Bjorsnos |
-|  |  | Eric Redmond |
-|  |  hboutemy| Herve Boutemy |
-|  | hammant | Paul Hammant |
-|  | mauro | Mauro Talevi |
-|  | proyal | Peter Royal |
-|  | joehni | Joerg Schaible |
-|  |  | Michael Rimov |
-|  |  | Mike Ward |
-|  |  | Konstantin Pribluda |
-|  |  | Aslak Hellesoy |
-|  |  | Jon Tirsen |
-|  |  | Joe Walnes |
-|  |  | Jose Peleterio |
-|  |  | Dan North |
-|  |  | Chris Stevenson |
-|  |  | Kent Spillner |
-|  |  | Pawel Kozlowski |
-
-
-- http://svn.apache.org/repos/asf/incubator/composer/trunk/STATUS
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache. This is currently complete.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| TODO | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2007-10-30 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| Complete? | Item |
-|-----------|------|
-| Yes | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| TODO | Subscribe all Mentors on the pmc and general lists. |
-| TODO | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| TODO | Tell Mentors to track progress in the file 'incubator/projects/composer.html' |
-
-## Copyright {#Copyright}
-
-| Complete? | Item |
-|-----------|------|
-| TODO | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| TODO | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| Complete? | Item |
-|-----------|------|
-| TODO | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| TODO | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| Complete? | Item |
-|-----------|------|
-| TODO | Check that all active committers have submitted a contributors agreement. |
-| TODO | Add all active committers in the STATUS file. |
-| TODO | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| Complete? | Item |
-|-----------|------|
-| TODO | Ask infrastructure to create source repository modules and grant the committers karma. |
-|  [applied for](https://issues.apache.org/jira/browse/INFRA-1407)  | Ask infrastructure to set up and archive Mailing lists. |
-| TODO | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-| TODO | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **DONE** 
-
-- Are project decisions being made in public by the committers? **DONE** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **DONE** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers? **DONE** 
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/concerted.md b/content/concerted.md
deleted file mode 100644
index da0da36..0000000
--- a/content/concerted.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Title: Concerted Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Concerted project [retired on 2016-04-25](https://s.apache.org/concerted-retire-ipmc-result) </span>
-
-
-Apache Concerted is a Do-It-Yourself toolkit for building in-memory data engines.
-
-
-
-- 2015-10-14 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://concerted.incubator.apache.org/](http://concerted.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/CONCERTED/](https://cwiki.apache.org/confluence/display/CONCERTED/)  |
-| Mailing list | dev |  `dev`  `@`  `concerted.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `concerted.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `concerted.incubator.apache.org`  |
-| Bug tracking | . |  [Jira: CONCERTED](https://issues.apache.org/jira/browse/CONCERTED)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-concerted.git](https://gitbox.apache.org/repos/asf/incubator-concerted.git) <br></br>(mirrored at [https://github.com/apache/incubator-concerted](https://github.com/apache/incubator-concerted) ), |
-| Champion | rvs | Roman Shaposhnik |
-| Mentors | cnauroth | Chris Nauroth |
-| . | daijy | Daniel Dai |
-| . | jfarrell | Jake Farrell |
-| . | jhyde | Julian Hyde |
-| . | larsh | Lars Hofhansl |
-| Committers | rvs | Roman Shaposhnik |
-| . | daijy | Daniel Dai |
-| . | jfarrell | Jake Farrell |
-| . | larsh | Lars Hofhansl |
-| . | jhyde | Julian Hyde |
-| . | cnauroth | Chris Nauroth |
-| . | - | Pavel Stehule |
-| . | - | Amrish amrishs |
-| . | - | Nupur S |
-| . | atri | Atri Sharma |
-| . | - | Nishith Singhal |
-| . | - | Michael Down |
-| . | - | Vijayakumar Ramdoss |
-| . | - | Wang Albert |
-| . | - | Hans-Jurgen Schonig |
-| . | krispopat | Kris Popat |
-| . | - | Ayrton Gomesz |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-10-16 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name](http://www.apache.org/foundation/marks/naming.html) . See [PODLINGNAMESEARCH-87](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-87) . |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date (JIRA) | item |
-|-------------|------|
-| 2015-10-16 ( [INFRA-10605](https://issues.apache.org/jira/browse/INFRA-10605) ) | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-10-18 | Ask infrastructure to [set up and archive mailing lists](https://infra.apache.org/officers/mlreq/incubator) . |
-| 2015-10-16 ( [INFRA-10606](https://issues.apache.org/jira/browse/INFRA-10606) ) | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-10-15 ( [Confluence](https://cwiki.apache.org/confluence/display/CONCERTED/) ) | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-10-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. ( [CONCERTED-13](https://issues.apache.org/jira/browse/CONCERTED-13) ) | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/connectors-metacarta.md b/content/connectors-metacarta.md
new file mode 100644
index 0000000..f20e6fb
--- /dev/null
+++ b/content/connectors-metacarta.md
@@ -0,0 +1,62 @@
+Title: Lucene Connector Framework MetaCarta Codebase Intellectual Property (IP) Clearance Status
+
+
+Describe the incoming codebase, including whether it is a large set of patches, new functional modules, etc.
+
+
+
+- Which PMC will be responsible for the code: Lucene
+
+
+- Into which existing project/module: Lucene Connectors Framework (incubating as of 2/1/2010)
+
+
+- Officer or member managing donation: Grant Ingersoll
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-02-01 | See https://issues.apache.org/jira/browse/INCUBATOR-106. |
+
+MD5 or SHA1 sum for donated software: See https://issues.apache.org/jira/browse/INCUBATOR-106
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-02-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-02-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2010-02-01 | Check that all active committers have a signed CLA on record. |
+| 2010-02-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-02-10 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-02-10 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: 82CC9B39-BA44-42DA-A95D-CDD391CD53D5@apache.org on general@incubator.apache.org
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/cordova.md b/content/cordova.md
deleted file mode 100644
index b5c2c1c..0000000
--- a/content/cordova.md
+++ /dev/null
@@ -1,192 +0,0 @@
-Title: Apache Cordova (originally Callback)
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Cordova project graduated on 2012-10-17</span>
-
-
-Apache Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript.
-
-
- **NOTE:** On 2011-11-28 the project [decided](http://markmail.org/message/yxvf6yw7b4f42f6u) to rename itself from Callback to Cordova. Project resources (including this status page) are currently being updated to reflect this name change.
-
-
-
-- 2011-12-10 Callback/Cordova [accepted](http://markmail.org/message/6f7l3fjksjeem6li) to use the new Git repositories at Apache
-
-- 2011-11-28 Christian Grobmeier [steps down](http://markmail.org/message/qbfnsrjmib346nn3) as mentor
-
-- 2011-11-28 Project [decides](http://markmail.org/message/yxvf6yw7b4f42f6u) to change its name from Callback to Cordova.
-
-- 2011-10-21 [github.com/callback](https://github.com/callback) for use until transition to Apache infrastructure is complete
-
-- 2011-10-22 All committer accounts requested.
-
-- 2011-10-18 Mailing lists [created](https://issues.apache.org/jira/browse/INFRA-4043) 
-
-- 2011-10-15 Project enters incubation.
-
-
--  [Proposal](http://wiki.apache.org/incubator/CallbackProposal) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://cordova.apache.org](http://cordova.apache.org)  |
-| . | wiki | . |
-| Mailing list | dev |  `callback-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `callback-commits`  `@`  `incubator.apache.org`  |
-| . | private |  `callback-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/CB](https://issues.apache.org/jira/browse/CB)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-cordova-*.git](https://gitbox.apache.org/repos/asf/)  |
-| . | SVN |  [https://svn.apache.org/repos/asf/incubator/callback/](https://svn.apache.org/repos/asf/incubator/callback/)  |
-| Mentors | jukka | Jukka Zitting |
-| . | gianugo | Gianugo Rabellino |
-| . | rgardler | Ross Gardler |
-| . | asavory | Andrew Savory |
-| Emeritus mentor | grobmeier | Christian Grobmeier |
-| Committers | abub | Abu Obeida Bakhach, Microsoft, (Windows Phone 7) ( abu.obeida at microsoft.com) |
-| . | agrieve | Andrew Grieve, Google (iOS / Android) ( agrieve at google.com) |
-| . | anis | Anis Kadri (anis.kadri at gmail.com) |
-| . | becka11y | Becky Gibson, IBM (iOS) |
-| . | braden | Braden Shepherdson, Google (iOS / Android) ( braden at chromium.org) |
-| . | goya | Brett Rudd (brett.rudd at gmail.com) |
-| . | brian | Brian LeRoux (b at brian.io) |
-| . | bcurtis | Bryce Curtis, IBM |
-| . | doc | Dr. David Charles Johnson (dave.c.johnson at gmail.com) |
-| . | dkormalev | Denis Kormalev, ICS (QT) ( dkormalev at ics.com) |
-| . | deedubbu | Drew Walters, IBM (BlackBerry) |
-| . | filmaj | Fil Maj (maj.fil at gmail.com) |
-| . | gtanner | Gord Tanner, RIM (BlackBerry/Playbook/JavaScript) ( gtanner at gmail.com) |
-| . | hermwong | Herm Wong |
-| . | tranter | Jeff Tranter, ICS (QT) ( jtranter at ics.com) |
-| . | purplecabbage | Jesse MacFadyen (jesse.macfadyen at gmail.com) |
-| . | bowserj | Joe Bowser (bowserj at gmail.com) |
-| . | jtyberg | Justin Tyberg, IBM (BlackBerry) |
-| . | longwei | Longwei Su, ICS (QT) ( lsu at ics.com) |
-| . | mwbrooks | Michael Brooks (michael at michaelbrooks.ca) |
-| . | mmocny | Michal Mocny, Google (iOS / Android) ( mmocny at google.com) |
-| . | pmuellr | Patrick Mueller, IBM (Tooling, Weinre) |
-| . | wildabeast | Ryan Willoughby (rywillo at gmail.com) |
-| . | sgrebnov | Sergey Grebnov, Microsoft (Windows Phone 7) ( sergeyg at bsquare.com) |
-| . | shazron | Shazron Abdullah (shazron at gmail.com) |
-| . | macdonst | Simon MacDonald, IBM (Android) |
-| . | steven | Steven Gill, Adobe ( steveng at adobe.com ) |
-| . | timkim | Tim Kim, Adobe (BlackBerry) ( timk at adobe.com) |
-| . | viras | Wolfgang Koller, (viras at users.sourceforge.net) |
-| . | yohei | Yohei Shimomae, Adobe (Design) ( yohei at adobe.com) |
-
-
--  [January 2012](http://wiki.apache.org/incubator/January2012) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-10-15 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-10-15 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-12-10 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-10-18 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-10-18 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012-01-09 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ongoing | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-10-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-10-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-10-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-10-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-10-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-09-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-09-14 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-09-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-10-22 | Check that all active committers have submitted a contributors agreement. |
-| 2011-10-24 | Add all active committers in the STATUS file. |
-| 2011-10-24 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/corinthia.md b/content/corinthia.md
index 00e369c..f3dcaa6 100644
--- a/content/corinthia.md
+++ b/content/corinthia.md
@@ -1,188 +1,62 @@
-Title: Corinthia Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: XYZ Codebase Intellectual Property (IP) Clearance Status
 
 
-Corinthia is a toolkit/application for converting between and editing common office file formats, with an initial focus on word processing. It is designed to cater for multiple classes of platforms - desktop, web, and mobile - and relies heavily on web technologies such as HTML, CSS, and JavaScript for representing and manipulating documents. The toolkit is small, portable, and flexible, with minimal dependencies. The target audience is developers wishing to include office viewing, conversion, and editing functionality into their applications.
-
-
-<span class="retired">The Corinthia podling retired on 2015-11-19.</span>
+The codebase is the whole corinthia project, granted by Peter Kelly (pmkelly@) and Louis Suarez-Potts (ccla filed and accepted).
 
 
 
-- 2014-12-08 Project enters incubation.
+- The Corinthia PPMC will be responsible for the code as it is the corinthia project
 
 
-- 2014-12-23 Project send IP-Clearance to general@i.a.o for comments.
+- Jan Iversen is managing the IP Clearance, CCLA was accepted by the secratary and controlled by Jan Iversen
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
-- 2014-12-31 We welcome Andrea Pescetti as Committer and PPMC.
-
-
-- 2015-01-04 Transfer to ASF infrastructure completed.
-
-
-- 2015-01-17 We welcome Dave Fisher as Committer and PPMC.
-
-
-- 2015-01-30 Name search completed and approved by trademarks@.
-
-
-- 2015-03-03 We welcome Gabriela Gibson as Committer and PPMC.
-
-
-- 2015-04-02 We welcome Franz de Copenhague as Committer and PPMC.
-
-
-- 2015-06-16 We welcome Ian Cunningham as Committer and PPMC.
-
-
-- 2015-08-28 Release 0.1 made available to the mirrors.
-
-
-- 2015-08-31 We welcome Gavin Mcdonald as Committer and PPMC.
-
-
-- 2015-09-02 Jani resigned as mentor
-
-
-- 2015-09-05 Multiple developers left the project
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://Corinthia.incubator.apache.org/](http://Corinthia.incubator.apache.org/)  |
-|  | wiki |  [https://cwiki.apache.org/confluence/display/Corinthia](https://cwiki.apache.org/confluence/display/Corinthia)  |
-| Mailing list | dev |  `dev`  `@`  `corinthia.incubator.apache.org`  |
-|  | commits |  `commits`  `@`  `corinthia.incubator.apache.org`  |
-|  | private |  `private`  `@`  `corinthia.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/COR](https://issues.apache.org/jira/browse/COR)  |
-| Source code | Project GIT |  [https://gitbox.apache.org/repos/asf/incubator-corinthia.git](https://gitbox.apache.org/repos/asf/incubator-corinthia.git)  |
-|  | GitHub mirror |  [https://github.com/apache/incubator-corinthia](https://github.com/apache/incubator-corinthia)  |
-| Mentors | humbedooh | Daniel Gruno |
-|  | wave | Dave Fisher |
-| Committers/PPMC | gmcdonald | Gavin Mcdonald |
-|  | orcmid | Dennis E. Hamilton |
-|  | pescetti | Andrea Pescetti |
-|  | svanteschubert | Svante Schubert |
-|  | wave | Dave Fisher |
-| Extra | buildbot | (waiting setup) |
-
-
-- 2015-01-05
-
-- 2015-02-05
-
-- 2015-03-05
-
-- 2015-06-05
-
-- 2015-09-02
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2015-01-30 | (approved) Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2014-12-13 | (none) If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2014-12-13 | (none) If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2014-12-17 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
+| 2014-12-23 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. (a full namesearch will be done later as part of the corinthia incubation process) |
 
-## Infrastructure {#Infrastructure}
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ). We have no checksum, Peter Kelly uploaded the software to our ASF Git repo, and made the initial commit, thereby verifying the origin.
 
-| date | item |
-|------|------|
-| 2014-12-16 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-12-15 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-12-19 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-12-17 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-01-04 | Migrate the project to our infrastructure (IP Clearance passed without comments). |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-12-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-12-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-12-13 | Tell Mentors to track progress in the file 'incubator/content/projects/corinthia.xml' |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2014-12-13 | (ccla filed and accepted) Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-12-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2014-12-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-12-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2014-12-23 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-12-23 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, or something with essentially the same terms. |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+Peter kelly (pmkelly@) is the original author of the code and has filed a CCLA.
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
 
 | date | item |
 |------|------|
-| 2014-12-13 | Check that all active committers have submitted a contributors agreement. |
-| 2014-12-13 | Add all active committers in the STATUS file. |
-| 2014-12-13 | (created) Ask root for the creation of committers' accounts on people.apache.org. |
+| 2014-12-23 | Check that all active committers have a signed CLA on record. |
+| 2014-12-23 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-12-23 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. (Corinthia uses a modified version of minizip, which has a non acceptable license, project has been told to replace with an alternative before first release) |
+| 2014-12-23 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-# Incubation {#Incubation}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
-These action items have to be checked for during the whole incubation process.
+Related VOTEs:
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
 
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **Yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **Yes** 
-
-- Are project decisions being made in public by the committers? **Yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ The code was part of the proposal for entering incubator, therefore no seperate vote has been done
diff --git a/content/cotton.md b/content/cotton.md
deleted file mode 100644
index 276ab6c..0000000
--- a/content/cotton.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Cotton project retired on 2015-12-01</span>
-
-
-The Apache Cotton Project is an Apache Mesos framework for running MySQL instances.
-
-
-
-- 2015-06-01 Project enters incubation.
-
-- 2015-06-01 Project namesearch submitted: [PODLINGNAMESEARCH-78](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-78) 
-
-- 2015-07-02 Project votes to be renamed Apache Cotton (incubating)
-
-- 2015-12-01 Project votes to be retired from the Apache Incubator
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://cotton.incubator.apache.org/](http://cotton.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `cotton.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `cotton.incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/cotton/](https://svn.apache.org/repos/asf/incubator/cotton/)  |
-| Mentors | jfarrell | Jake Farrell |
-| . | dlester | Dave Lester |
-| . | benh | Benjamin Hindman |
-| . | hsaputra | Henry Saputra |
-| Committers | . | . |
-| . | caniszczyk | Chris Aniszczyk |
-| . | vinodkone | Vinod Kone |
-| . | dlester | Dave Lester |
-| . | yan | Yan Xu |
-| . | jfarrell | Jake Farrell |
-| . | . | Tobi Knaup |
-| . | . | Sunil Shah |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-06-01 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-06-01 | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/couchdb-bigcouch.md b/content/couchdb-bigcouch.md
new file mode 100644
index 0000000..d04db9d
--- /dev/null
+++ b/content/couchdb-bigcouch.md
@@ -0,0 +1,62 @@
+Title: CouchDB BigCouch Codebase Intellectual Property (IP) Clearance Status
+
+
+Cloudant have built a clustered version of CouchDB and are donating it to the CouchDB project
+
+
+This consists of several new modules and significant improvements and fixes to the core CouchDB code
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- It will be incorporated into a the CouchDB git repository for integration.
+
+
+- Officer or member managing donation: Robert Newson (rnewson@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-05-07 | The code is tagged at https://github.com/rnewson/couchdb/tree/nebraska-merge-candidate A zipfile is provided at http://people.apache.org/~rnewson/dist/nebraska-merge-candidate.zip Signature of zipfile (SHA-256): 3ef220ea217c3ba96a142fbb30e7ba13e511193fa4664bf5c4dcac79e6549389 Signature of zipfile (SHA-1): c033bbf01b79b4e4b27b4d6b5a6e603a14ab1713 |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-06-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-06-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. Headers have been updated at https://github.com/rnewson/couchdb/tree/nebraska-merge |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2013-06-23 | Check that all active committers have a signed CLA on record. |
+| 2013-06-23 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-06-23 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-06-23 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: http://mail-archives.apache.org/mod_mbox/couchdb-dev/201305.mbox/%3CCABvT1DEChrKbNV0Lx%2ByX7Fir8UqzWvJYfrhv6K7J9vDvsY6CUQ%40mail.gmail.com%3E
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/couchdb-bigcouch2.md b/content/couchdb-bigcouch2.md
new file mode 100644
index 0000000..dc3ebee
--- /dev/null
+++ b/content/couchdb-bigcouch2.md
@@ -0,0 +1,61 @@
+Title: CouchDB BigCouch Updates Intellectual Property (IP) Clearance Status
+
+
+Cloudant have enhanced BigCouch and are donating those enhancements to the CouchDB project. Cloudant will switch active development to ASF infrastructure after this donation, we do not intend to remain outside of the normal ASF contribution workflow after this update.
+
+
+This consists of several new erlang applications and significant improvements and fixes to the core CouchDB code
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- It will be incorporated into the CouchDB git repositories.
+
+
+- Officer or member managing donation: Robert Newson (rnewson@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-07-17 | The donation is stored at https://people.apache.org/~rnewson/dist/windsor-merge.tar.gz in the form of a series of patch files to be replayed against ASF git repositories. A GPG signature is stored at https://people.apache.org/~rnewson/dist/windsor-merge.tar.gz.sig Signature of tarball (SHA-256): 703334acfd5facfb2150ce4366fe5a47b464d040c648064912de86468c157f23 Signature of tarball (SHA-1): 499b876918c2bd275dcdcdd173bacb814a535d76 |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-07-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-07-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. The series of patches includes patches to apply ASF copyright headers to all relevant files. |
+
+Identify name recorded for software grant: _grant via Schedule B of Cloudant's updated CCLA; https://svn.apache.org/repos/private/documents/cclas/cloudant-an-ibm-company.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Cloudant, an IBM company
+
+
+| date | item |
+|------|------|
+| 2014-07-17 | Check that all active committers have a signed CLA on record. |
+| 2014-07-17 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-07-17 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-07-17 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: PASSED
+
+
+
+- IP clearance vote: https://mail-archives.apache.org/mod_mbox/incubator-general/201407.mbox/%3CBF1A4435-BDFD-45EB-B76D-FA44ABC1BCB0@apache.org%3E
+
+- CouchDB PMC acceptance vote: https://mail-archives.apache.org/mod_mbox/couchdb-dev/201407.mbox/%3CF224C2F8-1771-4D56-B2E8-15A1B66E74C9@apache.org%3E
diff --git a/content/couchdb-couchperuser.md b/content/couchdb-couchperuser.md
new file mode 100644
index 0000000..a570776
--- /dev/null
+++ b/content/couchdb-couchperuser.md
@@ -0,0 +1,55 @@
+Title: CouchDB couchperuser Codebase Intellectual Property (IP) Clearance Status
+
+&gt;
+Bob Ippolito has built a CouchDB plugin that he is donating to the CouchDB project. It consists of a CouchDB module that ensures that a private per-user database exists for each user that is managed by CouchDB.
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- The code will be integrated into the CouchDB codebase. It will get pulled into the build from a separate git repository hosted at the ASF, example naming: couchdb-couchperuser
+
+
+- Officer or member managing donation: Jan Lehnardt (jan@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2015-04-29 | A tarball is provided at https://people.apache.org/~klaus_trainer/dist/ip-clearance/ |
+|------------|--------------------------------------------------------------------------------------|
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-04-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-04-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Bob Ippolito
+
+
+| date | item |
+|------|------|
+| 2015-04-30 | Check that all active committers have a signed CLA on record. |
+| 2015-04-30 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-04-30 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-04-30 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://mail-archives.apache.org/mod_mbox/couchdb-dev/201503.mbox/%3CCAJ1bcfFJfP=v3VLsZJNDobAv7gNgP82S=XeEgU2rO50tahNDBg@mail.gmail.com%3E The vote passed with 4 +1 votes
diff --git a/content/couchdb-docker.md b/content/couchdb-docker.md
new file mode 100644
index 0000000..7ed4bf1
--- /dev/null
+++ b/content/couchdb-docker.md
@@ -0,0 +1,55 @@
+Title: CouchDB Docker Codebase Intellectual Property (IP) Clearance Status
+
+
+Clemens Stolle is maintaining a Dockerfile for CouchDB.
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- The code will be integrated into the CouchDB codebase. It will get pulled into the build from a separate git repository hosted at the ASF, example naming: couchdb-docker
+
+
+- Officer or member managing donation: Jan Lehnardt (jan@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2015-06-20 | A tarball is provided at http://people.apache.org/~jan/docker-couchdb-master-c7f8b662.zip |
+|------------|-------------------------------------------------------------------------------------------|
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-06-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-06-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Clemens Stolle via ICLA.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Clemens Stolle
+
+
+| date | item |
+|------|------|
+| 2015-06-20 | Check that all active committers have a signed CLA on record. |
+| 2015-06-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-06-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-06-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://markmail.org/message/iaw4l6fxqiaktilo The vote passed with 5 +1 votes and 1 +0 vote.
diff --git a/content/couchdb-docs.md b/content/couchdb-docs.md
new file mode 100644
index 0000000..2fc64fd
--- /dev/null
+++ b/content/couchdb-docs.md
@@ -0,0 +1,61 @@
+Title: Apache CouchDB Codebase Intellectual Property (IP) Clearance Status
+
+
+Couchbase has provided a significant body of XML-based documentation in DocBook format, along with custom scripts and libraries to manage and produce it in mulitple export formats.
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- It will be incorporated into a git branch for integration, and subsequently merged into the master codebase and future releases.
+
+
+- Officer or member managing donation: Noah Slater
+
+ _Completed tasks are shown by the completion date (2012-09-05)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2012-08-13 | Details recorded in https://issues.apache.org/jira/browse/COUCHDB-1523 and reference import at http://people.apache.org/~dch/import/couchdb-api-docs.tar.gz MD5: 24d6e663afb99c4987b943dcfa6ca0fe |
+| 2012-08-13 | No names/trademarks are applicable. |
+| 2012-09-05 | Commits cleaned up in [this branch](https://github.com/dch/couchdb/commits/merge_docs/asf) prior to import into ASF. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2012-09-05 | Done. Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2012-09-06 | Done. Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+
+Identify name recorded for software grant: _couchdb-api-docs.tar.gz as referenced in COUCHDB-1523_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Couchbase, inc._ 
+ _For individuals, use the name as recorded on the committers page_ 
+| date | item |
+|------|------|
+| 2012-09-13 | n/a. Check that all active committers have a signed CLA on record. |
+| 2012-09-13 | n/a. Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2012-09-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. Confirmed for CC-3.0 with [legal-discuss@](http://mail-archives.apache.org/mod_mbox/www-legal-discuss/201208.mbox/%3CCAHZBNKbXseEty8dYNEiBSnLNndKqfXEg8MW6PDhLF89CScNR7A@mail.gmail.com%3E)  |
+| 2012-09-13 | Done. Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. As above, for CC-3.0 |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
+
+
+
+-  [CouchDB dev@ list](http://mail-archives.apache.org/mod_mbox/couchdb-dev/201209.mbox/%3CCAHZBNKYnRcbO405qBp8rgDJ4BKw2=GX6v72y9JQFwageCXUpuQ@mail.gmail.com%3E) 
diff --git a/content/couchdb-fauxton.md b/content/couchdb-fauxton.md
new file mode 100644
index 0000000..eca1d53
--- /dev/null
+++ b/content/couchdb-fauxton.md
@@ -0,0 +1,61 @@
+Title: Apache CouchDB Codebase Intellectual Property (IP) Clearance Status
+
+
+A group from the CouchDB user community has provided a significant amount of code for a new administration interface for CouchDB.
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- It will be incorporated into a the CouchDB git repository for integration.
+
+
+- Officer or member managing donation: Jan Lehnardt (jan@apache.org)
+
+ _Completed tasks are shown by the completion date (2013-02-06)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-02-06 | Details recorded in https://issues.apache.org/jira/browse/COUCHDB-1664. The code is at https://github.com/cloudant-labs/couchdb/commits/fauxton commit c31fa4bfb3448b04c9e5f27a656858e81d476e80 A zipfile is provided at http://people.apache.org/~jan/ip/couchdb-fauxton-c31fa4bfb3448b04c9e5f27a656858e81d476e80.zip Signature: http://people.apache.org/~jan/ip/couchdb-fauxton-c31fa4bfb3448b04c9e5f27a656858e81d476e80.zip.sha |
+| 2013-01-31 | No names/trademarks are applicable. |
+| 2013-01-31 | Contributors to the code were asked to send in a CLA as per http://incubator.apache.org/ip-clearance/ip-clearance-template.html |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-02-06 | Done. Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2013-02-06 | Done. Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+
+Identify name recorded for software grant: _couchdb-fauxton-c31fa4bfb3448b04c9e5f27a656858e81d476e80.zip_ Details recorded in https://issues.apache.org/jira/browse/COUCHDB-1664. The code is at https://github.com/cloudant-labs/couchdb/commits/fauxton commit c31fa4bfb3448b04c9e5f27a656858e81d476e80 A zipfile is provided at http://people.apache.org/~jan/ip/couchdb-fauxton-c31fa4bfb3448b04c9e5f27a656858e81d476e80.zip Signature: http://people.apache.org/~jan/ip/couchdb-fauxton-c31fa4bfb3448b04c9e5f27a656858e81d476e80.zip.sha
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+ _For individuals, use the name as recorded on the committers page_ 
+
+-  _Russell Branca_  _Simon Metson_  _Mike Wallace_  _Garren Smith_  _Volker Mische_ 
+
+| date | item |
+|------|------|
+| 2013-02-06 | Done. Check that all active committers have a signed CLA on record. |
+| 2013-02-06 | Done. Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-02-06 | Done. Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-02-06 | Done. Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
+
+
+
+-  [CouchDB dev@ list](http://mail-archives.apache.org/mod_mbox/couchdb-dev/201302.mbox/%3C42ED9655-7603-4ABA-AC4B-A16266461C05@apache.org%3E) 
diff --git a/content/couchdb-mango.md b/content/couchdb-mango.md
new file mode 100644
index 0000000..2389b81
--- /dev/null
+++ b/content/couchdb-mango.md
@@ -0,0 +1,55 @@
+Title: CouchDB Mango Codebase Intellectual Property (IP) Clearance Status
+
+
+IBM Corporation have built a MongoDB API Layer for CouchDB and are donating it to the CouchDB project. This consists of of a module that exposes a set of actions that are similar to what MongoDB exposes.
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- The code will be integrated into the CouchDB codebase. It will get pulled into the build from a separate git repository hosted at the ASF, example naming: couchdb-mango
+
+
+- Officer or member managing donation: Jan Lehnardt (jan@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2015-01-25 | A tarball is provided at https://people.apache.org/~robertkowalski/dist/ip-clearance/ |
+|------------|---------------------------------------------------------------------------------------|
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-01-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-01-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: grant via Schedule B of Cloudant's updated CCLA in cclas.txt
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: IBM Corporation
+
+
+| date | item |
+|------|------|
+| 2015-01-26 | Check that all active committers have a signed CLA on record. |
+| 2015-01-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-01-26 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-01-26 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://mail-archives.apache.org/mod_mbox/couchdb-dev/201412.mbox/%3CCAJ1bcfHjk9appcNoHboC%3Du3c9Opz8fPKAa1QvM5yDbuD4L_dzg%40mail.gmail.com%3E The vote passed with 6 +1 votes
diff --git a/content/couchdb-nano.md b/content/couchdb-nano.md
new file mode 100644
index 0000000..6a2afc3
--- /dev/null
+++ b/content/couchdb-nano.md
@@ -0,0 +1,62 @@
+Title: Nano Codebase Intellectual Property (IP) Clearance Status
+
+
+Nano is a minimalistic client for CouchDB written in JavaScript
+
+
+
+- The CouchDB PMC is responsible for this code/documentation.
+
+
+- The code will get part of the CouchDB project. It will need a separate git repository hosted at the ASF, example naming: couchdb-nano
+
+
+- Officer or member managing donation: Jan Lehnardt (jan@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2015-05-03 | A tarball is provided at https://dl.dropboxusercontent.com/u/1809262/nano-asf/nano.tar.gz |
+|------------|-------------------------------------------------------------------------------------------|
+| 2015-05-01 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: 99a0922500f914407a9fb5fbf0b0984a (md5).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-06-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-05-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Nuno Job
+
+| date | item |
+|------|------|
+| 2015-05-01 | Check that all active committers have a signed CLA on record. |
+| 2015-05-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-05-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-05-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://mail-archives.apache.org/mod_mbox/couchdb-dev/201504.mbox/%3CCAJ1bcfEkK%2BP6O06dWe3C0FzB0J%2BfU4Mg3ZKnXv65m4%3D-DRY7ng%40mail.gmail.com%3E The vote passed with +5 votes
diff --git a/content/couchdb-rcouch.md b/content/couchdb-rcouch.md
new file mode 100644
index 0000000..cd68935
--- /dev/null
+++ b/content/couchdb-rcouch.md
@@ -0,0 +1,59 @@
+Title: Rcouch Codebase Intellectual Property (IP) Clearance Status
+
+
+Rcouch is an alternative distribution of Apache CouchDB based the 1.3 release. Rcouch is to provides a simple way to customize CouchDB to your needs and easily include it in your own architecture. With rcouch can embed couchdb in your Erlang Application or add your own extensions to it and deploy a static release on multiple platforms. Rcouch also propose some unique features. The code given to Apache CouchDB come in the form of patches adding rcouch features to Apache CouchDB.
+
+
+
+- The CouchDB PMC is responsible of the code.
+
+
+- The code will be merged into the CouchDB project
+
+
+- Officer or member managing donation: Jan Lehnardt (jan@apache.org)
+
+ _Completed tasks are shown by their completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-06-25 | Full Archive: http://dl.refuge.io/rcouch-0.7.1.tar.gz |
+
+MD5 or SHA1 sum for donated software: 332b09635d9ca55122ee02903984808f183a4674 (http://dl.refuge.io/rcouch-0.7.1.tar.gz).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-10-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-10-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2013-06-25 | Benoit Chesneau |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- 2013-07-01: http://mail-archives.apache.org/mod_mbox/couchdb-dev/201307.mbox/%3CCAJNb-9ofSPVFNN_q3LFRApa5ULZ21suKJ3kTM1KQfvZZ1js2oQ%40mail.gmail.com%3E The votes passed with 12 +1
diff --git a/content/couchdb.md b/content/couchdb.md
deleted file mode 100644
index 78c155e..0000000
--- a/content/couchdb.md
+++ /dev/null
@@ -1,162 +0,0 @@
-Title: CouchDB Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The CouchDB project graduated on 2008-11-19</span>
-
-
-The CouchDB Project is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API.
-
-
-
-- 2008-09-14 New committer: Chris Anderson
-
-
-- link to the main website (TBD)
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/couchdb/](http://incubator.apache.org/couchdb/)  |
-| . | wiki |  [http://wiki.apache.org/couchdb/](http://wiki.apache.org/couchdb/)  |
-| Mailing list | dev |  `couchdb-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `couchdb-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | jira |  [https://issues.apache.org/jira/browse/COUCHDB](https://issues.apache.org/jira/browse/COUCHDB)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/couchdb/](http://svn.apache.org/repos/asf/incubator/couchdb/)  |
-| Mentors | twl | Ted Leung |
-| . | gianugo | Gianugo Rabellino |
-| . | jim | Jim Jagielski |
-| . | berndf | Bernd Fondermann |
-| Committers | . | . |
-| . | . | Damien Katz |
-| . | . | Jan Lehnardt |
-| . | . | Christopher Lenz |
-| . | . | Sam Ruby |
-| . | . | Noah Slater |
-| . | . | J Chris Anderson |
-| Extra | . | . |
-
-
--  [April 2008](http://wiki.apache.org/incubator/April2008) 
-
--  [May 2008](http://wiki.apache.org/incubator/May2008) 
-
--  [August 2008](http://wiki.apache.org/incubator/August2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| N/A | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2008-02-18 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-02-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-02-18 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-03-31 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-02-27 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-03-31. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-04-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-04-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2008-04-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-02-20 | Check that all active committers have submitted a contributors agreement. |
-| 2008-11-10 | Add all active committers in the STATUS file. |
-| 2008-02-20 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-02-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-02-19 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-02-20 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-02-20 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/crail.md b/content/crail.md
deleted file mode 100644
index 74e6fd9..0000000
--- a/content/crail.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: Crail Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Crail is a storage platform for sharing performance critical data in distributed data processing jobs at very high speed.
-
-
-
-- 2017-11-01 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://crail.incubator.apache.org/](http://crail.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `crail.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `crail.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `crail.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `crail.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/CRAIL](https://issues.apache.org/jira/browse/CRAIL)  |
-| Source code | GIT |  [http://gitbox.apache.org/repos/asf/incubator-crail.git](http://gitbox.apache.org/repos/asf/incubator-crail.git)  |
-| Source code (website) | GIT |  [http://gitbox.apache.org/repos/asf/incubator-crail-website.git](http://gitbox.apache.org/repos/asf/incubator-crail-website.git)  |
-| Mentors | jhyde | Julian Hyde |
-| . | lresende | Luciano Resende |
-| . | rbircher | Raphael Bircher |
-| Committers | . | Patrick Stuedi |
-| . | atrivedi | Animesh Trivedi |
-| . | pepperjo | Jonas Pfefferle |
-| . |  | Bernard Metzler |
-| . | . | Michael Kaufmann |
-| . | asq | Adrian Schuepbach |
-| . | . | Patrick McArthur |
-| . | anakli | Ana Klimovic |
-| . | yuvaldeg | Yuval Degani |
-| . | . | Vu Pham |
-| Roster | Whimsy |  [Crail Roster](https://whimsy.apache.org/roster/ppmc/crail)  |
-
-
--  [Crail Board Reports](https://whimsy.apache.org/board/minutes/crail.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-11-29 | Request DNS (first step after creating podling status page) |
-| 2017-11-28 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2017-12-08 | Request [git repositories](https://reporeq.apache.org/)  |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2017-12-07 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| N/A | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-01-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-01-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-01-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/crunch.md b/content/crunch.md
deleted file mode 100644
index e4be27e..0000000
--- a/content/crunch.md
+++ /dev/null
@@ -1,177 +0,0 @@
-Title: Crunch Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Crunch project graduated on 2013-02-20</span>
-
-
-Crunch is a Java library for writing, testing, and running pipelines of MapReduce jobs on Apache Hadoop.
-
-
-
-- 2013-02-20 The ASF Board establishes the Apache Crunch Project
-
-- 2013-02-19 New release: 0.5.0-incubating
-
-- 2013-02-07 Successful graduation vote by the IPMC
-
-- 2012-11-18 New release: 0.4.0-incubating
-
-- 2012-09-27 New PPMC member: Matthias Friedrich
-
-- 2012-09-27 New committer: Kiyan Ahmadizadeh
-
-- 2012-09-27 New committer: Rahul Sharma
-
-- 2012-09-16 Website goes live
-
-- 2012-09-14 First release: 0.3.0-incubating
-
-- 2012-07-31 New committer: Matthias Friedrich
-
-- 2012-05-26 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/crunch/](http://incubator.apache.org/crunch/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/CRUNCH/Index](https://cwiki.apache.org/confluence/display/CRUNCH/Index)  |
-| Mailing list | dev |  `crunch-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | user |  `crunch-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `crunch-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/CRUNCH](https://issues.apache.org/jira/browse/CRUNCH)  |
-| Source code | GIT |  [http://gitbox.apache.org/repos/asf/incubator-crunch.git](http://gitbox.apache.org/repos/asf?p=incubator-crunch.git)  |
-| Mentors | acmurthy | Arun Murthy |
-| . | phunt | Patrick Hunt |
-| . | tomwhite | Tom White |
-| Committers | brock | Brock Noland |
-| . | jwills | Josh Wills |
-| . | greid | Gabriel Reid |
-| . | tomwhite | Tom White |
-| . | tzolov | Christian Tzolov |
-| . | robertchu | Robert Chu |
-| . | vinodkv | Vinod Kumar Vavilapalli |
-| . | mafr | Matthias Friedrich |
-| . | rsharma | Rahul Sharma |
-| . | kiyan | Kiyan Ahmadizadeh |
-
-
--  [February 2013](http://wiki.apache.org/incubator/February2013) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012) 
-
--  [July 2012](http://wiki.apache.org/incubator/July2012) 
-
--  [August 2012](http://wiki.apache.org/incubator/August2012) 
-
--  [November 2012](http://wiki.apache.org/incubator/November2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-01-16 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-06-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-06-05 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-06-07 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012-06-07 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-06-14 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-05-27 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-06-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-06-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-06-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-07-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-07-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-08-07 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-08-07 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-06-10 | Check that all active committers have submitted a contributors agreement. |
-| 2012-08-01 | Add all active committers in the STATUS file. |
-| 2012-06-04 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ctakes.md b/content/ctakes.md
deleted file mode 100644
index fa5a18b..0000000
--- a/content/ctakes.md
+++ /dev/null
@@ -1,169 +0,0 @@
-Title: Apache cTAKES Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The cTAKES project graduated on 2013-03-20</span>
-
-
-The cTAKES Project is an natural language processing tool for information extraction from electronic medical record clinical free-text.
-
-
-
-- 2013-03-30 Apache cTAKES graduates to a top-level project.
-
-- 2012-06-11 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ctakes/](http://incubator.apache.org/ctakes/)  |
-| . | wiki |  [https://cwiki.apache.org/CTAKES/ctakes.html](https://cwiki.apache.org/CTAKES/ctakes.html)  |
-| Mailing list | dev |  `ctakes-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `ctakes-commits`  `@`  `incubator.apache.org`  |
-| . | notifications |  `ctakes-notifications`  `@`  `incubator.apache.org`  |
-| . | user |  `ctakes-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | jira |  [https://issues.apache.org/jira/browse/CTAKES](https://issues.apache.org/jira/browse/CTAKES)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/ctakes/](https://svn.apache.org/repos/asf/incubator/ctakes/)  |
-| Mentors | gsingers | Grant Ingersoll |
-| . | mattmann | Chris Mattmann |
-| . | joern | Jörn Kottmann |
-| Committers | chenpei | Pei J Chen |
-| . | . | Sean Finan |
-| . | . | Guergana K. Savova |
-| . | james-masanz | James J Masanz |
-| . | dligach | Dmitriy Dligach |
-| . | mattcoarr | Matt Coarr |
-| . | spmurphy50 | Sean Patrick Murphy |
-| . | stevenbethard | Steven Bethard |
-| . | tmill | Tim Miller |
-| . | vkaggal | Vinod C Kaggal |
-| Extra | . | . |
-
-
--  [March2013](http://wiki.apache.org/incubator/March2013) 
-
--  [September2012](http://wiki.apache.org/incubator/September2012) 
-
--  [August2012](http://wiki.apache.org/incubator/August2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-03-20 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/N | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-03-20 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-06-21 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-06-19 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-06-17 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012-11-16 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-09-19 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-06-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-06-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-06-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-06-21 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-11-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. https://issues.apache.org/jira/browse/CTAKES-2 |
-| 2013-02-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. https://issues.apache.org/jira/browse/CTAKES-93 |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-01-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. https://issues.apache.org/jira/browse/CTAKES-137 |
-| 2013-01-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-06-21 | Check that all active committers have submitted a contributors agreement. |
-| 2012-06-21 | Add all active committers in the STATUS file. |
-| 2012-06-21 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/curator.md b/content/curator.md
deleted file mode 100644
index 30ff34a..0000000
--- a/content/curator.md
+++ /dev/null
@@ -1,166 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Curator project graduated on 2013-09-01</span>
-
-
-Curator is a set of Java libraries that make using Apache ZooKeeper much easier. While ZooKeeper comes bundled with a Java client, using the client is non-trivial and error prone. It consists of three components that build on each other. Curator Client is a replacement for the bundled ZooKeeper class that takes care of some low-level housekeeping and provides some useful utilities. Curator Framework is a high-level API that greatly simplifies using ZooKeeper. It adds many features that build on ZooKeeper and handles the complexity of managing connections to the ZooKeeper cluster and retrying operations. Curator Recipes consists of implementations of some of the common ZooKeeper "recipes". Additionally, Curator Test is included which includes utilities to help with unit testing ZooKeeper-based applications.
-
-
-
-- 2013-09-13 Apache Curator exits incubation.
-
-- 2013-08-08 Apache Curator 2.2.0-incubating released.
-
-- 2013-07-13 Iannois Canellos added as a new committer.
-
-- 2013-07-02 Apache Curator 2.1.0-incubating released.
-
-- 2013-06-15 Eric Tschetter added as a new committer.
-
-- 2013-05-31 Apache Curator 2.0.1-incubating released.
-
-- 2013-05-09 Apache Curator 2.0.0-incubating released.
-
-- 2013-05-01 Vote on initial release commences.
-
-- 2013-03-11 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://curator.incubator.apache.org](http://curator.incubator.apache.org)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/CURATOR](https://cwiki.apache.org/confluence/display/CURATOR)  |
-| Mailing list | dev |  `dev`  `@`  `curator.incubator.apache.org`  |
-| . | user |  `user`  `@`  `curator.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `curator.incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/CURATOR](http://issues.apache.org/jira/browse/CURATOR)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf?p=incubator-curator.git](https://gitbox.apache.org/repos/asf?p=incubator-curator.git)  |
-| Mentors | phunt | Patrick Hunt |
-| . | mahadev | Mahadev Konar |
-| . | lresende | Luciano Resende |
-| . | enis | Enis Söztutar |
-| Committers | randgalt | Jordan Zimmerman |
-| . | zarfide | Jay Zarfoss |
-| . | cheddar | Eric Tschetter |
-| . | iocanel | Ioannis Canellos |
-
-
--  [July 2013](http://wiki.apache.org/incubator/July2013) 
-
--  [June 2013](http://wiki.apache.org/incubator/June2013) 
-
--  [May 2013](http://wiki.apache.org/incubator/May2013) 
-
--  [April 2013](http://wiki.apache.org/incubator/April2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-05-09 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2013-05-09 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-05-09 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-03-26 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-03-21 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-03-21 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-03-25 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-03-26 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-03-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-03-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-03-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-03-21 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-03-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-03-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-05-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-05-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-05-01 | Check that all active committers have submitted a contributors agreement. |
-| 2013-05-01 | Add all active committers in the STATUS file. |
-| 2013-05-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/cxf-wsdl2js.md b/content/cxf-wsdl2js.md
new file mode 100644
index 0000000..a1a5119
--- /dev/null
+++ b/content/cxf-wsdl2js.md
@@ -0,0 +1,62 @@
+Title: CXF (incubator) Wsdl2JS Codebase Intellectual Property (IP) Clearance Status
+
+
+This is a new tool for Apache CXF that consists of Java source code that uses the same WSDL library that CXF already uses and generates Javascript code that targets some JavaScript utility functions that work in Firefox and IE (and probably others).
+
+
+
+- Which PMC will be responsible for the code: Incubator (Apache CXF)
+
+
+- Into which existing project/module: CXF
+
+
+- Officer or member managing donation: James Strachan
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| NA | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: As found attached to [CXF-812](https://issues.apache.org/jira/browse/CXF-812) <br>MD5: 840ef4093ddb5d5be8444c1972dfdf33 grant.jar</br><br>SHA1: b7cb1837e145634812ef9c3f94b9467b6ef43a83 grant.jar</br>
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-09-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-10-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Basis Technology Corp.
+
+
+| date | item |
+|------|------|
+| ....-..-.. | Check that all active committers have a signed CLA on record. |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-10-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-10-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
+
+ [Vote Thread](http://www.nabble.com/-VOTE--Accept-the-wsdl2js-stuff-donated-by-Basis-Technology-tf4193016.html) 
+
diff --git a/content/cxf-wseventing.md b/content/cxf-wseventing.md
new file mode 100644
index 0000000..18a6723
--- /dev/null
+++ b/content/cxf-wseventing.md
@@ -0,0 +1,62 @@
+Title: CXF WS-Eventing Service Intellectual Property (IP) Clearance Status
+
+
+This donation is to add a WS-Eventing service to Apache CXF. This service implements the WS-Eventing specification at http://www.w3.org/TR/ws-eventing/ and was done as part of Jan Martiska's masters thesis. WS-Eventing, as the name suggests, introduces a mechanism how to notify clients about events, that have occurred somewhere. You can for example publish a service, which watches product prices and notifies subscribed clients when there is an interesting sale, or the price of a product simply goes under a chosen value.
+
+
+
+- Which PMC will be responsible for the code: Apache CXF
+
+
+- Into which existing project/module: Apache CXF
+
+
+- Officer or member managing donation: Daniel Kulp
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-05-20 | https://issues.apache.org/jira/browse/CXF-5023 - https://issues.apache.org/jira/secure/attachment/12583805/wseventing.patch |
+
+MD5 (wseventing.patch) - feab399c89044762d5759a25c26057a7
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-05-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-05-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2013-05-23 | Check that all active committers have a signed CLA on record. |
+| 2013-05-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-05-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-05-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: http://mail-archives.apache.org/mod_mbox/incubator-general/201305.mbox/%3CC161B9EF-F2A8-4DE5-BCB0-58A93174B3E8%40apache.org%3E
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/cxf-xkms.md b/content/cxf-xkms.md
new file mode 100644
index 0000000..8f9160c
--- /dev/null
+++ b/content/cxf-xkms.md
@@ -0,0 +1,62 @@
+Title: CXF XKMS Service Intellectual Property (IP) Clearance Status
+
+
+XKMS will be contributed as a service (like STS and WS-Discovery) providing standardized access to central public key infrastructure (PKI) including lookup, validation, registration, reissuing and revocation of public keys. XKMS will help users to manage their certificates centrally instead storing them into local keystores, that are best practice for middle/large service landscapes.
+
+
+
+- Which PMC will be responsible for the code: Apache CXF
+
+
+- Into which existing project/module: Apache CXF
+
+
+- Officer or member managing donation: Daniel Kulp
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-05-13 | https://issues.apache.org/jira/browse/CXF-5001 - https://issues.apache.org/jira/secure/attachment/12581888/xkms.patch |
+
+MD5 (xkms.patch) - afddc057b0f0fc33b08f0c04da6cf0af
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-05-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-05-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2013-05-13 | Check that all active committers have a signed CLA on record. |
+| 2013-05-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-05-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-05-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: [http://mail-archives.apache.org/mod_mbox/incubator-general/201305.mbox/%3C69ECE6AE-EC80-42C8-9672-0B83C384B82E%40apache.org%3E](http://mail-archives.apache.org/mod_mbox/incubator-general/201305.mbox/%3C69ECE6AE-EC80-42C8-9672-0B83C384B82E%40apache.org%3E) 
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/cxf.md b/content/cxf.md
deleted file mode 100644
index c853c2a..0000000
--- a/content/cxf.md
+++ /dev/null
@@ -1,187 +0,0 @@
-Title: CXF Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look at the [project website](http://incubator.apache.org/cxf) .
-
-
-<span class="graduated">The CXF project graduated on 2008-04-16</span>
-
-
-CXF is a merging of the Objectweb Celtix project and the Codehaus XFire project. The goal is to combine the best concepts from the two projects and create an enterprise quality framework work for creating services. CXF will allow developers to use a variety of programming models, including JAX-WS, POJO, and Javascript, to develop services. The resulting services will have a pluggable binding and transport mechanism which enables a service to use more than SOAP/HTTP.
-
-
-
-- 2008-04-16 CXF Graduates to a Top Level Project!
-
-- 2008-02-22 [Bharath Ganesh granted commit karma](http://www.nabble.com/-VOTE--Bharath-Ganesh-for-committer....-to15511330.html#a15511330) 
-
-- 2008-02-04 [Several new PPMC members added](http://www.nabble.com/Welcome-our-newest-PPMC-members!-to15282625.html#a15282625) 
-
-- 2008-01-25 [Apache CXF 2.0.4-incubator Released.](http://www.nabble.com/-ANNOUNCE--Apache-CXF-2.0.4-incubator-is-released!-to15168742.html#a15183587) 
-
-- 2007-12-10 [Vote to accept Yoko resolution proposal passed.](http://www.nabble.com/-PROPOSAL--Migrate-Project-Yoko-from-Incubator-to-Geronimo---CXF-to14094649.html#a14260377) 
-
-- 2007-11-11 [Apache CXF 2.0.3-incubator Released.](http://www.nabble.com/-ANNOUNCE--Apache-CXF-2.0.3-incubator-is-released!-to13748640.html#a13748640) 
-
-- 2007-09-27 [Benson Margulies granted commit karma](http://www.nabble.com/-VOTE--Benson-Margulies-for-committer-to12822177.html#a12822177) 
-
-- 2007-09-27 [Glen Mazza granted commit karma](http://www.nabble.com/-VOTE--Glen-Mazza-for-CXF-committer-to12821950.html#a12821950) 
-
-- 2007-09-25 [Apache CXF 2.0.2-incubator Released.](http://www.nabble.com/-ANNOUNCE--Apache-CXF-2.0.2-incubator-is-released!-to12892222.html#a12892222) 
-
-- 2007-08-14 [Apache CXF 2.0.1-incubator Released.](http://mail-archives.apache.org/mod_mbox/incubator-cxf-dev/200708.mbox/&lt;7b774c950708132131n772b44c3wd08fda939138e20d%40mail.gmail.com&gt;) 
-
-- 2007-07-03 [Apache CXF 2.0-incubator Released.](http://mail-archives.apache.org/mod_mbox/www-announce/200707.mbox/%3c200707041732.33163.dkulp@apache.org%3e) 
-
-- 2007-05-21 [Jeff Genender granted commit karma](http://www.nabble.com/-vote--Jeff-Genender-as-a-Committer-to10666109.html#a10666109) 
-
-- 2007-04-02 [Jarek Gawor granted commit karma](http://www.nabble.com/-vote--Jarek-Gawor-as-committer-to9702473.html#a9702473) 
-
-- 2007-02-01 [Unreal Jiang granted commit karma](http://www.nabble.com/-VOTE--Karma-for-Unreal-to8683350.html#a8775741) 
-
-- 2006-08-10 Project accepted for incubation in Apache.
-
-- 2006-07-10 Project proposed for incubation in Apache.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/cxf/](http://incubator.apache.org/cxf/)  |
-| Wiki | wiki |  [http://cwiki.apache.org/confluence/display/CXF](http://cwiki.apache.org/confluence/display/CXF)  |
-| Mailing list | dev | cxf-dev@incubator.apache.org |
-| Mailing list | users | cxf-user@incubator.apache.org |
-| Mailing list | commits | cxf-commits@incubator.apache.org |
-| Mailing list | issues (JIRA) | cxf-issues@incubator.apache.org |
-| Mailing list | notifications (Continuum) | cxf-notifications@incubator.apache.org |
-| Bug tracking | JIRA<br></br> |  [https://issues.apache.org/jira/browse/CXF](https://issues.apache.org/jira/browse/CXF)  |
-| Source code | SVN<br></br> |  [http://svn.apache.org/repos/asf/incubator/cxf/](http://svn.apache.org/repos/asf/incubator/cxf/)  |
-| Proposal | wiki |  [http://wiki.apache.org/incubator/CeltiXfireProposal](http://wiki.apache.org/incubator/CeltiXfireProposal) <br></br> |
-| Mentors |  | Jim Jagielski, James Strachan, Peter Royal |
-| Committers | ajaypaibir | Ajay Paibir |
-|  | bharath | Bharath Ganesh |
-|  | blin | Bozhong Lin |
-|  | bmargulies | Benson Margulies |
-|  | dandiep | Dan Diephouse |
-|  | dkulp | Daniel Kulp |
-|  | eglynn | Eoghan Glynn |
-|  | ema | Jim Ma |
-|  | ericjohnson | Eric Johnson |
-|  | ffang | Freeman Fang |
-|  | gawor | Jarek Gawor |
-|  | gmazza | Glen Mazza |
-|  | gnodet | Guillaume Nodet |
-|  | jgenender | Jeff Genender |
-|  | jim | Jim Jagielski |
-|  | jliu | Jervis Liu |
-|  | mmao | James Mao |
-|  | ningjiang | Willem Ning Jiang |
-|  | peterjones | Peter Jones |
-|  | seanoc | Sean O'Callaghan |
-|  | ulhasbhole | Ulhas Bhole |
-|  | unrealjiang | Unreal Jiang |
-
-
-- http://svn.apache.org/repos/asf/incubator/cxf/trunk/STATUS
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache. This is currently complete.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2005-11-30 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2005-12-07 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| Complete? | Item |
-|-----------|------|
-| Yes | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| Yes | Subscribe all Mentors on the pmc and general lists. |
-| Yes | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| Yes | Tell Mentors to track progress in the file 'incubator/projects/cxf.html' |
-
-## Copyright {#Copyright}
-
-| Complete? | Item |
-|-----------|------|
-| Yes | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| Yes | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| Complete? | Item |
-|-----------|------|
-| Yes | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| Yes | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| Complete? | Item |
-|-----------|------|
-| Yes | Check that all active committers have submitted a contributors agreement. |
-| Yes | Add all active committers in the STATUS file. |
-| Yes | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| Complete? | Item |
-|-----------|------|
-| Yes | Ask infrastructure to create source repository modules and grant the committers karma. |
-| Yes | Ask infrastructure to set up and archive Mailing lists. |
-| Yes | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| Yes | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **DONE** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **DONE** 
-
-- Are project decisions being made in public by the committers? **DONE** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **DONE** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **DONE** 
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to a new PMC, has the board voted to accept it?<br></br> **Yes**  [Announcement](http://www.nabble.com/CXF-has-graduated!-p16730373.html) 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?<br></br> **Yes**  [Vote Result](http://www.nabble.com/-RESULT---VOTE--Apache-CXF-Graduation-as-TLP-p16205376.html) passed with 20 +1 votes (13 binding) and no 0 or -1 votes.
diff --git a/content/daffodil.md b/content/daffodil.md
deleted file mode 100644
index af98a5e..0000000
--- a/content/daffodil.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This project graduated 2021-02-17
-
-
-Apache Daffodil is an implementation of the Data Format Description Language (DFDL) used to convert between fixed format data and XML/JSON.
-
-
-<span class="graduated">The Daffodil project graduated on 2021-02-17</span>
-
-
-
-- 2021-02-17 Project graduates from incubator to TLP.
-
-- 2017-08-27 Project enters incubation.
-
-
-- link to the main website - http://daffodil.apache.org
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://daffodil.incubator.apache.org/](http://daffodil.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `daffodil.apache.org`  |
-| . | users |  `users`  `@`  `daffodil.apache.org`  |
-| . | commits |  `commits`  `@`  `daffodil.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/projects/DAFFODIL](https://issues.apache.org/jira/projects/DAFFODIL)  |
-| Source code | Git |  [https://github.com/apache/incubator-daffodil](https://github.com/apache/daffodil)  |
-| Roster | Whimsy |  [Daffodil Roster](https://whimsy.apache.org/roster/pmc/daffodil)  |
-
-
--  [Daffodil Board Reports](https://whimsy.apache.org/board/minutes/daffodil.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) - PODLINGNAMESEARCH-147 |
-| 2017-08-27 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-08-27 | Request DNS (first step after creating podling status page) |
-| 2018-08-27 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2017-12-04 | Request [git repositories](https://reporeq.apache.org/) - INFRA-15423 |
-| 2017-11-02 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla) - INFRA-15376 |
-| 2017-10-17 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ) - INFRA-15263 |
-| 2017-11-02 | Migrate the project to our infrastructure. "Guesstimate" |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-09-07 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-09-07 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-08-27 | Tell Mentors to track progress in the file 'incubator/projects/daffodil.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-03-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2018-05-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-05-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-05-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-10-02 | Check that all active committers have submitted a contributors agreement. |
-| 2017-10-02 | Add all active committers in the relevant section above. |
-| 2017-10-02 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/datafu.md b/content/datafu.md
deleted file mode 100644
index 58ec52a..0000000
--- a/content/datafu.md
+++ /dev/null
@@ -1,196 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The DataFu project graduated on 2018-02-21</span>
-
-
-DataFu provides a collection of Hadoop MapReduce jobs and functions in higher level languages based on it to perform data analysis. It provides functions for common statistics tasks (e.g. quantiles, sampling), PageRank, stream sessionization, and set and bag operations. DataFu also provides Hadoop jobs for incremental data processing in MapReduce.
-
-
-
-- 2014-01-05 Project enters incubation.
-
-- 2014-01-15 Project fully transitions to ASF infrastructure.
-
-- 2014-02-25 Jian Wang voted in as a new committer and PPMC member.
-
-- 2014-05-13 PODLINGNAMESEARCH-48 completed.
-
-- 2014-07-23 Casey Stella voted in as a new committer and PPMC member.
-
-- 2014-11-13 Russell Jurney voted in as a new committer and PPMC member.
-
-- 2015-11-14 1.3.0-incubating release created.
-
-- 2016-07-05 Eyal Allweil voted in as a new committer and PPMC member.
-
-- 2016-08-10 1.3.1-incubating release created.
-
-- 2017-03-10 1.3.2-incubating release created.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://datafu.incubator.apache.org](http://datafu.incubator.apache.org)  |
-| . | wiki |  [http://wiki.apache.org/datafu](http://wiki.apache.org/datafu)  |
-| Mailing list | dev |  `dev`  `@`  `datafu.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `datafu.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/DATAFU |
-| Source code | SVN |  [git://git.apache.org/incubator-datafu.git](git://git.apache.org/incubator-datafu.git)  |
-| Mentors | jghoman | Jakob Homan |
-| . | hashutosh | Ashutosh Chauhan |
-| . | rvs | Roman Shaposhnik |
-| . | tdunning | Ted Dunning |
-| Committers | mhayes | Matt Hayes |
-| . | cestella | Casey Stella |
-| . | eyal | Eyal Allweil |
-| . | jianwang | Jian Wang |
-| . | rjurney | Russell Jurney |
-| . | wvaughan | William Vaughan |
-| . | evion | Evion Kim |
-| . | samshah | Sam Shah |
-| . | meng | Xiangrui Meng |
-| . | clloyd | Christopher Lloyd |
-| . | mbastian | Mathieu Bastian |
-| . | mitultiwari | Mitul Tiwari |
-| . | jwills | Josh Wills |
-| . | jarcec | Jarek Jarcec Cecho |
-
-
--  [April 2017](https://wiki.apache.org/incubator/April2017) 
-
--  [February 2017](https://wiki.apache.org/incubator/February2017) 
-
--  [November 2016](https://wiki.apache.org/incubator/November2016) 
-
--  [July 2016](https://wiki.apache.org/incubator/July2016) 
-
--  [April 2016](https://wiki.apache.org/incubator/April2016) 
-
--  [January 2016](https://wiki.apache.org/incubator/January2016) 
-
--  [November 2015](https://wiki.apache.org/incubator/November2015) 
-
--  [August 2015](https://wiki.apache.org/incubator/August2015) 
-
--  [January 2015](https://wiki.apache.org/incubator/January2015) 
-
--  [October 2014](https://wiki.apache.org/incubator/October2014) 
-
--  [July 2014](https://wiki.apache.org/incubator/July2014) 
-
--  [April 2014](https://wiki.apache.org/incubator/April2014) 
-
--  [March 2014](https://wiki.apache.org/incubator/March2014) 
-
--  [February 2014](https://wiki.apache.org/incubator/February2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-05-13 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2014-05-13 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2014-05-13 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2014-05-13 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-01-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-01-15 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-01-15 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-01-15 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-01-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-01-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-01-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-01-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-11-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-11-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-11-14 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-11-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-01-15 | Check that all active committers have submitted a contributors agreement. |
-| 2014-01-15 | Add all active committers in the STATUS file. |
-| 2014-01-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/datalab.md b/content/datalab.md
deleted file mode 100644
index e18f5b4..0000000
--- a/content/datalab.md
+++ /dev/null
@@ -1,214 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-DataLab is a platform for creating self-service, exploratory data science environments in the cloud using best-of-breed data science tools.
-
-
-The project was originally called DLab
-
-
-
-- 2021-06-22 New Committer, Iana Redko
-
-- 2021-02-26 New PPMC member, Yurii Kinash
-
-- 2021-02-19 New Committer, Yurii Tykhun
-
-- 2021-02-19 New PPMC member, Leonid Frolov
-
-- 2021-02-15 New PPMC member, Mykola Bodnar
-
-- 2020-10 Renamed from DLab
-
-- 2020-09-17 New Release Apache (incubating) version 2.4.0
-
-- 2020-08-31 New Committer, Pavel Papou
-
-- 2020-07-20 New Committer &amp; PPMC member, Oleg Fuks
-
-- 2020-04-24 New Release Apache (incubating) version 2.3.0
-
-- 2019-12-03 New Release Apache (incubating) version 2.2.0
-
-- 2019-12-02 New Committer, Dmytro Gnatyshyn
-
-- 2019-08-20 New Committer, Adams Disturber
-
-- 2019-07-05 New Committer, Andrew Yatskovets
-
-- 2019-04-18 New Committer, Anna Orlovska
-
-- 2019-04-18 New Committer, Demian Mysakovets
-
-- 2019-04-04 New Committer &amp; PPMC member, Oleksandr Isniuk
-
-- 2019-04-02 New Release Apache (incubating) version 2.1.0
-
-- 2019-02-12 New Committer, Mykola Bodnar
-
-- 2018-08-20 Project enters incubation
-
-
-- link to the main website: [https://datalab.incubator.apache.org](https://datalab.incubator.apache.org) 
-
-
-- link to the page(s) that tell how to participate (Website, Mailing lists, Bug tracking, Source code) [https://github.com/apache/incubator-datalab](https://github.com/apache/incubator-datalab) 
-
-
-- link to the project status file (Committers, non-incubation action items, project resources etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://datalab.incubator.apache.org/](http://datalab.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/DATALAB](https://cwiki.apache.org/confluence/display/DATALAB)  |
-| Mailing list | dev |  `dev`  `@`  `datalab.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `datalab.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/projects/DATALAB/](https://issues.apache.org/jira/projects/DATALAB/)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-datalab.git](https://gitbox.apache.org/repos/asf/incubator-datalab.git)  |
-| Champion | ptgoetz | P. Taylor Goetz |
-| Mentors | kamaci | Furkan Kamaci |
-| . | hsaputra | Henry Saputra |
-| . | cos | Konstantin I Boudnik |
-| . | ptgoetz | P. Taylor Goetz |
-| PPMC Members | ankovalyshyn | Andriana Kovalyshyn |
-| . | bhliva | Bohdan Hliva |
-| . | shliakhov | Denys Shliakhov |
-| . | dliaskovskyi | Dmytro Liaskovskyi |
-| . | nbarabash | Nazar Barabash |
-| . | ofuks | Oleg Fuks |
-| . | oleggrinets | Oleh Hrynets |
-| . | omartushevskyi | Oleh Martushevskyi |
-| . | moskovych | Oleh Moskovych |
-| . | ochaparin | Oleksandr Chaparin |
-| . | ioleksandr | Oleksandr Isniuk |
-| . | vadymkuznetsov | Vadym Kuznetsov |
-| . | vvitanska | Vira Vitanska |
-| . | vveres | Volodymyr Veres |
-| Committers | adamsd | Adams Disturber |
-| . | yandrew | Andrew Yatskovets |
-| . | orlann | Anna Orlovska |
-| . | dmysakovets | Demian Mysakovets |
-| . | dgnatyshyn | Dmytro Gnatyshyn |
-| . | lfrolov | Leonid Frolov |
-| . | mykolabodnar | Mykola Bodnar |
-| . | ppapou | Pavel Papou |
-| Roster | Whimsy |  [DataLab Roster](https://whimsy.apache.org/roster/ppmc/DataLab)  |
-
-
--  [DataLab Board Reports](https://whimsy.apache.org/board/minutes/DataLab.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2020-08-12 | Make sure that the requested project name does not already exist. [PODLINGNAMESEARCH-184](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-184)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-08-20 | Request DNS (first step after creating podling status page) [INFRA-16932](https://issues.apache.org/jira/browse/INFRA-16932)  |
-| 2018-08-21 | Request Mailing Lists |
-| 2019-01-11 | Request git repositories [INFRA-17625](https://issues.apache.org/jira/browse/INFRA-17625)  |
-| 2018-08-21 | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2018-09-04 | Ask infrastructure to set up issue tracker - Jira [INFRA-17592](https://issues.apache.org/jira/browse/INFRA-17592)  |
-| 2019-01-16 | Ask infrastructure to set up wiki [INFRA-17592](https://issues.apache.org/jira/browse/INFRA-17592)  |
-| 2019-11-28 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-08-22 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-08-22 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-08-22 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2020-10-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
- [https://whimsy.apache.org/pods/project/datalab](https://whimsy.apache.org/pods/project/datalab) 
-
- |
-| 2020-10-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2020-10-21 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2020-10-21 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-10-21 | Check that all active committers have submitted a contributors agreement. |
-| 2020-10-21 | Add all active committers in the relevant section above. |
-| 2020-10-21 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? YES.
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) YES.
-
-- Are project decisions being made in public by the committers? YES.
-
-- Are the decision-making guidelines published and agreed to by all of the committers? YES.
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/datasketches.md b/content/datasketches.md
deleted file mode 100644
index 83ae599..0000000
--- a/content/datasketches.md
+++ /dev/null
@@ -1,194 +0,0 @@
-Title: DataSketches Incubation Status
-<link href="https://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The DataSketches project graduated on 2020-12-16</span>
-
-
-DataSketches is an open source, high-performance library of streaming algorithms commonly called "sketches" in the data sciences. Sketches are small, stateful programs that process massive data as a stream and can provide approximate answers, with mathematical guarantees, to computationally difficult queries orders-of-magnitude faster than traditional, exact methods.
-
-
-
-- 2019-03-30 Datasketches enters incubation.
-
-- Current Releases: [](https://datasketches.apache.org/docs/Community/Downloads.html) https://datasketches.apache.org/docs/Community/Downloads.html
-
-- History of Apache Releases by component:
-
-  - datasketches-java: [https://github.com/apache/incubator-datasketches-java/releases](https://github.com/apache/incubator-datasketches-java/releases) 
-
-  - datasketches-cpp: [https://github.com/apache/incubator-datasketches-cpp/releases](https://github.com/apache/incubator-datasketches-cpp/releases) 
-
-  - datasketches-hive: [https://github.com/apache/incubator-datasketches-hive/releases](https://github.com/apache/incubator-datasketches-hive/releases) 
-
-  - datasketches-pig: [https://github.com/apache/incubator-datasketches-pig/releases](https://github.com/apache/incubator-datasketches-pig/releases) 
-
-  - datasketches-postgresql: [https://github.com/apache/incubator-datasketches-postgresql/releases](https://github.com/apache/incubator-datasketches-postgresql/releases) 
-
-  - datasketches-memory: [https://github.com/apache/incubator-datasketches-memory/releases](https://github.com/apache/incubator-datasketches-memory/releases) 
-
-
-- Integration efforts have started with Apache Impala.
-
-- Added new committers:
-
-  - David Cromberge, August 17, 2020.
-
-  - Pavel Veselý, November 23, 2020.
-
-
-- Board approved graduation: December 16, 2020.
-
-- Transition to TLP in process.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://datasketches.apache.org/](https://datasketches.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/DATASKETCHES/Home](https://cwiki.apache.org/confluence/display/DATASKETCHES/Home)  |
-| Mailing lists | dev |  `dev`  `@`  `datasketches.apache.org`  |
-| . | users |  `users`  `@`  `datasketches.apache.org`  |
-| . | commits |  `commits`  `@`  `datasketches.apache.org`  |
-| . | issues |  `issues`  `@`  `datasketches.apache.org`  |
-| . | notifications |  `notifications`  `@`  `datasketches.apache.org`  |
-| . | private |  `private`  `@`  `datasketches.apache.org`  |
-| Bug tracking | Java Core |  [https://github.com/apache/incubator-datasketches-java/issues](https://github.com/apache/incubator-datasketches-java/issues)  |
-| . | CPP Core |  [https://github.com/apache/incubator-datasketches-cpp/issues](https://github.com/apache/incubator-datasketches-cpp/issues)  |
-| . | Java Hive |  [https://github.com/apache/incubator-datasketches-hive/issues](https://github.com/apache/incubator-datasketches-hive/issues)  |
-| . | Java Pig |  [https://github.com/apache/incubator-datasketches-pig/issues](https://github.com/apache/incubator-datasketches-pig/issues)  |
-| . | CPP PostreSQL |  [https://github.com/apache/incubator-datasketches-postgresql/issues](https://github.com/apache/incubator-datasketches-postgresql/issues)  |
-| . | Java Memory |  [https://github.com/apache/incubator-datasketches-memory/issues](https://github.com/apache/incubator-datasketches-memory/issues)  |
-| . | GitHub | Use _issues_ on any of our GitHub sites (below). |
-| Source code | GitHub |  [https://github.com/apache?q=datasketches](https://github.com/apache?q=datasketches)  |
-| . | Zip Archive |  [https://archive.apache.org/dist/incubator/datasketches/](https://archive.apache.org/dist/incubator/datasketches/)  |
-| . | Nexus (Java) |  [https://repository.apache.org/content/repositories/releases/org/apache/datasketches/](https://repository.apache.org/content/repositories/releases/org/apache/datasketches)  |
-| Mentors | kamaci | Furkan Kamaci |
-| . | kenn | Kenneth Knowles |
-| . | chenliang613 | Liang Chen |
-| . | wave | Dave Fisher |
-| . | evansye | Evans Ye |
-| Roster | Whimsy |  [Datasketches Roster](https://whimsy.apache.org/roster/ppmc/datasketches)  |
-
-
--  [Datasketches Board Reports](https://whimsy.apache.org/board/minutes/datasketches.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-04-09 |  [Datasketches Name Approved by Mark Thomas](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-168)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-04-10 | Request DNS (first step after creating podling status page) https://issues.apache.org/jira/browse/INFRA-18197. Completed. |
-| 2019-04-10 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator) Completed. |
-| 2019-05-10 | Request [git repositories](https://reporeq.apache.org/) https://issues.apache.org/jira/browse/INFRA-18362. Completed |
-| N/A (using GitHub) | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). [DataSketches JIRA](https://issues.apache.org/jira/projects/DATASKETCHES) Not used. |
-| N/A (not using wiki) | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). Not used. |
-| 2020-01-24 (website was the final item) | Migrate the project to our infrastructure. ( [INFRA-18362](https://issues.apache.org/jira/browse/INFRA-18362) and [INFRA-19259](https://issues.apache.org/jira/browse/INFRA-19259) ) |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2019-05-10 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file). Completed. |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright and IP {#Copyright}
-
-| date | item |
-|------|------|
-| 2019-05-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2019-10-25 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-| 2019-05-07 | Matt Sicker (secretary@apache.org) acknowledged receipt of Software Grant |
-| 2019-05-07 | Matt Sicker (secretary@apache.org) acknowledged receipt of SGA and Logo source file. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2019-10-25 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. Completed. |
-| 2019-10-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. Completed. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| Committer | ICLA? |
-|-----------|-------|
-| Alexander Saydakov | YES |
-| David Cromberge | YES |
-| Edo Liberty | YES |
-| Eshcar Hillel | YES |
-| Jon Malkin | YES |
-| Justin Thaler | YES |
-| Lee Rhodes | YES |
-| Pavel Veselý | YES |
-| Roman Leventov | YES |
-
-| date | item |
-|------|------|
-| 2019-04-10 | Check that all active committers have submitted a contributors agreement. YES. |
-| 2019-04-10 | Add all active committers in the relevant section above. Done. |
-| 2019-04-10 | Ask root for the creation of committers' accounts in LDAP. Done. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? YES.
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-YES.
-- Are project decisions being made in public by the committers? YES.
-
-- Are the decision-making guidelines published and agreed to by all of the committers? YES.
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? YES.
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? YES.
-
-- If graduating to a new PMC, has the board voted to accept it? YES.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? YES.
diff --git a/content/db-torque-generator.md b/content/db-torque-generator.md
new file mode 100644
index 0000000..89897fb
--- /dev/null
+++ b/content/db-torque-generator.md
@@ -0,0 +1,62 @@
+Title: DB Torque Generator Codebase Intellectual Property (IP) Clearance Status
+
+
+This code base contains three modules which aim to replace the excitsing modules generator, templates and maven2-plugin in the DB Torque project. The specialized Torque code generator is replaced by a general-purpose code generator. To accomodate this, the code generation templates have to be changed as well; the changed templates are contained in the code base. Finally, a new Torque Maven2 Plugin will integrate the generator into Maven2. The new plugin is also contained in the codebase. The code base was contributed by Thomas Fischer, who is member of the DB PMC.
+
+
+
+- Which PMC will be responsible for the code: Apache DB
+
+
+- Into which existing project/module: DB Torque
+
+
+- Officer or member managing donation: Thomas Fischer
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-02-04(Not applicable, grant replaces existing modules) | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: (SHA1) df01e2b53a08359268f511dc662328e5b191759c
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-02-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-02-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _DB Torque Generator_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Thomas Fischer_ 
+
+| date | item |
+|------|------|
+| 2010-02-04 | Check that all active committers have a signed CLA on record. |
+| 2010-02-04 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-02-04(not applicable) | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-02-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote result of Torque](http://mail-archives.apache.org/mod_mbox/db-torque-dev/201001.mbox/%3cOF1F60948D.558B1055-ONC12576B9.005D8160-C12576B9.00650A4B@seitenbau.net%3e) 
diff --git a/content/deltacloud.md b/content/deltacloud.md
deleted file mode 100644
index abe63e6..0000000
--- a/content/deltacloud.md
+++ /dev/null
@@ -1,203 +0,0 @@
-Title: Deltacloud Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Deltacloud project graduated on 2011-10-26</span>
-
-
-Deltacloud defines a web service API for interacting with cloud service providers and resources in those clouds in a unified manner. In addition, it consists of a number of implementations of this API for the most popular clouds.
-
-
-
-- 2010-05-17 Deltacloud accepted into incubator
-
-- 2010-06-06 Code import done and project active
-
-- 2010-12-15 Released version 0.1.0
-
-- 2011-04-28 Released version 0.3.0
-
-- 2011-05-10 Eric Woods added as a new committer
-
-- 2011-06-01 Sang-Min Park added as a new committer
-
-- 2011-07-07 Chris Lalancette added as a new committer
-
-- 2011-09-14 Released version 0.4.0
-
-- 2011-10-11 Released version 0.4.1
-
-- 2011-10-26 Deltacloud graduates from incubator to a TLP
-
-
--  [General Deltacloud Site](http://deltacloud.org/) 
-
--  [Apache Deltacloud Site](http://incubator.apache.org/deltacloud) 
-
-
--  [Project website](http://incubator.apache.org/deltacloud/download.html) 
-
--  [Contribute page](http://incubator.apache.org/deltacloud/contribute.html) (Mailing list, IRC, bug tracker, how to get source and send patches)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/deltacloud/](http://incubator.apache.org/deltacloud/)  |
-| . | wiki | . |
-| Mailing list | dev |  `deltacloud-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `deltacloud-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/DTACLOUD](https://issues.apache.org/jira/browse/DTACLOUD)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/deltacloud/](https://svn.apache.org/repos/asf/incubator/deltacloud/)  |
-| Mentors | cctrieloff | Carl Trieloff |
-| . | clr | Craig Russell |
-| . | hogstrom | Matt Hogstrom |
-| . | dims | Davanum Srinivas |
-| Committers | lutter@redhat.com | David Lutterkort |
-| . | mfojtik@redhat.com | Michal Fojtik |
-| . | mandreou@redhat.com | Marios Andreou |
-| . | acadel@yahoo.com | Andrew N Cadel |
-| . | lresende | Luciano Resende |
-| . | deepalk@gmail.com | Deepal Jayasinghe |
-| . | hogstrom | Matt Hogstrom |
-| . | danmolin@pdi.ucm.es | Daniel Molina Aranda |
-| . | senakafdo@gmail.com | Senaka Fernando |
-| . | gerdogdu | Gurkan Erdogdu |
-| . | ivan@ivan.net.nz | Ivan Meredith |
-| . | shankar | Selvaratnam Uthaiyashankar |
-| . | chintanaw@gmail.com | Chintana Wilamuna |
-| . | jsdelfino | Jean-Sebastien Delfino |
-| . | imcleod@redhat.com | Ian McLeod |
-| . | jdunning@redhat.com | John Dunning |
-| . | sonalgoyal4@gmail.com | Sonal Goyal |
-| . | woodstae@gmail.com | Eric Woods |
-| . | sang-min.park@eucalyptus.com | Sang-Min Park |
-| . | clalance@redhat.com | Christopher Lalancette |
-
-
--  [June 2010](http://wiki.apache.org/incubator/June2010) 
-
--  [July 2010](http://wiki.apache.org/incubator/July2010) 
-
--  [August 2010](http://wiki.apache.org/incubator/August2010) 
-
--  [November 2010](http://wiki.apache.org/incubator/November2010) 
-
--  [February 2011](http://wiki.apache.org/incubator/February2011) 
-
--  [May 2011](http://wiki.apache.org/incubator/May2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-05-17 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2010-05-17 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2010-05-17 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| Complete | Ask infrastructure to create source repository modules and grant the committers karma. |
-| Complete | Ask infrastructure to set up and archive mailing lists. |
-| Complete | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| Complete | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| Complete | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| Complete | Subscribe all Mentors on the pmc and general lists. |
-| Complete | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-07-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-06-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-07-08 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-07-08 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-07-08 | Check that all active committers have submitted a contributors agreement. |
-| 2010-07-08 | Add all active committers in the STATUS file. |
-| 2010-07-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/deltaspike-interdyn.md b/content/deltaspike-interdyn.md
new file mode 100644
index 0000000..c3ea177
--- /dev/null
+++ b/content/deltaspike-interdyn.md
@@ -0,0 +1,62 @@
+Title: Apache DeltaSpike InterDyn Codebase Intellectual Property (IP) Clearance Status
+
+
+Describe the incoming codebase, including whether it is a large set of patches, new functional modules, etc.
+
+
+
+- PMC responsible for the code: Apache DeltaSpike
+
+
+- The donated code will be part of the Apache DeltaSpike core module.
+
+
+- Officer or member managing donation: Mark Struberg
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-02-04 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: ( _commit hash 972a6ea126989147e51fe3fd07a24fc53b1646f1_ ). https://github.com/struberg/InterDyn/commit/972a6ea126989147e51fe3fd07a24fc53b1646f1
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-02-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-02-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _InterDyn_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Mark Struberg
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2018-02-13 | Check that all active committers have a signed CLA on record. |
+| 2018-02-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-02-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-02-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/deltaspike.md b/content/deltaspike.md
deleted file mode 100644
index a0eb01a..0000000
--- a/content/deltaspike.md
+++ /dev/null
@@ -1,197 +0,0 @@
-Title: DeltaSpike Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The DeltaSpike project graduated on 2013-05-28</span>
-
-
-DeltaSpike is a collection of JSR-299 (CDI) Extensions for building applications on the Java SE and EE platforms.
-
-
-
-- 2011-12-07 Project enters incubation.
-
-- 2012-02-10 Release deltaspike-0.1-incubating.
-
-- 2012-04-22 Release deltaspike-0.2-incubating.
-
-- 2012-08-22 Release deltaspike-0.3-incubating.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/deltaspike/](http://incubator.apache.org/deltaspike/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/DeltaSpike](http://cwiki.apache.org/confluence/display/DeltaSpike)  |
-| Mailing list | dev |  `deltaspike-dev`  `@`  `incubator.apache.org`  |
-| . | users |  `deltaspike-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `deltaspike-commits`  `@`  `incubator.apache.org`  |
-| . | private (PPMC) |  `deltaspike-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/DELTASPIKE](https://issues.apache.org/jira/browse/DELTASPIKE)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-deltaspike.git](https://gitbox.apache.org/repos/asf/incubator-deltaspike.git)  |
-| Mentors | struberg | Mark Struberg |
-| . | gpetracek | Gerhard Petracek |
-| . | dblevins | David Blevins |
-| . | matzew | Matthias Wessendorf |
-| . | mbenson | Matt Benson |
-| . | jim | Jim Jagielski |
-| Committers | mojavelinux | Dan Allen |
-| . | johndament | John Ament |
-| . | lincolnthree | Lincoln Baxter III |
-| . | marius | Marius Bogoevici |
-| . | sbryzak | Shane Bryzak |
-| . | rdebusscher | Rudy De Busscher |
-| . | stuartdouglas | Stuart Douglas |
-| . | stuartdouglas | Stuart Douglas |
-| . | kenfinnigan | Ken Finnigan |
-| . | gastaldi | George Gastaldi |
-| . | agibson | Andy Gibson |
-| . | jharting | Jozef Hartinger |
-| . | . | Rick Hightower |
-| . | chkal | Christian Kaltepoth |
-| . | jakobk | Jakob Korherr |
-| . | bleathem | Brian Leathem |
-| . | lukaszlenart | Lukasz Lenart |
-| . | clerum | Cody Lerum |
-| . | arne | Arne Limburg |
-| . | pmuir | Pete Muir |
-| . | lightguardjp | Jason Porter |
-| . | . | Pete Royle |
-| . | antoinesd | Antoine Sabot-Durand |
-| Extra | Proposal |  [DeltaSpike Proposal](http://wiki.apache.org/incubator/DeltaSpikeProposal)  |
-
-
--  [December 2011](http://wiki.apache.org/incubator/December2011#DeltaSpike) 
-
--  [January 2012](http://wiki.apache.org/incubator/January2012#DeltaSpike) 
-
--  [February 2012](http://wiki.apache.org/incubator/February2012#DeltaSpike) 
-
--  [May 2012](http://wiki.apache.org/incubator/May2012#DeltaSpike) 
-
--  [August 2012](http://wiki.apache.org/incubator/August2012#DeltaSpike) 
-
--  [November 2012](http://wiki.apache.org/incubator/November2012#DeltaSpike) 
-
--  [February 2013](http://wiki.apache.org/incubator/February2013#DeltaSpike) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-03-27 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.<br></br> **DONE**  |
-| 2013-03-27 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names.<br></br> **DOES NOT APPLY**  |
-| 2013-03-27 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.<br></br> **DOES NOT APPLY**  |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-12-22 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-12-08 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-12-11 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012-03-16 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-01-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-12-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-12-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-01-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-01-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-02-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-03-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-03-16 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-03-16 | Check that all active committers have submitted a contributors agreement. |
-| 2012-03-16 | Add all active committers in the STATUS file. |
-| 2012-03-16 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **DONE** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **DONE** 
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **DONE** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **DONE** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/depot.md b/content/depot.md
deleted file mode 100644
index 64e6e45..0000000
--- a/content/depot.md
+++ /dev/null
@@ -1,168 +0,0 @@
-Title: depot
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Depot project retired on 2004-10-28</span>
-
-
-The Depot Project deals with integrated tools for automating downloading (with security checks), publishing (new artifacts) and managing the contents of the apache repository.
-
-
-It also focuses on additional tools for manipulating metadata of the artifacts.
-
-
-
-- Project closed for lack of development.
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/depot/](http://incubator.apache.org/depot/)  |
-| . | wiki | . |
-| Mailing list | dev | depot-dev@incubator.apache.org |
-| . | cvs | depot-cvs@incubator.apache.org |
-| Bug tracking | JIRA | . |
-| Source code | SVN | /repos/asf/depot/ |
-| Mentors | nicolaken | Nicola Ken Barozzi |
-| Committers | ajack | Adam Jack |
-| . | nickchalko | Nick Chalko |
-| . | anou_mana | Anou Manavalan |
-| . | mmay | Markus M. May |
-| Extra | proposal |  [http://nagoya.apache.org/wiki/apachewiki.cgi?RepoProposal](http://nagoya.apache.org/wiki/apachewiki.cgi?RepoProposal)  |
-
-# 2004-10-28 {#2004-10-28}
-
-```
-1). Is the STATUS file up to date? Yes. 2). Any legal, cross-project
-or personal issues that still need to be addressed? No. 3). What has
-been done for incubation since the last report? Project closed for
-lack of development. 4). Plans and expectations for the next period?
-Collaborate with Ant and Maven for artifact downloading. Hang out on
-the repository@apache.org. Eventually continue development on
-Sourceforge. 5). Any recommendations for how incubation could run
-more smoothly for you? The closing of the project is not due to
-problems/issues with Incubation.
-
-```
-
-# 2004-07-18 {#2004-07-18}
-
-```
-1). Is the STATUS file up to date? No 2). Any legal, cross-project or
-personal issues that still need to be addressed? No, all files
-licensed, all commiters have singed CLA 3). What has been done for
-incubation since the last report? * Site update. * Packages renamed
-to "depot" 4). Plans and expectations for the next period? * Delete
-unused under developed code. * Complete Download manger for use by
-gump and others. * Support "directory artifacts" for use by antworks
-and others. 5). Any recommendations for how incubation could run more
-smoothly for you? n/a
-
-```
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2003-12-04 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2003-12-04 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2003-12-04 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2003-12-04 | Subscribe all Mentors on the pmc and general lists. |
-| 2003-12-04 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2003-12-04 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2003-12-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2003-12-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2003-12-04 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2003-12-20 | Check that all active committers have submitted a contributors agreement. |
-| 2003-12-20 | Add all active committers in the STATUS file. |
-| 2003-12-20 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2003-12-20 | Ask infrastructure to create source repository modules and add thecommitters to the avail file. |
-| 2003-12-20 | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/derby-2134-contribution-tests-ibm.md b/content/derby-2134-contribution-tests-ibm.md
new file mode 100644
index 0000000..2e98db6
--- /dev/null
+++ b/content/derby-2134-contribution-tests-ibm.md
@@ -0,0 +1,62 @@
+Title: Apache Derby Codebase Intellectual Property (IP) Clearance Status
+
+
+Contribution of long running system tests for Derby.
+
+
+ [https://issues.apache.org/jira/browse/DERBY-2134](https://issues.apache.org/jira/browse/DERBY-2134) 
+
+
+
+- Which PMC will be responsible for the code: Apache DB
+
+
+- Into which existing project/module: Derby
+
+
+- Officer or member managing donation: Jean T. Anderson
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-12-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-01-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: "Derby Test files added on Dec. 1, 2006"
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: IBM
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2006-12-01 | Check that all active committers have a signed CLA on record. |
+|  [2006-12-01](http://mail-archives.apache.org/mod_mbox/db-derby-dev/200612.mbox/%3c45707B9F.9070002@bristowhill.com%3e)  | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-01-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-01-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on derby-dev.](http://mail-archives.apache.org/mod_mbox/db-derby-dev/200701.mbox/%3c45A58CCB.7030908@apache.org%3e) 
diff --git a/content/derby-2248-contribution-tests-ibm.md b/content/derby-2248-contribution-tests-ibm.md
new file mode 100644
index 0000000..2b2bf58
--- /dev/null
+++ b/content/derby-2248-contribution-tests-ibm.md
@@ -0,0 +1,62 @@
+Title: Apache Derby Codebase Intellectual Property (IP) Clearance Status
+
+
+Contribution of NetworkServer System Test Source Files.
+
+
+ [https://issues.apache.org/jira/browse/DERBY-2248](https://issues.apache.org/jira/browse/DERBY-2248) 
+
+
+
+- Which PMC will be responsible for the code: Apache DB
+
+
+- Into which existing project/module: Derby
+
+
+- Officer or member managing donation: Jean T. Anderson
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-02-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-02-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+The name recorded for the software grant in cclas.txt is "Signed Software Grant/CCLA for DerbyTesting NetworkServer System Test Source Files" and the scanned file is in cclas/IBM-derby-testing.pdf.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: IBM
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2007-02-19 | Check that all active committers have a signed CLA on record. |
+|  [2007-02-19](http://mail-archives.apache.org/mod_mbox/db-derby-dev/200702.mbox/%3c45DA4308.4020407@bristowhill.com%3e)  | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-02-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-02-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on derby-dev@db.apache.org.](http://mail-archives.apache.org/mod_mbox/db-derby-dev/200702.mbox/%3c45E39C84.80005@bristowhill.com%3e) 
diff --git a/content/derby.md b/content/derby.md
deleted file mode 100644
index e6c4a50..0000000
--- a/content/derby.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: derby
-
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Derby project graduated on 2005-07</span>
-
-
-| This is just a status page! |
-
- [http://db.apache.org/derby/](http://db.apache.org/derby/) 
-
-
-"Derby" is a snapshot of the IBM's Cloudscape Java relational database. IBM is opening the code by contributing it to The Apache Software Foundation and basing future versions of IBM Cloudscape on the Apache-managed code.
-
-
-To participate in the Derby podling, you should join the mailing list. Just send an empty message to _derby-dev-subscribe@db.apache.org_ .
-
-
-The initial goal of the project while in incubation is to build a viable developer community around the codebase.
-
-
-The second goal of Derby-in-incubation is to successfully produce a release. Since Derby is in incubation, such a release would not have formal standing; it will serve as a proof-of-concept to demonstrate to the developers' and incubator's satisfaction that this aspect of the project is health and understood.
-
-
-
-- The Apache DB project will own the Derby subproject, and the subproject will follow the Apache DB PMC's direction. Significant contributors to this sub-project (for example, after a significant interval of sustained contribution) will be proposed for commit access to the codebase.
-
-
-- The Derby sub-project's modules will be available as distinct and discrete downloads.
-
-# Detailed References: {#Detailed+References%3A}
-
-| item | type | reference |
-|-------|-------|------------|
-| Status file | www | http://incubator.apache.org/projects/derby.html |
-| Website | www | http://incubator.apache.org/derby/ |
-| Mailing list | dev | derby-dev@db.apache.org |
-| Mailing list | users | derby-user@db.apache.org |
-| Mailing list | changes | derby-commits@db.apache.org |
-| Source code | SVN | /repos/asf/incubator/derby/code/trunk/ |
-| Mentor | coar | Ken Coar (CLA on file) |
-| Mentor | coar | Sam Ruby (CLA on file) |
-| Mentor | coar | Rodney Waldoff (CLA on file) |
-| Committers | jta | Jean Anderson (CLA on file) |
-| Committers | satheesh | Satheesh Bandaram (CLA on file) |
-| Committers | jboynes | Jeremy Boynes (CLA on file) |
-| Committers | djd | Daniel Debrunner (CLA on file) |
-| Committers | kmarsden | Katherine Marsden (CLA on file) |
-| Committers | mikem | Mike Matrigali (CLA on file) |
-| Committers | mcintyre | Samuel McIntyre (CLA on file) |
-| Committers | coar | Ken Coar (CLA on file) |
-| Committers | tmnk | Tomohito Nakayama (CLA on file) |
-| Committers | bernt | Bernt M. Johnsen (CLA on file) |
-| Committers | bakksjo | Oyvind Bakksjo (CLA on file) |
-| Committers | davidvc | David Van Couvering (CLA on file) |
-
- _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-
-- Q2 2005: [http://mail-archives.apache.org/mod_mbox/incubator-general/200507.mbox %3c42D6E5AD.6010103@bristowhill.com%3e](http://mail-archives.apache.org/mod_mbox/incubator-general/200507.mbox/%3c42D6E5AD.6010103@bristowhill.com%3e) 
-
-# Project Setup {#Project+Setup}
-
-## Identify the codebase {#Identify+the+codebase}
-
-| date | item |
-|-------|-------|
-| 2004-08-30 | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| DONE | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-08-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2005-01-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2004-10-12 | Check that all active committers have a signed CLA on record. |
-| 2004-10-12 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
-| 2004-10-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2004-10-12 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- DONE - Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Project Goals during Incubation {#Project+Goals+during+Incubation}
-
-## Build independent development community {#Build+independent+development+community}
-
-
-- 221 subscribers to dev list (12.68 posts/day)
-
-- 282 subscribers to user list (5.67 posts/day)
-
-- Added one committer during incubation (jboynes)
-
-- PPMC has adopted a plan to actively build the developer community
-
-## Produce a release {#Produce+a+release}
-
-
-- (2004-12-06) 10.0.2.1 release approval voted
-
-- (2004-12-06) SVN tag created http://svn.apache.org/repos/asf/incubator/derby/code/tags/10.0.2.1
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Has the receiving PMC voted to accept it? **YES**
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/devicemap-openddr.md b/content/devicemap-openddr.md
new file mode 100644
index 0000000..9db7cbb
--- /dev/null
+++ b/content/devicemap-openddr.md
@@ -0,0 +1,55 @@
+Title: DeviceMap OpenDDR Codebase Intellectual Property (IP) Clearance Status
+
+
+The OpenDDR codebase is attached to [https://issues.apache.org/jira/browse/DMAP-11](https://issues.apache.org/jira/browse/DMAP-11) and consists of CSharp and Java API modules, and a Resources module which contains mobile device data.
+
+
+Note that we won't accept the donation of the resources file at this stage, this IP clearance is only about the two files mentioned below.
+
+
+
+- The Incubator PMC is responsible for the code, as it its meant for an incubating project.
+
+
+- Code will be included in the DeviceMap podling codebase.
+
+
+- bdelacretaz is managing the donation process, as a DeviceMap incubation mentor.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| October 2nd, 2012 | 2 files attached to DMAP-11:<br></br>MD5 (OpenDDR-CSharp_1.0.0.10_src.zip) = 6f3281c7895986cc7bc80b6d8790d6d6<br></br>MD5 (OpenDDR-Java_1.0.0.10_src.zip) = 1f7d0b5da0192fd514e4750abe712edf |
+
+## Copyright {#Copyright}
+
+| September 12th, 2012 | The papers that transfer rights to the ASF have been received: documents/grants/openddr.pdf in the foundation's private svn repository. |
+| Sept 24, 2012 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright: file headers will be updated after importing the code in the DeviceMap svn repository. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- OpenDDR LLC, represented by Werner Keil
+
+| date | item |
+|------|------|
+| Sept 24, 2012 (DMAP-11) | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| Sept 24, 2012 (DMAP-11) | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _VOTE thread accepting the donation: donation is mentioned in the DeviceMap incubation proposal at http://wiki.apache.org/incubator/DeviceMapProposal, no need for an additional vote._ 
diff --git a/content/devicemap.md b/content/devicemap.md
deleted file mode 100644
index 19779f8..0000000
--- a/content/devicemap.md
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: DeviceMap Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The DeviceMap project graduated on 2014-11-19</span>
-
-
-Apache DeviceMap is a data repository containing device information, images and other relevant information for all sorts of mobile devices, e.g. smartphones and tablets.
-
-
-While the focus is initially on that data, APIs will also be created to use and manage it.
-
-
-
-- 2012-04-24 Sylvain Wallez steps down as an incubation mentor.
-
-
-- 2012-04-23 New committer: Reza Naghibi.
-
-
-- 2012-04-23 New committer: Radu Cotescu.
-
-
-- 2012-01-03 Project enters incubation.
-
-
-- Incubation news are in the "news" section at [http://incubator.apache.org/devicemap/index.html](http://incubator.apache.org/devicemap/index.html) 
-
-
-- 2014-11-19 Board approves graduation resolution.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/devicemap/](http://incubator.apache.org/devicemap/)  |
-| . | wiki | . |
-| Mailing list | dev |  `devicemap-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `devicemap-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/DMAP](https://issues.apache.org/jira/browse/DMAP)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/devicemap/](https://svn.apache.org/repos/asf/incubator/devicemap/)  |
-| Champion | bdelacretaz | Bertrand Delacretaz |
-| Mentors | kevan | Kevan Miller |
-| . | asavory | Andrew Savory |
-| Committers | . | . |
-|  | . | Philip Jespersen |
-|  | . | Christian Stocker |
-|  | scottbw | Scott Wilson |
-|  | . | Nils Dehl |
-|  | brian | Brian LeRoux |
-|  | . | Stefano Andreani |
-|  | . | Alessandro Bellucci |
-|  | . | Werner Keil |
-|  | . | Tim Fernando |
-| Extra | . | . |
-
-
-- See http://wiki.apache.org/incubator/
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-09-29 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. Done in https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-57 |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-09-29 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-09-29 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-09-29 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-09-29 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-09-29 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-09-29 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2014-09-29 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-09-29 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-09-29 | Tell Mentors to track progress in the file 'incubator/projects/devicemap.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-09-29 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-09-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-09-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-09-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-09-29 | Check that all active committers have submitted a contributors agreement. |
-| 2014-09-29 | Add all active committers in the STATUS file. |
-| 2014-09-29 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/directmemory.md b/content/directmemory.md
deleted file mode 100644
index 7831e25..0000000
--- a/content/directmemory.md
+++ /dev/null
@@ -1,153 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The DirectMemory project graduated on 2012-08-15</span>
-
-
-DirectMemory's main purpose is to to act as a second level cache able to store large amounts of data without filling up the Java heap and thus avoiding long garbage collection cycles.
-
-
-
-- 2011-10-05 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/directmemory](http://incubator.apache.org/directmemory/)  |
-| . | wiki |  [http://wiki.apache.org/directmemory/](http://wiki.apache.org/directmemory/)  |
-| Mailing list | dev |  `directmemory-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `directmemory-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `directmemory-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/DIRECTMEMORY |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/directmemory/](https://svn.apache.org/repos/asf/incubator/directmemory/)  |
-| Mentors | antelder | Anthony Elder |
-| . | olamy | Olivier Lamy |
-| . | sylvain | Sylvain Wallez |
-| . | twilliams | Tim Williams |
-| Committers | Ioannis Canellos | iocanel |
-| . | Maurizio Cucchiara | mcucchiara |
-| . | grobmeier | Christian Grobmeier |
-| . | Olivier Lamy | olamy |
-| . | Raffaele P. Guidi | raffaeleguidi |
-| . | Simone Gianni | simoneg |
-| . | Simone Tripodi | simonetripodi |
-| . | Tommaso Teofili | tommaso |
-| . | Benoit Perroud | bperroud |
-
-
--  [January 2012](http://wiki.apache.org/incubator/January2012) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [November 2011](http://wiki.apache.org/incubator/November2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| Done. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| Done. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| Done. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| Done. | [simonetripodi] - Ask infrastructure to set up and archive mailing lists. Done - [INFRA-3999](https://issues.apache.org/jira/browse/INFRA-3999)  |
-| Done. | [simonetripodi] - Ask infrastructure to set up issue tracker (JIRA, Bugzilla). In flight, [INFRA-4001](http://issues.apache.org/jira/browse/INFRA-4001)  |
-| 2011-10-06 | [simonetripodi] - Ask infrastructure to set up wiki (Confluence, Moin). [INFRA-4003](http://issues.apache.org/jira/browse/INFRA-4003) . Wiki created [here.](http://wiki.apache.org/directmemory/)  |
-| Done. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| Done. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| Done. | Subscribe all Mentors on the pmc and general lists. |
-| 2011-10-07 | [twilliams] - Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file). Done. |
-| 2011-10-05 | [grobmeier] - Tell Mentors to track progress in the file 'incubator/projects/directmemory.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-10-07 | [twilliams] - Check that all active committers have submitted a contributors agreement. Verified. |
-| 2011-10-07 | [twilliams] - Add all active committers in the STATUS file. Done. |
-| 2011-10-07 | [twilliams] - Ask root for the creation of committers' accounts on people.apache.org. Created, thanks root! |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/directory-mitosis.md b/content/directory-mitosis.md
new file mode 100644
index 0000000..bf2cb3c
--- /dev/null
+++ b/content/directory-mitosis.md
@@ -0,0 +1,56 @@
+Title: XYZ Codebase Intellectual Property (IP) Clearance Status
+
+
+Mitosis is a functional module for performing multimaster replication with ApacheDS.
+
+
+
+- The Directory PMC will be responsible for the code
+
+
+- The Mitosis code will **NOT** constitute a new project under the Directory TLP but will be incorporated into the existing ApacheDS code base.
+
+
+- Officer or member managing donation: Alex Karasulu
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-10-17 | Mitosis: the name is NOT significant since Mitosis will not become a separate product but will be integrated directly into ApacheDS |
+
+SHA1 sum for donated software: 4aafaae35ea0ce9dc4e21fac4ce437005db17ee3 (1.0).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-10-17 | Software grant filed with Secretary and Directory VP |
+| 2006-10-17 | New ASF copyright has been assigned in file headers. |
+
+Identify name recorded for software grant: Alex Karasulu
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2006-10-17 | Check that all active committers have a signed CLA on record. |
+| 2006-10-17 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-10-17 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-10-17 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://www.mail-archive.com/dev@directory.apache.org/msg08136.html
diff --git a/content/directory-scimple.md b/content/directory-scimple.md
new file mode 100644
index 0000000..9de3b98
--- /dev/null
+++ b/content/directory-scimple.md
@@ -0,0 +1,62 @@
+Title: Directory SCIMple Identity Codebase Intellectual Property (IP) Clearance Status
+
+
+SCIMple is an JavaEE implementation of the SCIM version 2.0 specification (RFC7642, RFC7643 and RFC7644)
+
+
+
+- The Directory PMC will be responsible for the code.
+
+
+- A new sub-project with it's own git repository will be created. It will replace the previous eSCIMo sub-project.
+
+
+- Officer or member managing donation: Stefan Seelmann
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-06-18 | Trademark search found no use. On GitHub there are two small libraries that use the name, but both were initiated later than SCIMple. |
+
+Origin: https://github.com/PennState/SCIMple-Identity
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-06-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-07-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: CCLA from The Pennsylvania State University
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- The Pennsylivania State University
+
+| date | item |
+|------|------|
+| 2018-06-03 | Check that all active committers have a signed CLA on record. |
+| 2018-06-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-06-18 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-06-18 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on Apache Directory dev list](https://lists.apache.org/thread.html/48cd1ceeb6b96036bc9b7a98f4cc41618ac61ef15415b096a0d5c1ee@%3Cdev.directory.apache.org%3E) 
diff --git a/content/directory-triplesec.md b/content/directory-triplesec.md
new file mode 100644
index 0000000..fe479a6
--- /dev/null
+++ b/content/directory-triplesec.md
@@ -0,0 +1,80 @@
+Title: Triplesec Codebase Intellectual Property (IP) Clearance Status
+
+
+Triplesec is a set of modules that enable the use of ApacheDS as an Identity Management solution. Triplesec includes the following items:
+
+
+
+- Custom authorization schema for LDAP
+
+- Authorization API for accessing policy information within the directory
+
+- A Swing based GUI for configuring and managing authz and authn policy
+
+- ApacheDS integration with Jetty/Tomcat for administrative interfaces
+
+- Kerberos SAM module for 2-factor Authentication
+
+- Administration API
+
+- Custom ApacheDS Interceptor for managing referencial integrity
+
+- Installer Configurations
+
+- Utilities for 2-factor Authentication Client
+
+- Demo web applications for using Triplesec
+
+
+- The Directory PMC will be responsible for the code.
+
+
+- Since Triplesec is really the embelishment of ApacheDS for a specific function it will become a subproject of the Apache Directory TLP.
+
+
+- Officer or member managing donation: Alex Karasulu
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-10-18 | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+SHA1 sum for donated software: 17b4b6e698a01a551d48d84b3d99cc63d357ee93 (1.0)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-10-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-10-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Alex Karasulu
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2006-10-18 | Check that all active committers have a signed CLA on record: erodriguez, akarasulu, ersiner, elecharny, tbennett, trustin |
+| 2006-10-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-10-18 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-10-18 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://www.archivum.info/dev@directory.apache.org/2006-10/msg00017.html
diff --git a/content/directory.md b/content/directory.md
deleted file mode 100644
index 0275ede..0000000
--- a/content/directory.md
+++ /dev/null
@@ -1,193 +0,0 @@
-Title: directory
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Directory project graduated on 2005-02-23</span>
-
-
-The Directory Project is an attempt to centralize all naming and directory needs in one place at the ASF. This incubator project is language independent with the current components:
-
-
-
-- Apache Directory Server: an embeddable LDAP server written in Java
-
-- Kerberos: a Kerberos server 'module' for the directory server
-
-- Networking: a combination of networking code based on SEDA and ACE
-
-- LDAP: common client and server code for LDAP
-
-- AuthX: Authentication, Authorization and Accounting Framework
-
-- Naming: set of core functionality common to all JNDI providers
-
-- ASN1: Codecs for ASN.1
-
-
-- ApacheDS 0.8 and Naming 0.8 Released!
-
-- Kerberos server plugin added using common ASN.1 basis and snapping into the directory server's network layer
-
-- More committers on board, Trustin, Enrique, and Berin
-
-- Community is growing very rapidly with a good user community following especially after the 0.8 releases
-
-- All IP issues vetted in code base
-
-- All trademark issues with project names resolved
-
-- Voting for Incubator Exit
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/directory/](http://incubator.apache.org/directory/)  |
-| . | wiki |  [http://wiki.apache.org/directory](http://wiki.apache.org/directory)  |
-| Mailing list | dev | directory-dev@incubator.apache.org |
-| . | cvs | directory-cvs@apache.org |
-| Bug tracking | . |  [http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10400](http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10400)  |
-| Source code | SVN | incubator-directory |
-| Mentors | noel | Noel Bergman |
-| . | nicolaken | Nicola Ken Barozzi |
-| Committers | . |  [http://incubator.apache.org/directory/community/who/index.html](http://incubator.apache.org/directory/community/who/index.html)  |
-| . | noel | Noel Bergman |
-| . | nicolaken | Nicola Ken Barozzi |
-| . | erodriguez | Enrique Rodriguez |
-| . | jmachols | Jeff Machols |
-| . | akarasulu | Alex Karasulu |
-| . | trustin | Trustin Lee |
-| . | psteitz | Phil Steitz |
-| . | brett | Brett Porter |
-| . | bayard | Henri Yandell |
-| . | wesmckean | Wes McKean |
-| . | rpenoyer | Rob Penoyer |
-| . | bloritsch | Berin Loritsch |
-| . | adc | Alan Cabrera |
-| . | mcconnell | Stephan McConnell |
-| . | niclas | Niclas Hedman |
-| . | vtence | Vincent Tence |
-| Extra | . | . |
-
-# 2005-02-07 {#2005-02-07}
-
-```
-1). Is the STATUS file up to date? Yes 2). Any legal, cross-project
-or personal issues that still need to be addressed? * All IP issues
-in the code have been resolved. * All trademark issues with project
-names have been resolved. 3). What has been done for incubation since
-the last report? * Prepared to exit incubator this month: ran survay
-- ready to kick off vote * Released 0.8 ApacheDS and Naming from
-incubator * Significantly grew the community with more committers and
-users * Gump integration completed with usual hickups 4). Plans and
-expectations for the next period? * Graduate the incubator * Handle
-infrastructure setup to get us situated 5). Any recommendations for
-how incubation could run more smoothly for you? None. All is well.
-
-```
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2003-12-01 | The requested project name does not already exist. No software trademarks exist for the names Eve, Janus or Snickers. |
-| 2003-12-01 | The request was made to become a stand-alone PMC and the assessment was made to wrt the fit with the ASF. It was accepted that the directory project upon graduating the incubator would become a TLP. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2003-12-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2003-12-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2003-12-01 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2003-12-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2005-02-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2005-02-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2005-02-07 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2005-02-07 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2005-02-07 | Check that all active committers have submitted a contributors agreement. |
-| 2005-02-07 | Add all active committers in the STATUS file. |
-| COMPLETED | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| COMPLETED | Ask infrastructure to create source repository modules and add thecommitters to the avail file. |
-| COMPLETED | Ask infrastructure to set up and archive Mailing lists. |
-| COMPLETED | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| COMPLETED | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/distributedlog.md b/content/distributedlog.md
deleted file mode 100644
index e9cb1a8..0000000
--- a/content/distributedlog.md
+++ /dev/null
@@ -1,164 +0,0 @@
-Title: Apache DistributedLog incubation page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The DistributedLog project graduated on 2017-07-01</span>
-
-
-DistributedLog is a high-performance replicated log service. It offers durability, replication and strong consistency, which provides a fundamental building block for building reliable distributed systems.
-
-
-
-- 2016-06-24 Project enters incubation.
-
-- 2016-08-01 JIRA, mailing lists, git, confluence space created.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://distributedlog.incubator.apache.org/](http://distributedlog.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/DL](https://cwiki.apache.org/confluence/display/DL)  |
-| Mailing list | dev |  `dev`  `@`  `distributedlog.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `distributedlog.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/DL](https://issues.apache.org/jira/browse/DL)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/distributedlog/](https://svn.apache.org/repos/asf/incubator/distributedlog/)  |
-| Mentors | fpj | Flavio Junqueira |
-| . | cnauroth | Chris Nauroth |
-| . | hsaputra | Henry Saputra |
-| Committers | sijie | Sijie Guo |
-| . | robindh | Robin Dhamankar |
-| . | lstewart | Leigh Stewart |
-| . | drusek | Dave Rusek |
-| . |  | Honggang Zhang |
-| . |  | Jordan Bull |
-| . | satish | Satish Kotha |
-| . |  | Aniruddha Laud |
-| . | fcuny | Franck Cuny |
-| . | eax | Eitan Adler |
-| Extra | . | . |
-
-
--  [July 2016](https://wiki.apache.org/incubator/July2016) 
-
--  [August 2016](https://wiki.apache.org/incubator/August2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-07-07 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-07-21 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-07-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-07-12 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-07-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-07-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-08-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-08-23 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-08-23 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-07-21 | Check that all active committers have submitted a contributors agreement. |
-| 2016-07-21 | Add all active committers in the relevant section above. |
-| 2016-07-21 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/dolphinscheduler.md b/content/dolphinscheduler.md
deleted file mode 100644
index 74f47b5..0000000
--- a/content/dolphinscheduler.md
+++ /dev/null
@@ -1,209 +0,0 @@
-Title: Apache DolphinScheduler Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The DolphinScheduler project graduated on 2021-03-17.</span>
-
-
-DolphinScheduler is a distributed ETL scheduling engine with powerful DAG visualization interface. DolphinScheduler focuses on solving the problem of 'complex task dependencies and triggers' in data processing
-
-
-
-- 2020-12-31 DolphinScheduler 1.3.4 released
-
-- 2020-11-09 DolphinScheduler 1.3.3 released
-
-- 2020-09-01 DolphinScheduler 1.3.2 released
-
-- 2020-08-26 DolphinScheduler Maven Plugin 1.0.0 released
-
-- 2020-07-13 DolphinScheduler 1.3.1 released
-
-- 2020-06-28 DolphinScheduler 1.3.0 released
-
-- 2020-10-27 New committer: Qiang Guo
-
-- 2020-10-27 New committer: Yichao Yang
-
-- 2020-05-19 New committer: Hemin Wen
-
-- 2020-05-18 New committer: Shaojie Wu
-
-- 2020-05-13 New committer: Shang Lou
-
-- 2020-04-28 New ppmc: Xiaochun Liu
-
-- 2020-04-28 New ppmc: Guo Jiwei
-
-- 2020-04-23 New committer: Kai Zhu
-
-- 2020-04-23 New committer: Wenhe Li
-
-- 2020-02-24 DolphinScheduler 1.2.1 released
-
-- 2020-02-15 New committer: Caibiao Xiang
-
-- 2020-02-07 New committer: Xingchun Chen
-
-- 2020-02-03 New committer: Kejia Chen
-
-- 2020-02-03 New committer: Lin Li
-
-- 2020-02-03 New committer: Cong Huang
-
-- 2020-02-03 New committer: Li Huang
-
-- 2020-02-03 New committer: Zongyao Zhang
-
-- 2020-01-02 DolphinScheduler 1.2.0 released
-
-- 2019-11-12 New committer: Guo Jiwei
-
-- 2019-11-12 New committer: Xiaochun Liu
-
-- 2019-08-29 Project enters incubation.
-
-
-- DolphinScheduler Website - http://dolphinscheduler.incubator.apache.org
-
-
--  [Community Pages](https://dolphinscheduler.apache.org/en-us/community/) 
-
-
--  [Current Documentation](https://dolphinscheduler.apache.org/en-us/docs/1.3.4/user_doc/quick-start.html) 
-
-
--  [Releases](https://dolphinscheduler.apache.org/en-us/docs/release/download.html) 
-
-
-- The project status file is [here](https://svn.apache.org/repos/asf/incubator/public/trunk/content/projects/dolphinscheduler.xml) .
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://dolphinscheduler.incubator.apache.org/](http://dolphinscheduler.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/DOLPHINSCHEDULER/](https://cwiki.apache.org/confluence/display/DOLPHINSCHEDULER/)  |
-| Mailing list | dev |  `dev`  `@`  `dolphinscheduler.incubator.apache.org`  |
-| . | private |  `private`  `@`  `dolphinscheduler.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `dolphinscheduler.incubator.apache.org`  |
-| Bug tracking | . | https://github.com/apache/incubator-dolphinscheduler/issues |
-| Source code | . | . |
-| . | incubator-dolphinscheduler | https://github.com/apache/incubator-dolphinscheduler.git |
-| . | incubator-dolphinscheduler-website | https://github.com/apache/incubator-dolphinscheduler-website.git |
-| Roster | Whimsy |  [DolphinScheduler Roster](https://whimsy.apache.org/roster/ppmc/dolphinscheduler)  |
-| Mentors |  | see [DolphinScheduler Roster Mentors](https://whimsy.apache.org/roster/ppmc/dolphinscheduler#mentors)  |
-| (P)PMC and Committers |  | see [DolphinScheduler Roster PPMC + Committers](https://whimsy.apache.org/roster/ppmc/dolphinscheduler#ppmc)  |
-
-
--  [DolphinScheduler Board Reports](https://whimsy.apache.org/board/minutes/dolphinscheduler.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-08-29 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2019-08-29 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-09-03 | Request DNS (first step after creating podling status page) |
-| 2019-09-03 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2019-09-03 | Request [git repositories](https://dolphinscheduler.apache.org/)  |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| N/A | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2019-09-03 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2020-01-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2020-01-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/doris.md b/content/doris.md
deleted file mode 100644
index a3409a6..0000000
--- a/content/doris.md
+++ /dev/null
@@ -1,143 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Doris is a MPP-based interactive SQL data warehousing for reporting and analysis.
-
-
-
-- 2018-07-18 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://doris.incubator.apache.org/](http://doris.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `doris.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `doris.incubator.apache.org`  |
-| Bug tracking | . |  [https://github.com/baidu/palo/issues](https://github.com/baidu/palo/issues)  |
-| Source code | Git |  [https://github.com/baidu/palo](https://github.com/baidu/palo)  |
-| Roster | Whimsy |  [Doris Roster](https://whimsy.apache.org/roster/ppmc/doris)  |
-
-
--  [Doris Board Reports](https://whimsy.apache.org/board/minutes/doris.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) - PODLINGNAMESEARCH-146 |
-| 2018-08-21 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-07-18 | Request DNS (first step after creating podling status page) |
-| 2018-07-24 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2018-08-20 | Request [git repositories](https://reporeq.apache.org/) - INFRA-16943 |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-07-24 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-07-18 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-07-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2018-08-20 | Check that all active committers have submitted a contributors agreement. |
-| 2018-08-21 | Add all active committers in the relevant section above. |
-| 2018-08-20 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/drill.md b/content/drill.md
deleted file mode 100644
index 8f4bc05..0000000
--- a/content/drill.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: Drill Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Drill project graduated on 2014-11-19</span>
-
-
-Drill is a distributed system for interactive analysis of large-scale datasets, inspired by Google's Dremel.
-
-
-
-- 2012-09-11 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/drill/](http://incubator.apache.org/drill/)  |
-| Mailing lists | developer |  `drill-dev`  `@`  `incubator.apache.org`  |
-|  | private (PPMC) |  `drill-private`  `@`  `incubator.apache.org`  |
-|  | user |  `drill-user`  `@`  `incubator.apache.org`  |
-| Bug tracking |  |  [https://issues.apache.org/jira/browse/DRILL](https://issues.apache.org/jira/browse/DRILL)  |
-| Source code | SVN | Web site: [http://svn.apache.org/repos/asf/incubator/drill](http://svn.apache.org/repos/asf/incubator/drill) <br></br>Source code: [https://gitbox.apache.org/repos/asf/incubator-drill.git](https://gitbox.apache.org/repos/asf/incubator-drill.git)  |
-| Champion | Ted Dunning See the [Drill team page](http://incubator.apache.org/drill/team.html)  |
-| Mentors | FIXME: See the [Drill team page](http://incubator.apache.org/drill/team.html)  |
-| Committers | FIXME: See the [Drill team page](http://incubator.apache.org/drill/team.html)  |
-
-
-- http://wiki.apache.org/incubator/September2014
-
-- http://wiki.apache.org/incubator/June2014
-
-- http://wiki.apache.org/incubator/March2014
-
-- http://wiki.apache.org/incubator/December2013
-
-- http://wiki.apache.org/incubator/October2013
-
-- http://wiki.apache.org/incubator/September2013
-
-- http://wiki.apache.org/incubator/June2013
-
-- http://wiki.apache.org/incubator/March2013
-
-- http://wiki.apache.org/incubator/February2013
-
-- http://wiki.apache.org/incubator/January2013
-
-- http://wiki.apache.org/incubator/September2012
-
-- http://wiki.apache.org/incubator/December2012
-
-- http://wiki.apache.org/incubator/November2012
-
-- http://wiki.apache.org/incubator/October2012
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  [November 1, 2012](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-16)  | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.<br></br> |
-| 2012-09-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-08-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-08-09 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-08-20 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-08-30 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-08-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-08-25 | The Apache RAT check was added to check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| N/A | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-08-15 | Check that all active committers have submitted a contributors agreement. |
-| 2012-08-20 | Add all active committers in the STATUS file. |
-| 2012-08-20 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-09-02 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-08-20 | Ask infrastructure to set up and archive Mailing lists. |
-| 2012-08-20 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2012-08-20 | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) _YES_ 
-
-- Are project decisions being made in public by the committers? _YES_ 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? _YES_ 
-
-## Project Specific {#Project+Specific}
-
- _No project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/droids.md b/content/droids.md
deleted file mode 100644
index 48d2905..0000000
--- a/content/droids.md
+++ /dev/null
@@ -1,153 +0,0 @@
-Title: Apache Droids Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](http://incubator.apache.org/droids) .
-
-
-<span class="retired">The Droids podling retired on 2015-11-01.</span>
-
-
-Droids aims to be an intelligent standalone robot framework that allows to create and extend existing droids (robots).
-
-
-
--  **2008-10-24:** Apache Droids begins incubation
-
--  **2015-11-01:** Apache Droids retired from incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/droids/](http://incubator.apache.org/droids/)  |
-| Mailing list | dev |  `droids-dev`  `@`  `incubator.apache.org` (closed) |
-|  | commits |  `droids-commits`  `@`  `incubator.apache.org` (closed) |
-| Moderators | thorsten | Thorsten Scherler |
-| Bug tracking | jira |  [https://issues.apache.org/jira/browse/DROIDS](https://issues.apache.org/jira/browse/DROIDS)  |
-| Source code | svn |  [https://svn.apache.org/repos/asf/incubator/droids/](https://svn.apache.org/repos/asf/incubator/droids/)  |
-| Sponsor |  |  [Apache Lucene PMC](http://lucene.apache.org/) and [Apache HttpComponents PMC](http://hc.apache.org/)  |
-| Mentors | pzf | Paul Fremantle |
-|  | thorsten | Thorsten Scherler |
-|  | rfrovarp | Richard Frovarp |
-| Committers | thorsten | Thorsten Scherler |
-|  | ryan | Ryan McKinley |
-|  | gsingers | Grant Ingersoll |
-|  | olegk | Oleg Kalnichevski |
-|  | javier | Javier Puerto |
-|  | mingfai | Ma Ming Fai |
-|  | rfrovarp | Richard Frovarp |
-|  | bchapuis | Bertil Chapuis |
-
-# November 2008 {#November 2008}
-
-Droids aims to be an intelligent standalone robot framework that allows to create and extend existing droids (robots). Droids entered incubation on October 24nd, 2008.
-
-
-The Droids project has just started. The basic infrastructure (mailing lists, subversion, issue tracker, web site) still is not in place. We expect to get started with the actual design and code work during the next few weeks.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-10-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-10-01 | Subscribe all Mentors on the pmc and general lists. |
-|  | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2008-10-24 | Tell Mentors to track progress in the file 'incubator/projects/droids.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-08-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-08-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-08-05 | Check and make sure that for all code included with the distribution that is not under the Apache license, have the right to combine with Apache-licensed code and redistribute. |
-| 2011-08-05 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-10-01 | Check that all active committers have submitted a contributors agreement. |
-| 2008-10-24 | Add all active committers in the STATUS file. |
-| NA | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-|  | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-10-24 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-10-24 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-|  | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-See the [issue tracker](https://issues.apache.org/jira/browse/DROIDS) .
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/druid.md b/content/druid.md
deleted file mode 100644
index d930a9d..0000000
--- a/content/druid.md
+++ /dev/null
@@ -1,179 +0,0 @@
-Title: Druid Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Druid project has graduated on 2019-12-18.</span>
-
-
-Druid is a high-performance, column-oriented, distributed data store.
-
-
-
-- 2018-02-28 Druid enters incubation.
-
-- 2018-07-06 Druid source control moves to ASF Git at https://github.com/apache/incubator-druid.
-
-- 2018-11-20 New committer: Niketh Sabbineni.
-
-- 2018-11-20 New committer: Dylan Wylie.
-
-- 2018-11-20 New committer: Clint Wylie.
-
-- 2018-11-20 New committer: Egor Ryashin.
-
-- 2018-11-20 New committer: Surekha Saharan.
-
-- 2018-11-20 New committer: Mingming Qiu.
-
-- 2018-11-20 New committer: Xinyu Zhang.
-
-- 2018-11-20 New committer: Dayue Gao.
-
-- 2018-11-20 New committer: Kaijian Ding.
-
-- 2018-11-20 New committer: Benedict Jin.
-
-- 2018-12-12 Druid 0.13.0-incubating released.
-
-- 2019-04-09 Druid 0.14.0-incubating released.
-
-- 2019-05-08 Druid 0.14.1-incubating released.
-
-- 2019-05-27 Druid 0.14.2-incubating released.
-
-
--  [Druid web site](https://druid.apache.org/) 
-
-
--  [How to contribute](https://druid.apache.org/community/) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://druid.apache.org/](https://druid.apache.org/)  |
-| Mailing lists | dev |  `dev`  `@`  `druid.apache.org`  |
-| . | users |  `users`  `@`  `druid.apache.org`  |
-| Bug tracking | . |  [https://github.com/apache/incubator-druid/issues](https://github.com/apache/incubator-druid/issues)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf?p=incubator-druid.git](https://gitbox.apache.org/repos/asf?p=incubator-druid.git)  |
-| . | git (site) |  [http://gitbox.apache.org/repos/asf/incubator-druid-site.git](http://gitbox.apache.org/repos/asf/incubator-druid-site.git)  |
-| Mentors | jhyde | Julian Hyde |
-| . | ptgoetz | P. Taylor Goetz |
-| . | junrao | Jun Rao |
-| Committers / PPMC | Whimsy |  [Druid Roster](https://whimsy.apache.org/roster/ppmc/druid)  |
-
-
--  [Druid Board Reports](https://whimsy.apache.org/board/minutes/druid.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-02-18 [ [PODLINGNAMESEARCH-142](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-142) ] | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2018-04-30 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-04-30 | Request DNS (first step after creating podling status page) |
-| 2018-04-30 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2018-04-30 | Request [git repositories](https://reporeq.apache.org/)  |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| N/A (using GitHub) | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| N/A (not using wiki) | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2019-06-12 (website was the final item) | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-04-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-04-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-02-28 | Tell Mentors to track progress in the file 'incubator/projects/druid.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-05-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2018-07-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-12-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-12-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-06-19 | Check that all active committers have submitted a contributors agreement. |
-| 2019-06-19 | Add all active committers in the relevant section above. |
-| 2019-06-19 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? _N/A_ 
-
-- If graduating to a new PMC, has the board voted to accept it? _Yes_ 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? _Yes_ 
diff --git a/content/dubbo-dubbox.md b/content/dubbo-dubbox.md
new file mode 100644
index 0000000..559282f
--- /dev/null
+++ b/content/dubbo-dubbox.md
@@ -0,0 +1,62 @@
+Title: Dubbox Documentation Codebase Intellectual Property (IP) Clearance Status
+
+
+Dubbox is a forked repository from Dubbo with servearl enhancement including rest support and more protocol support like fst and kryo, which is open sourced by Dangdang. The core functionality has been donated to Dubbo before Dubbo is joning ASF, and Dangdang would like to donate the documentation of rest and serialization support to Dubbo.
+
+
+
+- Which PMC will be responsible for the code: Apache Dubbo(incubating)
+
+
+- Into which existing project/module: Apache Dubbo(incubating)
+
+
+- Officer or member managing donation: Justin Mclean
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-04-11 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Pull request: https://github.com/apache/incubator-dubbo-docs/pull/14
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-05-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-05-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Donate DubboX Papers_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Dangdang_ 
+
+| date | item |
+|------|------|
+| 2018-05-15 | Check that all active committers have a signed CLA on record. |
+| 2018-05-15 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-05-15 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-05-15 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/dubbo-getty.md b/content/dubbo-getty.md
new file mode 100644
index 0000000..cfe0ec9
--- /dev/null
+++ b/content/dubbo-getty.md
@@ -0,0 +1,75 @@
+Title: Dubbo Getty Codebase Intellectual Property (IP) Clearance Status
+
+
+The Dubbo Getty project is a Go implementation of The Netty Project.
+
+
+
+- The Apache Dubbo PMC will be responsible for the code
+
+
+- Officer or member managing donation: Ian Luo
+
+ _Completed tasks are shown by the completion date (2020-07-24)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2020-07-24 | Source codebase is from [GitHub commit](https://github.com/dubbogo/getty/commit/4965ba8b512b66600c5e518ee089f6cf33c7006b)  **Confirmed.**  |
+|------------|-------------------------------------------------|
+
+Git commit SHA for donated software: 4965ba8b512b66600c5e518ee089f6cf33c7006b. MD5 of the Zip file is 6e1e2ead7782a0dfae7261fd59b6a808.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-07-24 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2020-07-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Secreatory has confirmed that SGA is received. https://lists.apache.org/thread.html/af6cf16232911f7adfa41f4ed3a860a00a3b2ff9456cd0a68bf1463d@%3Cprivate.dubbo.apache.org%3E
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Xin Zhao(ICLA on file)
+
+- Yincheng Fang(ICLA on file)
+
+- Tianying Pan(ICLA on file)
+
+- Liu Yang(ICLA on file)
+
+- Yixian Zou(ICLA on file)
+
+- Xinge Gao(ICLA on file)
+
+| date | item |
+|------|------|
+| 2020-07-24 | Check that all active committers have a signed CLA on record. **Confirmed, ICLAs on file as noted above.**  |
+| 2020-07-24 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution.**  |
+| 2020-07-24 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance IPMC request: https://lists.apache.org/thread.html/r0ef8a24a831444f22d898dd12828eb563af256fbead131fed7322d8f%40%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance IPMC result: https://lists.apache.org/thread.html/r0ef8a24a831444f22d898dd12828eb563af256fbead131fed7322d8f%40%3Cgeneral.incubator.apache.org%3E
+
+- Dubbo PMC acceptance vote: https://lists.apache.org/thread.html/r46e30a742d5ced2daedbab3d45bd3bf8279c372d4fe1b5599dc8dd0f%40%3Cdev.dubbo.apache.org%3E
+
+- Dubbo PMC vote result: https://lists.apache.org/thread.html/r46e30a742d5ced2daedbab3d45bd3bf8279c372d4fe1b5599dc8dd0f%40%3Cdev.dubbo.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/DUBBO-43
diff --git a/content/dubbo-go-hessian2.md b/content/dubbo-go-hessian2.md
new file mode 100644
index 0000000..380719d
--- /dev/null
+++ b/content/dubbo-go-hessian2.md
@@ -0,0 +1,90 @@
+Title: Dubbo go-hessian2 Codebase Intellectual Property (IP) Clearance Status
+
+
+The Dubbo go-hessian2 project is a golang implementation of hessian2 library, which is a popular serialization framwork.
+
+
+
+- The Apache Dubbo PMC will be responsible for the code
+
+
+- It will be integrated into dubbo-go project.
+
+
+- Officer or member managing donation: Huxing Zhang
+
+ _Completed tasks are shown by the completion date (2019-06-18)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2019-07-04 | Source codebase is from [GitHub commit](https://github.com/dubbogo/hessian2/commit/021916f93a8f7e7701bed52984fcd8a2495749ba)  **Confirmed.**  |
+|------------|-------------------------------------------------|
+
+Git commit SHA for donated software: 021916f93a8f7e7701bed52984fcd8a2495749ba. MD5 of the Zip file is 20a1a8de60b7eec2034bcec45dbb1341.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-07-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-07-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Secreatory has confirmed that SGA is not needed. https://lists.apache.org/thread.html/0c1b6446cbef47e8fb803db90a9a22c732e65dec2a24766364f1ab15@%3Cprivate.dubbo.apache.org%3E
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Liam Chen(ice-summer-bug) (ICLA on file)
+
+- Jimmy Zha(ckex) (ICLA on file)
+
+- Kai Wang(yiduwangkai) (ICLA on file)
+
+- Chih Hsing(aliiohs) (ICLA on file)
+
+- Li Dong(comdd) (ICLA on file)
+
+- Tianying Pan(pantianying) (ICLA on file)
+
+- Liu Yang(wongoo) (ICLA on file)
+
+- Alex Stocks(AlexStocks) (ICLA on file)
+
+- Yincheng Fang(fangyincheng) (ICLA on file)
+
+- Xinming He(hxmhlt) (ICLA on file)
+
+- Ziqing Zhou(u0x01) (ICLA on file)
+
+- Xinge Gao(gaoxinge) (ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-07-17 | Check that all active committers have a signed CLA on record. **Confirmed, ICLAs on file as noted above.**  |
+| 2019-07-23 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution.**  |
+| 2019-07-23 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance IPMC request: https://lists.apache.org/thread.html/3591624e3b2cd4351ded8b2375fee44db1479f9c806ff911e406bd83@%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance IPMC result: https://lists.apache.org/thread.html/c6304e62aa233e87c911cd55b8397d8128fe0e0756c9ad3a7179e3d5@%3Cgeneral.incubator.apache.org%3E
+
+- Dubbo PMC acceptance vote: https://lists.apache.org/thread.html/cc17e21a8d65f5f5a54f4c96a78c41ca7d1e1ea847a7c19275514402@%3Cdev.dubbo.apache.org%3E
+
+- Dubbo PMC vote result: https://lists.apache.org/thread.html/8e3df8f44969f8a24d20573e5128a45e66492988065aded5e0afde2e@%3Cdev.dubbo.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-242
diff --git a/content/dubbo-go-pixiu.md b/content/dubbo-go-pixiu.md
new file mode 100644
index 0000000..fb7ec5d
--- /dev/null
+++ b/content/dubbo-go-pixiu.md
@@ -0,0 +1,85 @@
+Title: Dubbo go-pixiu Codebase Intellectual Property (IP) Clearance Status
+
+
+The Dubbo go-pixiu project is a Go implementation gateway for dubbo ecosystem.
+
+
+
+- The Apache Dubbo PMC will be responsible for the code
+
+
+- Officer or member managing donation: Ian Luo
+
+ _Completed tasks are shown by the completion date (2021-03-19)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2020-07-24 | Source codebase is from [GitHub commit](https://github.com/dubbogo/dubbo-go-pixiu/commit/ca4d0f51108e78e2a92046dcb323712f783d138c)  **Confirmed.**  |
+|------------|-------------------------------------------------|
+
+Git commit SHA for donated software: ca4d0f51108e78e2a92046dcb323712f783d138c. MD5 of the Zip file is 6010156e729a01aaa7f80ecabeeeb620.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-03-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2021-03-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Secreatory has confirmed that SGA is received. https://lists.apache.org/thread.html/af6cf16232911f7adfa41f4ed3a860a00a3b2ff9456cd0a68bf1463d@%3Cprivate.dubbo.apache.org%3E
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- williamfeng323(ICLA on file)
+
+- mark4z(ICLA on file)
+
+- xiaoliu10(ICLA on file)
+
+- oaoit(ICLA on file)
+
+- xianlezheng(ICLA on file)
+
+- ztelur(ICLA on file)
+
+- zhangshen023(ICLA on file)
+
+- cityiron/IronCity(ICLA on file)
+
+- zouyx(ICLA on file)
+
+- pantianying(ICLA on file)
+
+- AlexStocks(ICLA on file)
+
+| date | item |
+|------|------|
+| 2021-03-19 | Check that all active committers have a signed CLA on record. **Confirmed, ICLAs on file as noted above.**  |
+| 2021-03-19 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution.**  |
+| 2020-03-19 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance IPMC request: https://lists.apache.org/thread.html/r5be9dea86e2ac6aed61ecbdd68e79fd2d40d39fcf6d404a4230ee8fd%40%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance IPMC result: https://lists.apache.org/thread.html/rb3ccba628fc94a9bbf6edf080813d57294523b4f7895dad263083cd5%40%3Cprivate.dubbo.apache.org%3E
+
+- Dubbo PMC acceptance vote: https://lists.apache.org/thread.html/r0a7acbbb0f6b5cfa5ede40d71fe9df3107e6ad11bd2814970aa1f96c%40%3Cdev.dubbo.apache.org%3E
+
+- Dubbo PMC vote result: https://lists.apache.org/thread.html/rc4ea452e3d8266b46b6a29deaec247937d4bb8fa632cdcc08528cb43%40%3Cdev.dubbo.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-263
diff --git a/content/dubbo-python.md b/content/dubbo-python.md
new file mode 100644
index 0000000..01c2e50
--- /dev/null
+++ b/content/dubbo-python.md
@@ -0,0 +1,65 @@
+Title: Dubbo python Codebase Intellectual Property (IP) Clearance Status
+
+
+The Dubbo python project is a python implementation of Apache Dubbo client.
+
+
+
+- The Apache Dubbo PMC will be responsible for the code
+
+
+- Officer or member managing donation: Ian Luo
+
+ _Completed tasks are shown by the completion date (2019-06-18)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2019-10-17 | Source codebase is from [GitHub commit](https://github.com/RitterHou/python-dubbo/commit/463156a2d33416f645e1b5fe3505455f1c951dc3)  **Confirmed.**  |
+|------------|-------------------------------------------------|
+
+Git commit SHA for donated software: 463156a2d33416f645e1b5fe3505455f1c951dc3. MD5 of the Zip file is 06a6d4caf6e7542a06205ee5c13ab55d.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-10-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Secreatory has confirmed that SGA is received. https://lists.apache.org/thread.html/af6cf16232911f7adfa41f4ed3a860a00a3b2ff9456cd0a68bf1463d@%3Cprivate.dubbo.apache.org%3E
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Yue Hou(RitterHou) (ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-10-17 | Check that all active committers have a signed CLA on record. **Confirmed, ICLAs on file as noted above.**  |
+| 2019-10-17 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution.**  |
+| 2019-10-17 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant. There's only one third party dependency, kazoo, which is under ASF 2.0 license.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance IPMC request: https://lists.apache.org/thread.html/8d58e9d1b29b2c70c758b54df854df512e7149bb0e75b851ae14bc64@%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance IPMC result: https://lists.apache.org/thread.html/8d258558b6401483ff9f5926ef84addbb09bbc30d2a6250c4fb4d1c9@%3Cgeneral.incubator.apache.org%3://lists.apache.org/thread.html/8d258558b6401483ff9f5926ef84addbb09bbc30d2a6250c4fb4d1c9@%3Cgeneral.incubator.apache.org%3E
+
+- Dubbo PMC acceptance vote: https://lists.apache.org/thread.html/8796b5a9f63b4798334def975686b23fc66bd3974fe9b2f82c2576b4@%3Cdev.dubbo.apache.org%3E
+
+- Dubbo PMC vote result: https://lists.apache.org/thread.html/5dac189a05a6444f24b1ad7ee3796dc1fd1eb6eb05762cdd8560492a@%3Cdev.dubbo.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-246
diff --git a/content/dubbo.md b/content/dubbo.md
deleted file mode 100644
index 3fe5b92..0000000
--- a/content/dubbo.md
+++ /dev/null
@@ -1,271 +0,0 @@
-Title: Dubbo Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Dubbo project has graduated on 2019-05-15.</span>
-
-
-Dubbo is a high-performance, lightweight, Java based RPC framework.
-
-
-
-- 2018-02-16 Dubbo enters incubation.
-
-- 2018-06-07 Dubbo 2.6.2 has been released.
-
-- 2018-06-07 New committer: Zonghai Shang(yiji).
-
-- 2018-07-10 New committer: YunKun Huang(htynkn)
-
-- 2018-08-09 New committer: Yong Zhu(diecui1202)
-
-- 2018-08-09 New committer: Kimm King(kimmking)
-
-- 2018-08-29 New committer: Yuhang Xiu(carryxyh)
-
-- 2018-09-11 Dubbo 2.6.3 has been released.
-
-- 2018-09-11 New committer: Minxuan Zhuang(min)
-
-- 2018-10-08 Dubbo 2.6.4 has been released.
-
-- 2018-10-31 New committer: Jinkai Ma(majinkai)
-
-- 2018-11-01 New PMC member: Zonghai Shang(yiji)
-
-- 2018-11-05 New committer: Zhenqiang Yi(manzhizhen)
-
-- 2018-11-09 New committer: Victory Cao(cvictory)
-
-- 2018-11-14 New committer: Liandong Chen(purple-force)
-
-- 2018-11-21 New committer: Jeff Lv(Jeff-Lv)
-
-- 2018-11-23 Dubbo 2.6.5 has been released.
-
-- 2018-12-03 New PMC member: Yong Zhu(diecui1202)
-
-- 2018-12-20 New PMC member: Yuhang Xiu(carryxyh)
-
-- 2019-01-23 New committer: Taosheng Wei(tswstarplanet)
-
-- 2019-01-25 New committer: Xianjun Ke(kexianjun)
-
-- 2019-01-27 Dubbo spring boot starter 0.2.1 and 0.1.2 has been released.
-
-- 2019-01-29 Dubbo 2.7.0 has been released.
-
-- 2019-01-30 New committer: Kun Song(satansk)
-
-- 2019-01-31 New committer: Xiaojie Li(lixiaojiee)
-
-- 2019-02-02 New committer: Yuhao Bi(biyuhao)
-
-- 2019-02-02 New PMC member: Minxuan Zhuang(min)
-
-- 2019-02-14 Dubbo spring boot starter 2.7.0 has been released.
-
-- 2019-02-15 Dubbo Ops 0.1 has been released.
-
-- 2019-02-18 New committer: Zhongming Hua(crazyhzm)
-
-- 2019-02-25 New PMC member: Yunkun Huang(htynkn)
-
-- 2019-03-05 New committer: Zhenxu Ke(kezhenxu94)
-
-- 2019-03-06 New committer: Zhen Li(lizhen)
-
-- 2019-03-06 New committer: Imteyaz Khan(iakhan)
-
-- 2019-03-12 Dubbo 2.6.6 has been released.
-
-- 2019-03-25 New committer: Jingfeng Xu(kirito)
-
-- 2019-03-26 Dubbo 2.7.1 has been released.
-
-- 2019-03-27 New PMC member: Kimm King(kimmking)
-
-- 2019-04-09 Dubbo spring boot starter 2.7.1 has been released.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://dubbo.incubator.apache.org/](http://dubbo.incubator.apache.org/)  |
-| . | wiki |  [https://github.com/apache/incubator-dubbo/wiki](https://github.com/apache/incubator-dubbo/wiki)  |
-| Mailing list | dev |  `dev@dubbo.incubator.apache.org`  |
-| . | commits |  `commits@dubbo.incubator.apache.org`  |
-| . | issues |  `issues@dubbo.incubator.apache.org`  |
-| . | notifications |  `notifications@dubbo.incubator.apache.org`  |
-| . | security |  `security@dubbo.incubator.apache.org`  |
-| Bug tracking | Github issues |  [https://github.com/apache/incubator-dubbo/issues](https://github.com/apache/incubator-dubbo/issues)  |
-| Source code | incubator-dubbo |  [https://github.com/apache/incubator-dubbo](https://github.com/apache/incubator-dubbo)  |
-| . | incubator-dubbo-spring-boot-project |  [https://github.com/apache/incubator-dubbo-spring-boot-project](https://github.com/apache/incubator-dubbo-spring-boot-project)  |
-| . | incubator-dubbo-ops |  [https://github.com/apache/incubator-dubbo-ops](https://github.com/apache/incubator-dubbo-ops)  |
-| . | incubator-dubbo-website |  [https://github.com/apache/incubator-dubbo-website](https://github.com/apache/incubator-dubbo-website)  |
-| . | incubator-dubbo-docs(deprecated) |  [https://github.com/apache/incubator-dubbo-docs](https://github.com/apache/incubator-dubbo-docs)  |
-| . | incubator-dubbo-rpc-jsonrpc |  [https://github.com/apache/incubator-dubbo-rpc-jsonrpc](https://github.com/apache/incubator-dubbo-rpc-jsonrpc)  |
-| . | incubator-dubbo-feature-test |  [https://github.com/apache/incubator-dubbo-feature-test](https://github.com/apache/incubator-dubbo-feature-test)  |
-| . | incubator-dubbo-samples |  [https://github.com/apache/incubator-dubbo-samples](https://github.com/apache/incubator-dubbo-samples)  |
-| Mentors | jmclean(champion) | Justin Mclean |
-| . | markt | Mark Thomas |
-| . | wave | Dave Fisher |
-| . | johndament(retired) | John D. Ament |
-| . | jfclere(retired) | Jean-Frederic Clere |
-| Committers/PPMC | huxing | Huxing Zhang |
-| . | vongosling | Von Gosling |
-| . | jmclean | Justin Mclean |
-| . | johndament | John D. Ament |
-| . | jfclere | Jean-Frederic Clere |
-| . | markt | Mark Thomas |
-| . | leonleeldc | Dingcheng Li |
-| . | iluo | Ian Luo |
-| . | liujun | Jun Liu |
-| . | zhangliang | Liang Zhang |
-| . | liujieqin | Liujie Qin |
-| . | mercyblitz | Mercy Ma |
-| . | wangxin | Xin Wang |
-| . | yuyijq | Zhaohui Yu |
-| . | yiji | Shang Zonghai |
-| . | hyunkun | YunKun Huang |
-| . | jerrick | Yong Zhu |
-| . | kimmking | Kimm King |
-| . | carryxyh | Yuhang Xiu |
-| . | min | Minxuan Zhuang |
-| . | mjk | Jinkai Ma |
-| . | yizhenqiang | Zhenqiang Yi |
-| . | purpleforce | Liandong Chen |
-| . | jefflv | Jeff Lv |
-| . | tswstarplanet | Taosheng Wei |
-| . | kexianjun | Xianjun Ke |
-| . | satansk | Kun Song |
-| . | lixiaojie | Xiaojie Li |
-| . | biyuhao | Yuhao Bi |
-| . | crazyhzm | Zhongming Hua |
-| . | kezhenxu94 | Zhenxu Ke |
-| . | iakhan | Imteyaz Khan |
-| . | lizhen | Zhen Li |
-| . | kirito | Jingfeng Xu |
-
-
--  [March 2018](http://wiki.apache.org/incubator/March2018) 
-
--  [April 2018](http://wiki.apache.org/incubator/April2018) 
-
--  [May 2018](http://wiki.apache.org/incubator/May2018) 
-
--  [June 2018](http://wiki.apache.org/incubator/June2018) 
-
--  [September 2018](http://wiki.apache.org/incubator/September2018) 
-
--  [December 2018](http://wiki.apache.org/incubator/December2018) 
-
--  [March 2019](http://wiki.apache.org/incubator/March2019) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase of incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-02-16 | Make sure that the requested project name does not already exist. [http://www.apache.org/foundation/m\ arks/naming.html](http://www.apache.org/foundation/marks/naming.html) Please follow the guide to ensure a suitable project/product name. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2018-02-16 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-02-20 | Ask infrastructure to set up and archive mailing lists. |
-| 2018-02-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2018-02-20 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2018-02-20 | Ask infrastructure to set up wiki (Confluence). |
-| 2018-02-28 | Migrate the project to Apache infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2019-04-18 | Subscribe all Mentors on the pmc and general lists. |
-| 2019-04-18 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2019-04-18 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-03-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2018-03-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-06-07 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-06-07 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2018-09-05 | Check that all active committers have submitted a contributors agreement. |
-| 2018-09-05 | Add all active committers in the relevant section above. |
-| 2018-09-05 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) YES
-
-- Are project decisions being made in public by the committers? YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers? YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/eagle.md b/content/eagle.md
deleted file mode 100644
index 4efddd9..0000000
--- a/content/eagle.md
+++ /dev/null
@@ -1,195 +0,0 @@
-Title: Eagle Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Eagle is a Monitoring solution for Hadoop to instantly identify access to sensitive data, recognize attacks, malicious activities and take actions in real time. Eagle supports a wide variety of policies on HDFS data and Apache Hive. Eagle also provides machine learning models for detecting anomalous user behavior in Apache Hadoop.
-
-
-<span class="graduated">The Eagle project graduated on 2016-12-21</span>
-
-
-
-- 2016-12-21 Graduated to Apache TLP.
-
-- 2016-11-15 Add one new committer: Jijun Tang.
-
-- 2016-10-12 start graduation discussion and steps.
-
-- 2016-09-05 Add one new committer: Jinhu Wu.
-
-- 2016-07-21 Apache Eagle 0.4.0-incubating released.
-
-- 2016-06-17 Add one new committer: Michael Wu.
-
-- 2016-06-13 Add one new committer: Daniel Zhou.
-
-- 2016-04-11 Apache Eagle 0.3.0-incubating released.
-
-- 2016-02-01 Add one new committer: Ralph Su.
-
-- 2015-11-19 Mailing list, wiki, jira, git repo and website initialized.
-
-- 2015-10-26 Project entered incubation.
-
-
-- Project Website: http://eagle.incubator.apache.org/
-
-
-- Community and how to contribute: https://cwiki.apache.org/confluence/display/EAG/Community
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://eagle.incubator.apache.org/](http://eagle.incubator.apache.org/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/EAG](http://cwiki.apache.org/confluence/display/EAG)  |
-| Mailing list | user |  `user`  `@`  `eagle.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `eagle.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `eagle.incubator.apache.org`  |
-| Bug tracking | jira |  [https://issues.apache.org/jira/browse/EAGLE](https://issues.apache.org/jira/browse/EAGLE)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-eagle.git](https://gitbox.apache.org/repos/asf/incubator-eagle.git)  |
-| . | GitHub |  [https://github.com/apache/incubator-eagle](https://github.com/apache/incubator-eagle)  |
-| Mentors | hsaputra | Henry Saputra |
-| . | omalley | Owen O'Malley |
-| . | jhyde | Julian Hyde |
-| . | ptgoetz | P. Taylor Goetz |
-| . | amareshwari | Amareshwari Sriramadasu |
-| Committers | yonzhang2012 | Edward Zhang |
-| . | hao | Hao Chen |
-| . | arunmanoharan | Arun Manoharan |
-| . | libsun | Libin Sun |
-| . | jilin | Jilin Jiang |
-| . | qingwzhao | Qingwen Zhao |
-| . | cgupta | Chaitali Gupta |
-| . | ralphsu | Ralph Su |
-| . | senthilec566 | Senthil Kumar |
-| . | hdendukuri | Hemanth Dendukuri |
-| . | dazhou | Daniel Zhou |
-| . | mw | Michael Wu |
-| . | jinhuwu | Jinhu Wu |
-| . | jjtang | Jijun Tang |
-
-
--  [November 2016](https://wiki.apache.org/incubator/November2016) 
-
--  [August 2016](https://wiki.apache.org/incubator/August2016) 
-
--  [May 2016](https://wiki.apache.org/incubator/May2016) 
-
--  [February 2016](https://wiki.apache.org/incubator/February2016) 
-
--  [January 2016](https://wiki.apache.org/incubator/January2016) 
-
--  [December 2015](https://wiki.apache.org/incubator/December2015) 
-
--  [November 2015](https://wiki.apache.org/incubator/November2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-10-21 | Make sure that the requested project name does not already exist. We've completed the [podling name search for Apache Eagle](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-85)  |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-10-28 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-10-28 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-10-28 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-10-28 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/easyant.md b/content/easyant.md
deleted file mode 100644
index ace30bf..0000000
--- a/content/easyant.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: EasyAnt Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-Easyant graduated as a subproject of Ant
-
-
-<span class="graduated">The EasyAnt project graduated on 2013-03-12</span>
-
-
-Easyant is a build system based on Apache Ant and Apache Ivy.
-
-
-
-- 2011-03-24 Website is online in Apache Incubator infrastructure
-
-- 2011-01-31 Project enters incubation.
-
-- 2013-02-27 Release of Easyant core, plugins and skeletons 0.9-incubating
-
-- 2013-03-12 Easyant graduates as a subproject of Ant
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/easyant/](http://incubator.apache.org/easyant/)  |
-| Mailing list | dev |  `easyant-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `easyant-commits`  `@`  `incubator.apache.org`  |
-| . | ppmc |  `easyant-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/EASYANT](https://issues.apache.org/jira/browse/EASYANT)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/easyant/](https://svn.apache.org/repos/asf/incubator/easyant/)  |
-| Mentors | antelder | Anthony Elder |
-| Champion | antoine | Antoine Lévy-Lambert |
-| Mentors | bodewig | Stefan Bodewig |
-| Committers | hibou | Nicolas Lalevée |
-| Commiters | jbenois | Jérôme Benois |
-| Commiters | jlboudart | Jean-Louis Boudart |
-| Commiters | kpsiddharth | Siddhartha Purkayastha |
-| Commiters | xavier | Xavier Hanin |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
- **DONE.** 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-07-12 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2011-01-04 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-02-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-02-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-02-15 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-02-17 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-12-08 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-02-14 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-02-17 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-09-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-02-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-02-17 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-02-18 | Check that all active committers have submitted a contributors agreement.  **Still waiting for Jason Trump's contributor agreement** |
-| 2011-01-31 | Add all active committers in the STATUS file. |
-| 2011-02-18 | Ask root for the creation of committers' accounts on people.apache.org.  **Waiting for Jason Trump's contributor agreement** |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?<br></br> **Yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)<br></br>The team is composed by 6 independent committers.<br></br> **Yes** 
-
-- Are project decisions being made in public by the committers?<br></br> **Yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?<br></br> **Yes** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?<br></br> **Yes** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-<br></br> **Yes** 
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-<br></br> **Yes** 
\ No newline at end of file
diff --git a/content/echarts.md b/content/echarts.md
deleted file mode 100644
index b7cf3d5..0000000
--- a/content/echarts.md
+++ /dev/null
@@ -1,130 +0,0 @@
-Title: Incubation Status ECharts
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Echarts project graduated on 2020-12-16</span>
-
-
-Apache ECharts is a charting and data visualization library written in JavaScript. ECharts provides a powerful, interactive charting and data visualization library and framework for web browser, mobile App and backend usage.
-
-
-
-- 2018-01-16 The Apache ECharts Project enters incubation! See the [Proposal](http://incubator.apache.org/projects/echarts.html) for more information.
-
-| item | type | reference |
-|------|------|-----------|
-| Mailing list | dev |  `dev`  `@`  `echarts.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `echarts.incubator.apache.org`  |
-| Roster | Whimsy |  [Apache ECharts Roster](https://whimsy.apache.org/roster/ppmc/echarts)  |
-
-
--  [Apache ECharts Board Reports](https://whimsy.apache.org/board/minutes/echarts.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-09-02 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| NA - not request from an existing Apache project | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| COMPLETE | Request DNS (first step after creating podling status page) |
-| COMPLETE - Mailing lists are setup and working for Private, Commits &amp; Dev | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| COMPLETE | Request [git repositories](https://reporeq.apache.org/)  |
-| COMPLETE | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| NA - no wiki required | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| COMPLETE | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| COMPLETE | Subscribe all Mentors on the pmc and general lists. |
-| COMPLETE | Give all Mentors access to the incubator repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| COMPLETE | Tell Mentors to track progress in the file 'incubator/projects/echarts.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| COMPLETE - SGA received Feb 6, 2018 and forwarded to Secretary@ on Feb 15, 2018. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| COMPLETE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| COMPLETE | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| COMPLETE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| COMPLETE | Check that all active committers have submitted a contributors agreement. |
-| COMPLETE | Add all active committers in the relevant section above. |
-| COMPLETE | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/edgent.md b/content/edgent.md
deleted file mode 100644
index 1bdeb47..0000000
--- a/content/edgent.md
+++ /dev/null
@@ -1,173 +0,0 @@
-Title: Edgent Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Edgent podling retired on 2019-11-20</span>
-
-
-Edgent is a stream processing programming model and lightweight runtime to execute analytics at devices on the edge or at the gateway.
-
-
-
-
-
-
-- 2016-02-29 Edgent enters incubation (using the name Quarks).
-
-
-- 2016-04-21 Cazen Lee voted committer/ppmc member.
-
-
-- 2016-05-18 Kathy Saunders and Queenie Ma voted committer/ppmc member.
-
-
-- 2016-07-21 New project name Edgent approved.
-
-
-- 2016-12-15 Apache Edgent release 1.0.0-incubating.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://edgent.incubator.apache.org/](http://edgent.incubator.apache.org/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/EDGENT/](http://cwiki.apache.org/confluence/display/EDGENT)  |
-| Mailing list | dev |  `dev`  `@`  `edgent.apache.org`  |
-| . | commits |  `commits`  `@`  `edgent.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/EDGENT](https://issues.apache.org/jira/browse/EDGENT)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-edgent.git](https://gitbox.apache.org/repos/asf/incubator-edgent.git)  |
-| Twitter | twitter |  [https://twitter.com/apacheedgent](https://twitter.com/apacheedgent)  |
-| Mentors | djd | Daniel Debrunner |
-| . | lresende | Luciano Resende |
-| . | kmarsden | Katherine Marsden |
-| . | jmclean | Justin Mclean |
-| Committers/PPMC | djd | Daniel Debrunner |
-| . | home4slc | Susan Cline |
-| . | wcmarsha | William Marshall |
-| . | vdogaru | Victor Dogaru |
-| . | dlaboss | Dale LaBossiere |
-| . | casen | Cazen Lee |
-| . | kathysaunders | Kathy Saunders |
-| . | queeniema | Queenie Ma |
-| Extra | . | . |
-
-
--  [April 2016](http://wiki.apache.org/incubator/April2016) 
-
--  [May 2016](http://wiki.apache.org/incubator/May2016) 
-
--  [June 2016](http://wiki.apache.org/incubator/June2016) 
-
--  [September 2016](http://wiki.apache.org/incubator/September2016) 
-
--  [November 2016](http://wiki.apache.org/incubator/November2016) 
-
--  [February 2017](http://wiki.apache.org/incubator/February2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
-0 _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-07-21 | Make sure that the requested project name does not already exist. [http://www.apache.org/foundation/m\ arks/naming.html](http://www.apache.org/foundation/marks/naming.html) Please follow the guide to ensure a suitable project/product name. Complete. Project was renamed Edgent from Quarks. New name was approved and infra tasks completed for rename [PODLINGNAMESEARCH-105](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-105)  |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2016-04-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-03-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-03-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-03-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-04-21 | Ask infrastructure to set up wiki (Confluence). |
-| 2016-08-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-04-07 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-03-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-03-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-03-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-03-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-12-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. Completed with 1.0.0 release. |
-| 2016—12-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. Completed with 1.0.0 release |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-03-11 | Check that all active committers have submitted a contributors agreement. |
-| 2016-03-11 | Add all active committers in the relevant section above. |
-| 2016-03-11 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? Yes.
-
-- Are there three or more independent committers? Just 2 so far(The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers? Yes.
-
-- Are the decision-making guidelines published and agreed to by all of the committers? We use the Apache guidelines at<A href="http://apache.org/foundation/voting.html">http://apache.org/foundation/voting.html</A>
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers? Yes.
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/empire-db.md b/content/empire-db.md
deleted file mode 100644
index d53e2d5..0000000
--- a/content/empire-db.md
+++ /dev/null
@@ -1,173 +0,0 @@
-Title: Empire-db Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Empire-db project graduated on 2012-01-24</span>
-
-
-Empire-db is a data persistence component which allows database vendor independent dynamic query definition as well as safe and simple data retrieval and updating.
-
-
-
-- 2012-01-24 the Board establishes Apache Empire-db, Empire-db graduates!
-
-- 2011-02-16 New committer Eike Kettner
-
-- 2009-12-30 New committer Benjamin Venditti
-
-- 2008-12-16 New committer Francis De Brabandere
-
-- 2008-07-08 The Empire-db proposal has been accepted by the Apache Incubator PMC for incubation at the Apache Software Foundation!
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/empire-db/](http://incubator.apache.org/empire-db/)  |
-| Users Mailing List | user |  [empire-db-user@incubator.apache.org](mailto:empire-db-user-subscribe@incubator.apache.org)  |
-| Developers Mailing List | dev |  [empire-db-dev@incubator.apache.org](mailto:empire-db-dev-subscribe@incubator.apache.org)  |
-| Commits Mailing List | commits |  [empire-db-commits@incubator.apache.org](mailto:empire-db-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/EMPIREDB](https://issues.apache.org/jira/browse/EMPIREDB)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/empire-db](https://svn.apache.org/repos/asf/incubator/empire-db)  |
-| Mentors | tfischer | Thomas Fischer |
-| . | dashorst | Martijn Dashorst |
-| . | bimargulies | Benson Margulies |
-| Committers | doebele | Rainer Döbele |
-| . | bond | Matthew Bond |
-| . | reiher | Jörg Reiher |
-| . | mgamerdinger | Manuel Gamerdinger |
-| . | francisdb | Francis De Brabander |
-| . | benniven | Benjamin Venditti |
-| . | ek | Eike Kettner |
-
-
--  [2011-04](http://wiki.apache.org/incubator/April2011) 
-
--  [2011-01](http://wiki.apache.org/incubator/January2011) 
-
--  [2010-10](http://wiki.apache.org/incubator/October2010) 
-
--  [2010-07](http://wiki.apache.org/incubator/July2010) 
-
--  [2010-04](http://wiki.apache.org/incubator/April2010) 
-
--  [2010-01](http://wiki.apache.org/incubator/January2010) 
-
--  [2009-08](http://wiki.apache.org/incubator/August2009) 
-
--  [2009-04](http://wiki.apache.org/incubator/April2009) 
-
--  [2009-01](http://wiki.apache.org/incubator/January2009) 
-
--  [2008-10](http://wiki.apache.org/incubator/October2008) 
-
--  [2008-09](http://wiki.apache.org/incubator/September2008) 
-
--  [2008-08](http://wiki.apache.org/incubator/August2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-06-18 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-06-18 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-07-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-07-08 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-07-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-07-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-08-26 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-08-26 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-07-15 | Check that all active committers have submitted a contributors agreement. |
-| 2008-07-?? | Add all active committers in the STATUS file. |
-| 2008-07-?? | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-07-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-07-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-07-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-08-13 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-
-If graduating to an existing PMC, has the PMC voted to accept it?
-N/A
-
-If graduating to a new PMC, has the board voted to accept it?
-Yes
-## Incubator sign-off {#Incubator+sign-off}
-
-
-
-Has the Incubator decided that the project has accomplished all of the above tasks?
-Yes
\ No newline at end of file
diff --git a/content/esme.md b/content/esme.md
deleted file mode 100644
index e26afae..0000000
--- a/content/esme.md
+++ /dev/null
@@ -1,153 +0,0 @@
-Title: ESME project incubation status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-<span class="graduated">The ESME project graduated on 2010-12-15</span>
-
-
-Please go to the main project site :
-
-
- [http://esme.apache.org/](http://esme.apache.org/) 
-
-
-Enterprise Social Messaging Environment (ESME) is a secure and highly scalable microsharing and micromessaging platform that allows people to discover and meet one another and get controlled access to other sources of information, all in a business process context.
-
-
-
-- 2010-12-15 Graduation to [TLP](http://esme.apache.org) !
-
-- 2010-10-09 Release 1.1 completed and available
-
-- 2010-08-22 Imtiaz Ahmed H E as a new Apache ESME committer
-
-- 2010-03-02 Release 1.0 completed and available
-
-- 2009-12-18 Ethan Jewett as a new Apache ESME committer
-
-- 2009-11-15 Richard Hirsch as a new Apache ESME committer
-
-- 2008-12-02 ESME enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/esme/](http://incubator.apache.org/esme/)  |
-| Mailing list | dev |  `esme-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `esme-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/esme |
-| Source code | SVN | incubator/esme |
-| Mentors | . | See [](http://incubator.apache.org/esme/projectinformation.html) http://incubator.apache.org/esme/projectinformation.html |
-| Committers | . | See [](http://incubator.apache.org/esme/projectinformation.html) http://incubator.apache.org/esme/projectinformation.html |
-
-
--  [September2010](http://wiki.apache.org/incubator/September2010#ESME) 
-
--  [March2010](http://wiki.apache.org/incubator/March2010#ESME) 
-
--  [December2009](http://wiki.apache.org/incubator/December2009#ESME) 
-
--  [September2009](http://wiki.apache.org/incubator/September2009#ESME) 
-
--  [June2009](http://wiki.apache.org/incubator/June2009#ESME) 
-
--  [March2009](http://wiki.apache.org/incubator/March2009#ESME) 
-
--  [February2009](http://wiki.apache.org/incubator/February2009#ESME) 
-
--  [January2009](http://wiki.apache.org/incubator/January2009#ESME) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-12-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2008-12-02 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2008-12-02 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-12-02 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-12-02 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-12-02 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-12-02 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-12-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-03-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-03-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2010-03-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-08-22 | Check that all active committers have submitted a contributors agreement. |
-| 2010-08-22 | Add all active committers in the STATUS file. |
-| 2010-08-22 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-12-02 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-12-02 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-12-02 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-12-02 | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/etch.md b/content/etch.md
deleted file mode 100644
index ea5d66c..0000000
--- a/content/etch.md
+++ /dev/null
@@ -1,203 +0,0 @@
-Title: Etch Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look at the [project website](http://incubator.apache.org/etch/) .
-
-
-<span class="graduated">The Etch project graduated on 2013-01-16</span>
-
-
-Etch - a cross-platform, language- and transport-independent framework for building and consuming network services.
-
-
-Etch is a cross-platform, language- and transport-independent framework for building and consuming network services. The Etch toolset includes a network service description language, a compiler, and binding libraries for a variety of programming languages. Etch is also transport-independent, allowing for a variety of different transports to used based on need and circumstance. The goal of Etch is to make it simple to define small, focused services that can be easily accessed, combined, and deployed in a similar manner. Ultimately with Etch, service development and consumption becomes no more difficult than library development and consumption.
-
-
-
-- 2013-01-16 Apache Etch has been established as a Top Level Project
-
-- 2012-12-18 Added missing status report links, signed off open items
-
-- 2012-03-12 Suitable name search completed (signed off at 2012-04-16)
-
-- 2012-02-08 Thomas Marsh was added as a new committer.
-
-- 2011-10-13 Martin Veith was added as a new committer.
-
-- 2010-06-02 Michael Fitzner was added as a new committer.
-
-- 2010-05-19 Holger Grandy was added as a new committer.
-
-- 2009-04-28 Please welcome new committer manoj ganesan.
-
-- 2009-04-16 Release 1.0.2 announced.
-
-- 2008-09-02 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/etch/](http://incubator.apache.org/etch/)  |
-| Mailing list | dev |  `etch-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | commits |  `etch-commits`  `@`  `incubator.apache.org`  |
-| Mailing list | users |  `etch-user`  `@`  `incubator.apache.org`  |
-| Mailing list | PPMC |  `etch-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/ETCH](http://issues.apache.org/jira/browse/ETCH)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/etch/](http://svn.apache.org/repos/asf/incubator/etch/)  |
-| Proposal | Wiki |  [http://wiki.apache.org/incubator/EtchProposal](http://wiki.apache.org/incubator/EtchProposal)  |
-| Mentors | cutting | Doug Cutting |
-|  | yonik | Yonik Seeley |
-|  | dashorst | Martijn Dashorst |
-|  | gmcdonald | Gavin McDonald |
-| Committers | dixson | James Dixson |
-|  | gsandhir | Gaurav Sandhir |
-|  | jdecocq | James deCocq |
-|  | manojganesan | Manoj Ganesan |
-|  | rebarraz | Rene Barazza |
-|  | sccomer | Scott Comer |
-|  | ypark | Youngjin Park |
-|  | grandyho | Holger Grandy |
-|  | fitzner | Michael Fitzner |
-|  | veithm | Martin Veith |
-|  | tmarsh | Thomas Marsh |
-
-
--  [December 2012](http://wiki.apache.org/incubator/December2012) 
-
--  [September 2012](http://wiki.apache.org/incubator/September2012) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011) 
-
--  [June 2011](http://wiki.apache.org/incubator/June2011) 
-
--  [March 2011](http://wiki.apache.org/incubator/March2011) 
-
--  [December 2010](http://wiki.apache.org/incubator/December2010) 
-
--  [September 2010](http://wiki.apache.org/incubator/September2010) 
-
--  [June 2010](http://wiki.apache.org/incubator/June2010) 
-
--  [March 2010](http://wiki.apache.org/incubator/March2010) 
-
--  [December 2009](http://wiki.apache.org/incubator/December2009) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009) 
-
--  [June 2009](http://wiki.apache.org/incubator/June2009) 
-
--  [March 2009](http://wiki.apache.org/incubator/March2009) 
-
--  [December 2008](http://wiki.apache.org/incubator/December2008) 
-
--  [November 2008](http://wiki.apache.org/incubator/November2008) 
-
--  [October 2008](http://wiki.apache.org/incubator/October2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item | note |
-|------|------|------|
-| 2012-04-16 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. | Prior to acceptance there was a great deal of discussion whether Apache Etch would interfere with the Debian Etch distribution. The sceptics meant that Debian Etch is extremely well-known name and should be avoided. The team defended the position by pointing out that by the time Apache Etch graduates, Debian Lenny has taken over the world and another year or two the Debian Etch is just a distant memory.
-In 2012 Scott Corner has completed a suitable name search and didn't uncover any issues. VP Trademarks has signed off the suitable name search on 2012-04-16
-
- |
-| 2012-12-18 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |  |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-07 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-10 | Subscribe all Mentors on the private and development lists. |
-| 2008-10 | Give all initial committers access to the incubator SVN repository. (to be done by PMC chair) |
-| 2008-11 | Tell Mentors to track progress in the file 'incubator/projects/etch.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-08-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-06-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-06-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2009-06-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| status | item |
-|--------|------|
-| 2008-10-22 | Check that all active committers have submitted a contributors agreement. |
-| 2008-10-25 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| status | item |
-|--------|------|
-| 2008-11-11 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-10-02 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-09-24 | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-| 2008-11-10 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| status | item |
-|--------|------|
-| 2008-11-09 | transfer project wiki pages from developer.cisco.com |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-| status | item |
-|--------|------|
-| 2012-12-18 | Have all of the active long-term volunteers been identified and acknowledged as committers on the project? |
-| 2012-12-18 | Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) |
-| 2012-12-18 | Are project decisions being made in public by the committers? |
-| 2012-12-18 | Are the decision-making guidelines published and agreed to by all of the committers? |
-
-## Licensing awareness {#Licensing+awareness}
-
-| status | item |
-|--------|------|
-| 2012-12-18 | Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? |
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-| status | item |
-|--------|------|
-| 2013-01-16 | If graduating to a new PMC, has the board voted to accept it? |
-
-## Incubator sign-off {#Incubator+sign-off}
-
-| status | item |
-|--------|------|
-| 2013-01-16 | Has the Incubator decided that the project has accomplished all of the above tasks? |
diff --git a/content/eventmesh.md b/content/eventmesh.md
deleted file mode 100644
index 3384695..0000000
--- a/content/eventmesh.md
+++ /dev/null
@@ -1,166 +0,0 @@
-Title: Apache EventMesh Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-EventMesh is a dynamic cloud-native eventing infrastruture used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.
-
-
-
-- 2021-02-18 Project enters incubation.
-
-
-- EventMesh Website - http://eventmesh.incubator.apache.org
-
-
--  [Community Pages](http://eventmesh.incubator.apache.org/community/) 
-
--  [Current Documentation](http://eventmesh.incubator.apache.org/docs/) 
-
--  [Releases](http://eventmesh.incubator.apache.org/releases/) 
-
--  [Wiki](https://cwiki.apache.org/confluence/display/EVENTMESH) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://eventmesh.incubator.apache.org](http://eventmesh.incubator.apache.org)  |
-| . | wiki |  [Wiki](https://cwiki.apache.org/confluence/display/EVENTMESH)  |
-| Mailing list | dev |  `dev`  `@`  `eventmesh.incubator.apache.org`  |
-| . | user(not request) |  `user`  `@`  `eventmesh.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `eventmesh.incubator.apache.org`  |
-| . | private |  `private`  `@`  `eventmesh.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/projects/EVENTMESH |
-| Source code | . | . |
-| . | incubator-eventmesh | https://gitbox.apache.org/repos/asf?p=incubator-eventmesh.git |
-| . | incubator-eventmesh-website | https://gitbox.apache.org/repos/asf?p=incubator-eventmesh-website.git |
-| Mentors |  | . |
-| . | vongosling | Von Gosling |
-| . | jmclean | Justin Mclean |
-| . | junping_du | Junping Du |
-| . | fpapon | Francois Papon |
-| . | jbonofre | Jean-Baptiste Onofre |
-| Committers | . | . |
-| . | chenguangsheng | Guangsheng Chen |
-| . | duhengforever | Heng Du |
-| . | linjunjie | Jaskey |
-| . | dinglei | Lei Ding |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/eventmesh.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2021-02-11 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2021-02-24 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2021-02-24 | Request DNS (first step after creating podling status page) |
-| 2021-02-24 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2021-03-25 | Request git repositories after SGAs are filed |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2021-02-24 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2021-02-24 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2021-03-25 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2021-02-24 | Subscribe all Mentors on the pmc and general lists. |
-| 2021-02-24 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2021-03-25 | Tell Mentors to track progress in the file 'incubator/projects/eventmesh.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2021-03-10 | Check that all active committers have submitted a contributors agreement. |
-| 2021-03-10 | Add all active committers in the STATUS file. |
-| 2021-03-10 | Ask root for the creation of committers' accounts on home.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/falcon.md b/content/falcon.md
deleted file mode 100644
index 26334bd..0000000
--- a/content/falcon.md
+++ /dev/null
@@ -1,197 +0,0 @@
-Title: Falcon Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Falcon project graduated on 2014-12-17</span>
-
-
-Falcon is a data processing and management solution for Hadoop designed for data motion, coordination of data pipelines, lifecycle management, and data discovery. Falcon enables end consumers to quickly onboard their data and its associated processing and management tasks on Hadoop clusters.
-
-
-
-- 2014-12-17: Project established as an Apache Top Level Project
-
-- 2014-12-05: Released 0.6-incubating
-
-- 2014-09-22: Released 0.5-incubating
-
-- 2014-08-28: Ruslan Ostafiychuk added as a committer
-
-- 2014-08-25: Raghav Kumar Gautam added as a committer
-
-- 2014-07-04: Jean-Baptiste Onofre added as a committer
-
-- 2014-03-06: Suhas Vasu added as a committer
-
-- 2014-03-06: Arpit Gupta added as a committer
-
-- 2014-02-02: Released 0.4-incubating
-
-- 2013-09-11: Released 0.3-incuabting
-
-- 2013-04-02. Apache Falcon enters incubation.
-
-
--  [Project website](http://falcon.incubator.apache.org/) 
-
-
--  [Falcon project information](http://falcon.incubator.apache.org/project-info.html) 
-
-
--  [Project Wiki](https://cwiki.apache.org/confluence/display/FALCON) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://falcon.incubator.apache.org/](http://falcon.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/FALCON](https://cwiki.apache.org/confluence/display/FALCON)  |
-| Mailing list | dev |  `dev`  `@`  `falcon.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `falcon.incubator.apache.org`  |
-| . | private |  `private`  `@`  `falcon.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/FALCON](https://issues.apache.org/jira/browse/FALCON)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-falcon.git](https://gitbox.apache.org/repos/asf/incubator-falcon.git)  |
-| Mentors | acmurthy | Arun C. Murthy |
-| . | cdouglas | Chris Douglas |
-| . | gates | Alan Gates |
-| . | omalley | Owen O'Malley |
-| . | ddas | Devaraj Das |
-| Committers | sriksun | Srikanth Sundarrajan |
-| . | venkatesh | Venkatesh Seetharam |
-| . | shwethags | Shwetha GS |
-| . | shaikidris | Shaik Idris |
-| . | sanjay | Sanjay Radia |
-| . | sharad | Sharad Agarwal |
-| . | amareshwari | Amareshwari Sriramadasu |
-| . | samarthg | Samarth Gupta |
-| . | rishumehrothra | Rishu Mehrothra |
-| . | arpit | Arpit Gupta |
-| . | suhasv | Suhas Vasu |
-| . | jbonofre | Jena-Baptiste Onofre |
-| . | rostafiychuk | Ruslan Ostafiychuk |
-| . | raghav | Raghav Kumar Gautam |
-
-
--  [December, 2014](http://wiki.apache.org/incubator/December2014) 
-
--  [September, 2014](http://wiki.apache.org/incubator/September2014) 
-
--  [June, 2014](http://wiki.apache.org/incubator/June2014) 
-
--  [March, 2014](http://wiki.apache.org/incubator/March2014) 
-
--  [December, 2013](http://wiki.apache.org/incubator/December2013) 
-
--  [September, 2013](http://wiki.apache.org/incubator/September2013) 
-
--  [August, 2013](http://wiki.apache.org/incubator/August2013) 
-
--  [July, 2013](http://wiki.apache.org/incubator/July2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-04-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. See PODLINGNAMESEARCH-61 |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-04-05 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-04-05 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-04-05 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-04-05 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-04-05 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-03-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| . | Subscribe all Mentors on the pmc and general lists. |
-| 2013-04-10 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-04-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-04-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-04-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-04-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-04-05 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-04-02 | Check that all active committers have submitted a contributors agreement. |
-| 2013-04-02 | Add all active committers in the STATUS file. |
-| 2013-04-02 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-| date | item |
-|------|------|
-| 2014-12-17 | If graduating to a new PMC, has the board voted to accept it? [see here](http://mail-archives.apache.org/mod_mbox/incubator-falcon-dev/201412.mbox/%3CCAFfn_RqeEk0CU5dcYCXLosT8SL_3ZbrXN%2BovKnmHdpekvkhVug%40mail.gmail.com%3E)  |
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/felix-atomos.md b/content/felix-atomos.md
new file mode 100644
index 0000000..8d9e928
--- /dev/null
+++ b/content/felix-atomos.md
@@ -0,0 +1,53 @@
+Title: Atomos Codebase Intellectual Property (IP) Clearance Status
+
+
+Atomos is a Java module framework using OSGi Connect which is a proposal (RFC) for the upcomming OSGI R8 Core specification.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Karl Pauls
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-02-07 | Donated software is identified as: https://github.com/tjwatson/atomos (git commit: 95970fc4466009c2bb594661060b986e5936ba0e). |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-02-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2020-02-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Entire donation is already ALv2 and all authors have ICLAs on file. In addtion, we received an SGA from IBM for the repository. ASF has all rights necessary.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Thomas Watson (tjwatson), Stefan Bischof (stbischof), Raymond Augé (rotty3000), and Samuel E Bratton (sbratton).
+
+
+| date | item |
+|------|------|
+| 2020-02-07 | Check that all active committers have a signed CLA on record. |
+| 2020-02-07 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-02-07 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-02-07 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailing list [archives](https://www.mail-archive.com/dev@felix.apache.org/msg49396.html) .
diff --git a/content/felix-bar-file-install-extension.md b/content/felix-bar-file-install-extension.md
new file mode 100644
index 0000000..2997a66
--- /dev/null
+++ b/content/felix-bar-file-install-extension.md
@@ -0,0 +1,62 @@
+Title: Bundle Archive File Install Extension Codebase Intellectual Property (IP) Clearance Status
+
+
+Bundle Archive File Installer Extension is a plugin for File Install that implements an ArtifactInstaller for Bundle ARchive (BAR) files. A BAR is a format representing units of functionality implemented as a collection of OSGi bundles. It includes use of the OSGi resolver API to check consistency and permits overlapping resources from multiple installable units.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Karl Pauls
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-12-12 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Available as attachment [fileinstall-plugin.tar.gz](https://issues.apache.org/jira/secure/attachment/12894227/fileinstall-plugins.tar.gz) on issue [FELIX-5732](https://issues.apache.org/jira/browse/FELIX-5732) with SHA1 sum for donated software: SHA1(fileinstall-plugins.tar.gz)= 59a6c590941d19e94723068cb68f8101a259a54a (OpenSSL 0.9.8zh 14 Jan 2016).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-12-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-12-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Signed Corp CLA for Jessica Marz for felix.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Intel Corporation
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2018-02-13 | Check that all active committers have a signed CLA on record. |
+| 2017-12-12 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-12-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-12-12 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](https://www.mail-archive.com/dev@felix.apache.org/msg44409.html) .
diff --git a/content/felix-deployment-admin.md b/content/felix-deployment-admin.md
new file mode 100644
index 0000000..72b371c
--- /dev/null
+++ b/content/felix-deployment-admin.md
@@ -0,0 +1,65 @@
+Title: Apache Felix Deployment Admin Codebase Intellectual Property (IP) Clearance Status
+
+
+Deployment Admin is an implementation of chapter 114 of the OSGi R4.1 specification. It's a module (bundle) that is responsible for installing and updating deployment packages. These contain bundles and other installable artifacts.
+
+
+Source available at [FELIX-452](https://issues.apache.org/jira/browse/FELIX-452) 
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Deployment Admin
+
+
+- Officer or member managing donation: Richard S. Hall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: f090af4de098577e8d2b0023b8b8746b ( _md5_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-11-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-12-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Apache Felix Deployment Admin_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2007-11-26 | Check that all active committers have a signed CLA on record. |
+| 2007-11-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| n/a | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| n/a | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread: http://mail-archives.apache.org/mod_mbox/felix-dev/200710.mbox/%3cBC63D519-D17C-48D3-8D6E-7D27389A0489@luminis.nl%3e_ 
diff --git a/content/felix-file-install.md b/content/felix-file-install.md
new file mode 100644
index 0000000..0d3e128
--- /dev/null
+++ b/content/felix-file-install.md
@@ -0,0 +1,62 @@
+Title: Apache Felix File Install Codebase Intellectual Property (IP) Clearance Status
+
+
+Simple utility bundle that runs inside an OSGi framework and monitors a directory to install and/or update bundles placed in the directory. Bundle is comprised of two new source files.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Richard S. Hall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: md5 ca78492731fd3613bf8d4935de024baa (available at [FELIX-470](https://issues.apache.org/jira/browse/FELIX-470) )
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-01-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-01-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _http://www.aqute.biz/Code/FileInstall_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Peter Kriens
+
+| date | item |
+|------|------|
+| 2008-01-12 | Check that all active committers have a signed CLA on record. |
+| 2008-01-12 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| n/a | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| n/a | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _ [VOTE RESULT](http://mail-archives.apache.org/mod_mbox/felix-dev/200802.mbox/%3c47A74BEC.90505@ungoverned.org%3e) _ 
diff --git a/content/felix-httpservice.md b/content/felix-httpservice.md
new file mode 100644
index 0000000..6641d34
--- /dev/null
+++ b/content/felix-httpservice.md
@@ -0,0 +1,61 @@
+Title: Improved HttpService Codebase Intellectual Property (IP) Clearance Status
+
+
+The Improved HttpService contribution is flexible implementation of the OSGi HttpService implementation with extended features : Extended API to support servlet filters;Backward compatible with standard HttpService (without Filter support); A bridged implementation (for use inside a Servlet Container); A jetty implementation (embedding the Jetty Servlet Container); Separate dispatcher so that we can have different "transports". This contribution is composed of multiple Maven projects.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Felix Meschberger
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-09-04 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 sum for donated software: 7636857724ec5610e70d74a9e39b32da (Available at as attachment [http-service.tar.gz](https://issues.apache.org/jira/secure/attachment/12418092/http-service.tar.gz) at [FELIX-1456](https://issues.apache.org/jira/browse/FELIX-1456) ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-08-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-08-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Improved Felix HTTP Service from Sten Roger Sandvik
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Sten Roger Sandvik_ 
+
+| date | item |
+|------|------|
+| 2009-08-31 | Check that all active committers have a signed CLA on record. |
+| 2009-08-31 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2009-08-31 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](http://www.mail-archive.com/dev@felix.apache.org/msg11895.html) .
diff --git a/content/felix-lightweight-httpservice.md b/content/felix-lightweight-httpservice.md
new file mode 100644
index 0000000..17c688c
--- /dev/null
+++ b/content/felix-lightweight-httpservice.md
@@ -0,0 +1,61 @@
+Title: Lightweight OSGi HttpService Codebase Intellectual Property (IP) Clearance Status
+
+
+The Lightweight OSGi HttpService contribution is intended to be a very lightweight implementation of the OSGi HttpService, making it good alternative implementation for deploying and running in constrained environments.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Richard S. Hall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2011-09-29 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 sum for donated software: 47580996a8c364890518222494d4d26b (Available as attachment [org.apache.felix.http.lightweight-src.tar.gz](https://issues.apache.org/jira/secure/attachment/12491604/org.apache.felix.http.lightweight-src.tar.gz) on issue [FELIX-3084](https://issues.apache.org/jira/browse/FELIX-3084) ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2011-09-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2011-09-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Source code to Lightweight HTTP Service implementation as attached to code submission FELIX-3084 from Ken Gilmer.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Ken Gilmore_ 
+
+| date | item |
+|------|------|
+| 2011-09-30 | Check that all active committers have a signed CLA on record. |
+| 2011-09-30 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2011-09-30 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](http://www.mail-archive.com/dev@felix.apache.org/msg23126.html) .
diff --git a/content/felix-logback-integration.md b/content/felix-logback-integration.md
new file mode 100644
index 0000000..1baf6c1
--- /dev/null
+++ b/content/felix-logback-integration.md
@@ -0,0 +1,59 @@
+Title: Logback integration with OSGi Log 1.4 Codebase Intellectual Property (IP) Clearance Status
+
+
+This project is intended to help simplify the logging story for OSGi by leveraging many capabilities of Logback together with the new Log 1.4 features and providing a unified backend.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Karl Pauls
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-05-03 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Donated software is identified as: https://github.com/rotty3000/osgi.to.logback (git commit: 58d84cc39aa01a67e9022b862bb45e4af1232bbc). The above repo is currently locked (archived), to prevent changes.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-05-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-05-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Entire donation is already ALv2 and all authors are ASF committers with ICLAs on file. ASF already has all rights necessary.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Raymond Auge (rotty3000).
+
+
+| date | item |
+|------|------|
+| 2018-05-03 | Check that all active committers have a signed CLA on record. |
+| 2018-05-03 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-05-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-05-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Notice: This project depends on logback (https://logback.qos.ch) which is available under EPL v1.0.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](https://www.mail-archive.com/dev@felix.apache.org/msg45354.html) .
diff --git a/content/felix-osgi-console.md b/content/felix-osgi-console.md
new file mode 100644
index 0000000..3bde2cc
--- /dev/null
+++ b/content/felix-osgi-console.md
@@ -0,0 +1,64 @@
+Title: Apache Felix OSGi Console Codebase Intellectual Property (IP) Clearance Status
+
+
+The incubating Apache Sling project has a module in the form of a single OSGi bundle which provides a Web Based Management Console. The bundle allows mainly for OSGi management such as bundle lifecycle management, configuration, etc. But the console is in fact extensible and more functionality may easily be plugged into it. Because this module is in fact a bundle which may be of use for any OSGi framework management it may be of interest to other projects employing OSGi as well. For this reason the Apache Felix and Sling communities agreed to move the Web Based Management Console from Apache Sling to Apache Felix.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Felix Meschberger
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The software is available in the Sling SVN repository at [trunk/osgi/console-web/](http://svn.apache.org/repos/asf/incubator/sling/trunk/osgi/console-web/) and will be "svn mv-ed" to Apache Felix.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-05-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-05-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Sling, a component based Web Application Framework http://wiki.apache.org/jackrabbit/SlingProposal_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Apache Software Foundation
+
+| date | item |
+|------|------|
+| 2008-05-13 | Check that all active committers have a signed CLA on record. |
+| n/a | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-05-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| n/a | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote Result on Felix Dev List accepting the code](http://markmail.org/message/hio3klxm35pwgfea) 
+
+-  [Vote Result on Sling Dev List donating the code](http://markmail.org/message/bqwv3o2r2twdbapj) 
diff --git a/content/felix-osgi-shell.md b/content/felix-osgi-shell.md
new file mode 100644
index 0000000..339bd8c
--- /dev/null
+++ b/content/felix-osgi-shell.md
@@ -0,0 +1,62 @@
+Title: OSGi Shell Codebase Intellectual Property (IP) Clearance Status
+
+
+Early drafts of the R4.2 spec include a specification for a new OSGi Shell (RFC-132). The idea is that this will be a shell that is shared by all OSGi implementations. An initial implementation of the spec was written by Peter Kriens and donated to the Apache Felix project.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Richard S. Hall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-05-22 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: md5 9de77d0fef4caff5bb2cf3943a224e98 (available at [FELIX-946](https://issues.apache.org/jira/browse/FELIX-946) )
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-05-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-05-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _OSGi TSL proposal for Felix from Peter Kriens (JIRA FELIX-946)_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Peter Kriens
+
+| date | item |
+|------|------|
+| 2009-05-22 | Check that all active committers have a signed CLA on record. |
+| 2009-05-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| n/a | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-05-27 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found [here](http://mail-archives.apache.org/mod_mbox/felix-dev/200902.mbox/%3cA5A5EA6A-548B-424A-AE14-35C749560F34@luminis.nl%3e) .
diff --git a/content/felix-pax-logging.md b/content/felix-pax-logging.md
new file mode 100644
index 0000000..52a379b
--- /dev/null
+++ b/content/felix-pax-logging.md
@@ -0,0 +1,65 @@
+Title: Felix Pax Logging Codebase Intellectual Property (IP) Clearance Status
+
+
+Pax Logging is an implementation of the OSGi Log Service specification using Log4J as the backend.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix/new module.
+
+
+- Officer or member managing donation: Niclas Hedhman (niclas@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Codebase "pax-logging-1.1.1.tar.gz" is uploaded to /repos/asf/incubator/donations/felix-pmc/pax-logging/.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-07-28 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-07-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: The codebase is developed by individuals, and all individuals contributing more than 20 lines of code now has ICLAs with the ASF: Niclas Hedhman, Stuart McCulloch, Edward Yakop, Makas Lau. Full SVN history of the project is available at https://scm.ops4j.org/repos/ops4j/qa/pax/pax-logging-1.1.1
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+Pax Logging has always been licensed with Apache License ver 2.0, giving everyone distribution rights.
+
+
+| date | item |
+|------|------|
+| 2008-07-28 | Check that all active committers have a signed CLA on record. |
+| 2008-06-02 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-06-02 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| n/a | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Has Felix PMC Accepted the donation: YES
+
+
+Related VOTEs:
+
+
+
+- http://mail-archives.apache.org/mod_mbox/felix-dev/200806.mbox/%3c200806021350.22168.niclas@hedhman.org%3e
diff --git a/content/felix-pojosr.md b/content/felix-pojosr.md
new file mode 100644
index 0000000..521102e
--- /dev/null
+++ b/content/felix-pojosr.md
@@ -0,0 +1,62 @@
+Title: XYZ Codebase Intellectual Property (IP) Clearance Status
+
+
+Describe the incoming codebase, including whether it is a large set of patches, new functional modules, etc.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Guillaume Nodet
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-03-31 | PojoSR code attached to FELIX-4445 (https://issues.apache.org/jira/secure/attachment/12637851/pojosr.zip). |
+
+MD5 or SHA1 sum for donated software: MD5 (pojosr.zip) = 269434226a9dec1dd86a15a61bdeb92f
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-03-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-03-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Source code to PojoSR implementation as attached to code submission FELIX-4445 from Karl Pauls.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: The codebase was developped by a single individual who is already an ASF committer: Karl Pauls.
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2014-03-31 | Check that all active committers have a signed CLA on record. |
+| 2014-03-31 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-03-31 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-03-31 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: http://mail-archives.apache.org/mod_mbox/felix-dev/201403.mbox/%3CCAA66TpphivHOm4TLkARgeQQpwtZUm3rPL-i3dcx1UTwSOSADOA%40mail.gmail.com%3E http://mail-archives.apache.org/mod_mbox/felix-dev/201403.mbox/%3CCAA66Tprf9Y618BA-RTFJ6ZH24m5s09Bz9%3DOy%2Bp2WDGxhe%3DPdzA%40mail.gmail.com%3E
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/felix-remote-shell.md b/content/felix-remote-shell.md
new file mode 100644
index 0000000..e038838
--- /dev/null
+++ b/content/felix-remote-shell.md
@@ -0,0 +1,65 @@
+Title: Felix Simple Remote Shell Intellectual Property (IP) Clearance Status
+
+
+Felix Simple Remote Shell is an extension to the Felix Shell allowing remote access by a simplified telnet protocoll.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix/new module
+
+
+- Officer or member managing donation: Felix Meschberger (fmeschbe (at) apache (dot) org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The codebase is attached as "remoteshell.zip" to JIRA issue [FELIX-615](https://issues.apache.org/jira/browse/FELIX-615) . The MD5 checksum is: 527423105b5e8d7297a4dc20491a2c01.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-07-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-07-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: The codebase was developped by a single individual whose ICLA is recorded: Dieter Wimberger.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Felix Simple Remote Shell was developped as a contribution to the Apache Felix project, therefore is licensed with Apache License 2.0 giving everyone distribution rights.
+
+| date | item |
+|------|------|
+| 2008-07-08 | Check that all active committers have a signed CLA on record. |
+| n/a | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-07-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-07-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Has Felix PMC Accepted the donation: YES
+
+
+Related VOTEs:
+
+
+
+- http://markmail.org/message/65ualfc4s2lnfkwz
diff --git a/content/felix-service-diagnostics.md b/content/felix-service-diagnostics.md
new file mode 100644
index 0000000..4c1acb4
--- /dev/null
+++ b/content/felix-service-diagnostics.md
@@ -0,0 +1,61 @@
+Title: Service Diagnostics Codebase Intellectual Property (IP) Clearance Status
+
+
+The Service Diagnostics contribution aims at easing diagnostics of OSGi services and finding about missing dependencies.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Richard S. Hall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2011-10-11 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+checksum for donated software: 3051510335 53872 (created with cksum) (Available as attachment [servicediagnostics.tar.gz](https://issues.apache.org/jira/secure/attachment/12498603/org.apache.felix.servicediagnostics.tgz) on issue [FELIX-3128](https://issues.apache.org/jira/browse/FELIX-3128) ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2011-10-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2011-10-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Source code to Service Diagnostics implementation as attached to code submission FELIX-3128 from Arjun Panday.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Arjun Panday_ 
+
+| date | item |
+|------|------|
+| 2011-10-18 | Check that all active committers have a signed CLA on record. |
+| 2011-10-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2011-10-18 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](http://www.mail-archive.com/dev@felix.apache.org/msg23154.html) .
diff --git a/content/felix-sigil.md b/content/felix-sigil.md
new file mode 100644
index 0000000..50b313a
--- /dev/null
+++ b/content/felix-sigil.md
@@ -0,0 +1,62 @@
+Title: Sigil Codebase Intellectual Property (IP) Clearance Status
+
+
+Sigil provides manifest-first OSGi development tooling, where the OSGi manifest Import-Package header controls both build and runtime dependencies. Sigil was contributed to the Apache Felix project by Paremus.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Richard S. Hall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-07-07 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: SHA1 59961b32f26568883a05b3bb174cf9995d202214 (available at [FELIX-1142](https://issues.apache.org/jira/browse/FELIX-1142) )
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-07-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-07-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Paremus: Sigil_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Paremus
+
+| date | item |
+|------|------|
+| 2009-07-07 | Check that all active committers have a signed CLA on record. |
+| 2009-07-07 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2009-07-07 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-07-07 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](http://www.mail-archive.com/dev@felix.apache.org/msg09301.html) .
diff --git a/content/felix-system-readiness.md b/content/felix-system-readiness.md
new file mode 100644
index 0000000..4126076
--- /dev/null
+++ b/content/felix-system-readiness.md
@@ -0,0 +1,56 @@
+Title: System Readiness Check Framework Codebase Intellectual Property (IP) Clearance Status
+
+
+This project provides a framework to configure and create so called system checks and signal the readiness of an OSGi based system.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Karl Pauls
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-05-03 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Donated software is identified as: https://github.com/dulvac/system-readiness (git commit: 2c9263dced2c267eac03b3699cf9f1416199afd6). The above repo is currently locked (archived), to prevent changes.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-05-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-05-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Entire donation is already ALv2 and all authors are ASF committers with ICLAs on file. ASF already has all rights necessary.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Andrei Dulvac (dulvac) and Christian Schneider (cschneider).
+
+
+| date | item |
+|------|------|
+| 2018-05-03 | Check that all active committers have a signed CLA on record. |
+| 2018-05-03 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-05-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-05-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](https://www.mail-archive.com/dev@felix.apache.org/msg45355.html) .
diff --git a/content/felix-upnp-console-plugin.md b/content/felix-upnp-console-plugin.md
new file mode 100644
index 0000000..50f1959
--- /dev/null
+++ b/content/felix-upnp-console-plugin.md
@@ -0,0 +1,62 @@
+Title: Felix UPNP Web Console Plugin Intellectual Property (IP) Clearance Status
+
+
+Describe the incoming codebase, including whether it is a large set of patches, new functional modules, etc.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix/new module
+
+
+- Officer or member managing donation: Felix Meschberger (fmeschbe (at) apache (dot) org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The codebase is attached as "upnp.zip" to JIRA issue [FELIX-2121](https://issues.apache.org/jira/browse/FELIX-2121) . The MD5 checksum is: 80390b4b3bed18b16e54ab5492f4b96d.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-03-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-03-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: UPuP plug-in for Apache Felix Web Console
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2010-03-04. | Check that all active committers have a signed CLA on record. |
+| 2010-03-04 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-03-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-03-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found [here](http://markmail.org/message/b24r4nw2hbrzh2it) .
diff --git a/content/felix-user-admin-2.md b/content/felix-user-admin-2.md
new file mode 100644
index 0000000..5087953
--- /dev/null
+++ b/content/felix-user-admin-2.md
@@ -0,0 +1,69 @@
+Title: Felix UserAdmin Codebase Intellectual Property (IP) Clearance Status
+
+
+The Felix UserAdmin contribution is an implementation of the OSGi UserAdmin service written from scratch and with testability and performance in mind. It can be deployed with an additional backend service to access the actual store where the information will be written.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix.
+
+
+- Into which existing project/module: Apache Felix.
+
+
+- Officer or member managing donation: Marcel Offermans.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2012-08-08 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+SHA-512 sums (/usr/bin/shasum on OSX 10.7.4) for the donations, see also attachments in issue [FELIX-3600](https://issues.apache.org/jira/browse/FELIX-3600) :<br></br>
+
+- useradmin-1.0.2-src.tgz: `3c5de8af0c2441655d7babaf00a468c72922da5360114cabb384cb4401acf22e6ddad4cc6a3e0064a23d77bcdf058641d5646f2d3c2e469d4932dc7c2dda5354` ,
+
+- useradmin-filestore-1.0.0-src.tgz: `838538f9bcabc3018c1c40c649b33a3170a3866a95e14df35966139562a55f841a7aece569fe2cec72ce57f11c35a168ec46ee3576ace8a08b2e6cf06923ef48` ,
+
+- useradmin-mongodb-1.0.0-src.tgz: `7dfbcb115899262d480316a6e0cc86e3c91f052fdc5df1d8c65574926f30076ba37cd22c42987fde4a539d5f6bc4bc31ede0c2df39a350311738a2382d3c642d` .
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2012-08-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2012-08-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Luminis BV_ file: luminis-felix-useradmin.pdf for: Felix UserAdmin implementation, Felix UserAdmin file store back end and Felix UserAmin MongoDB store back end (contact name: [J.W. Janssen](mailto:janwillem.janssen@luminis.eu) ).
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: _Luminis BV_ (contact name: [J.W. Janssen](mailto:janwillem.janssen@luminis.eu) ).
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2012-08-08 | Check that all active committers have a signed CLA on record. |
+| 2012-08-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2012-08-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2012-08-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found [here](http://markmail.org/message/paq3cs6amgw7e4wi) .
diff --git a/content/felix-user-admin.md b/content/felix-user-admin.md
new file mode 100644
index 0000000..cf6c95b
--- /dev/null
+++ b/content/felix-user-admin.md
@@ -0,0 +1,62 @@
+Title: User Admin Codebase Intellectual Property (IP) Clearance Status
+
+
+The User Admin codebase implements the OSGi User Admin compendium service specification. The codebase was contributed to the Apache Felix project by Adam Wojtuniak.
+
+
+
+- Which PMC will be responsible for the code: Apache Felix
+
+
+- Into which existing project/module: Apache Felix
+
+
+- Officer or member managing donation: Richard S. Hall
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-12-01 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: MD5 78d8f446a3cbf22b236629869c0c6189 (available at [FELIX-1853](https://issues.apache.org/jira/browse/FELIX-1853) )
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-12-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-12-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Grant by Adam Wojtuniak_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Adam Wojtuniak
+
+| date | item |
+|------|------|
+| 2009-12-01 | Check that all active committers have a signed CLA on record. |
+| 2009-12-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2009-12-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-12-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](http://www.mail-archive.com/dev@felix.apache.org/msg14075.html) .
diff --git a/content/felix.md b/content/felix.md
deleted file mode 100644
index 1685926..0000000
--- a/content/felix.md
+++ /dev/null
@@ -1,202 +0,0 @@
-Title: Felix Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Felix project graduated on 2007-04-01</span>
-
-
-The Felix Project has graduated from the Incubator at the Apache Software Project and is an implementation of the OSGi R4 specification.
-
-
-
-- March 2007 - Felix graduated from the Incubator.
-
-
-- Main site: http://incubator.apache.org/felix/
-
-
-- Wiki site: http://cwiki.apache.org/FELIX/
-
-
-- Status: http://incubator.apache.org/projects/felix.html
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Mailing list | dev | felix-dev@incubator.apache.org |
-| Bug tracking | Jira | http://issues.apache.org/jira/browse/Felix |
-| Source code | Subversion | https://svn.apache.org/repos/asf/incubator/felix |
-| Mentors | akarasulu | Alex Karasulu |
-| . | upayavira | Upayavira |
-| Committers | akarasulu | Alex Karasulu |
-| . | bloritsch | Berin Loritsch |
-| . | cziegeler | Carsten Ziegeler |
-| . | demuru | Matteo Demuru |
-| . | erodriguez | Enrique Rodriguez |
-| . | furfari | Francesco Furfari |
-| . | humberto | Humberto Cervantes |
-| . | lenzi | Stefano Lenzi |
-| . | marrs | Marcel Offermans |
-| . | noel | Noel Bergman |
-| . | pauls | Karl Pauls |
-| . | rickhall | Richard Hall |
-| . | sylvain | Sylvain Wallez |
-| . | tbennett | Timothy Bennett |
-| . | trustin | Trustin Lee |
-| . | walkerr | Rob Walker |
-| . | sfrenot | Stephane Frenot |
-| . | donsez | Didier Donsez |
-| . | santillan | Manuel Santillan |
-| . | jlruiz | Jose L. Ruiz |
-| . | jcduenas | Juan C. Duenas |
-| . | fmeschbe | Felix Meschberger |
-| Extra | . | . |
-
-
--  [Q4 2005](http://wiki.apache.org/incubator/IncubatorBoardReport2005Q4) 
-
--  [Q1 2006](http://wiki.apache.org/incubator/IncubatorBoardReport2006Q1) 
-
--  [April 2006](http://wiki.apache.org/incubator/April2006) 
-
--  [July 2006](http://wiki.apache.org/incubator/July2006) 
-
--  [October 2006](http://wiki.apache.org/incubator/October2006) 
-
--  [January 2007](http://wiki.apache.org/incubator/January2007) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2005-08-08 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
- _After the name 'Felix' was proposed for the project, and before we actually voted on it, a search on the US PTO for "Felix" was done. That search produced about 50 hits of live trademarks. As far as could be determined, only one was definitely related to computers (clusters). Further research from showed that the owning company (MPI software technology) was acquired by another company and no references on the new combined website could be found regarding "Felix". References (message ID's on the oscar-dev mailing list):
-
-- &lt;200508081556.33891.niclas@hedhman.org&gt;
-
-- &lt;200508090231.58289.niclas@hedhman.org&gt;
-_ 
-
- |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2005-07-19 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2006-02-17 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-02-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-02-17 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2006-05-04 | Tell Mentors to track progress in the file 'incubator/projects/felix.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2006-05-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-06-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2006-06-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. _For the source code, we have made sure that every file has an ASL license. On the private mailing list there was a long thread about "Status page" which eventually led to a message (message id: &lt;487a994c0606010455q6ff8caf3g3e451c9e79817f42@mail.gmail.com&gt;) confirming that all sources were checked and contain the ASL copyright message._  |
-| 2006-07-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. _See table below for complete list of dependencies with their licenses._  |
-
-| Library | Version | License |
-|---------|---------|---------|
-| org.apache.maven maven-plugin-api | 2.0 | ASL |
-| org.apache.maven maven-archiver | 2.0 | ASL |
-| org.apache.maven maven-artifact | 2.0 | ASL |
-| org.apache.directory.daemon daemon-bootstrappers | 1.0-RC2-SNAPSHOT | ASL |
-| org.codehaus.plexus plexus-utils | 1.1 | ASL |
-| org.slf4j nlog4j | 1.2.19 | SLF4J license, claims to be compatible with ASL |
-| commons-daemon commons-daemon | 1.0.1 | ASL |
-| kxml2 kxml2 | 2.2.2 | BSD |
-| junit junit | 3.8.2 | CPL |
-| tomcat servlet | 4.0.6 | APL |
-| xerces xercesImpl | 2.4.0 | ASL |
-| org-cybergarage cyberlink-upnp-patched | 1.7.0 | BSD |
-| easymock easymock | 1.2_Java1.3 | MIT |
-| jetty org.mortbay.jetty-jdk1.2 | 4.2.25 | Jetty License, derived from Artistic License |
-| asm | 2.2.1 | INRIA, France Telecom License, http://asm.objectweb.org/license.html |
-| BND | 0.0.106 | ASL, http://www.aqute.biz/Code/Bnd |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2006-05-04 | Check that all active committers have submitted a contributors agreement. |
-| 2006-05-04 | Add all active committers in the STATUS file. |
-| &lt;2006-05-04 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2005-07-19 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-07-18 | Ask infrastructure to set up and archive Mailing lists. |
-| &lt;2006-05-04 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| &lt;2006-05-04 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _No project specific tasks._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?<br></br> **yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)<br></br> **yes** 
-
-- Are project decisions being made in public by the committers?<br></br> **yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?<br></br> **yes:**  [http://cwiki.apache.org/FELIX/felix-community-roles-and-processes.html](http://cwiki.apache.org/FELIX/felix-community-roles-and-processes.html) 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?<br></br> **yes** 
-
-## Project Specific {#Project+Specific}
-
-None.
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/fineract-cn.md b/content/fineract-cn.md
new file mode 100644
index 0000000..e9def02
--- /dev/null
+++ b/content/fineract-cn.md
@@ -0,0 +1,100 @@
+Title: Fineract CN Codebase Intellectual Property (IP) Clearance Status
+
+
+Fineract CN is a cloud-native, microservice-based rewrite of Fineract. It also includes a UI. The microservices and their libraries and integration tests are Spring-based Java code spread across 33 code repositories. The UI is a single repository containing Angular-based JavaScript and Typescript. There is also a Selenium based test-suite for the UI in its own repository. The code was developed at the Mifos Initiative starting at the beginning of 2016, and at Kuelap since March 2017. Kuelap donated the code developed there to the Mifos Initiative. This rearchitecture was originally called Mifos I/O.
+
+
+
+- The Fineract project will be responsible for managing this code.
+
+
+- New gitbox repos have been created for each repository.
+
+
+- The following people will be managing this contribution:
+
+  - Myrle Krantz (Apache Fineract PMC Chair, and former employee of both the Mifos Initiative and Kuelap.)
+
+  - Ed Cable (Apache Fineract PMC Member, and CEO of the Mifos Initiative which donated the code.)
+
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-04-09 | The name Fineract already belongs to Apache. |
+
+These repositories were originally under https://github.com/mifosio. They have been deleted there and are now available as a snapshot under https://github.com/mifosio-04-04-2018. The repositories and commit ids there are:
+| repository | commit id |
+|------------|-----------|
+| demo-server | ba85aa29bffcccf4d6c6d39e82a6196f51d2d68c |
+| default-setup | 109e641787d06edad3d8147fcee8af86f6a1eb0b |
+| accounting | 2e4730ce2e66f469ea409223a34b1133ca71e8ce |
+| fims-e2e | 8821edd800a28f06bae8260e1fe7ebe49238095c |
+| fims-web-app | c97119c5e63c038eed11ad32e16b490189f66049 |
+| portfolio | d4fb74c2e94d95f02f51c51d534d03b6fc88be89 |
+| deposit-account-management | 9f00a397e08d46f553816910b503e7283ba3bd21 |
+| customer | 3962e1885372803d9af814376e8fd905b9ba98a8 |
+| teller | b67978315835b8c90c8e6dafaea6580d808a1734 |
+| cheques | 6efef67d3f49bdc258cf5265c292ced72ee21c15 |
+| payroll | 8405db37c70093c36b0ddffc744b6cf54f4853cc |
+| reporting | de1fa388c9935299c8e35a009647c9e8065a455c |
+| office | 12e26137ad24b94c1e6504d2de37022040ddae5e |
+| rhythm | 0abeb5819a1f67c1aac403d3a632bb0f6f25b18a |
+| provisioner | d5e8876d902bcb0f6e7041a2e6454c351e5fef6b |
+| permitted-feign-client | 5dae48798f97d52833de59a241ef2ecce9abdbc7 |
+| mariadb | 496703ce8bf876002a482a1d9d06300cc6572e2f |
+| api | b00a37ea9849a0db285ede50847e7c8c7031d192 |
+| lang | 9cc432c2869bf882545a4052a823b28b9fad5eb8 |
+| test-accounting-portfolio | 9e034f7bb6e7fd6e80c98b9f754f14c5ff63df34 |
+| identity | 2b8d42744cf451221aefbd98e30b8d0da7e8b890 |
+| test-provisioner-identity-rhythm-portfolio-accounting | 4e72a7fa8f4a59d93a6849f35daafb6575aebb57 |
+| anubis | 5f919f4c1f03d06ed36d3adf5dbe17e950e048a6 |
+| template | 08f84198fe12b8b7547ef6c104a3be23558278be |
+| test | 3f53d9d01df04791da51a46cb3460971dcb58d7a |
+| cassandra | 9b07e76645a89222986c8038afeb68a9b720d4ac |
+| command | 31e95658a7487c31eacd839480b32677581f8912 |
+| async | a28cd1ed14b3a70d0a5f3ccfba2710c6623bf0bf |
+| service-starter | 008380d4b14540c2833b3eaecda42f5e0db95eab |
+| crypto | 09e3e610fbf62f3a782331423c03aec3b969092c |
+| test-provisioner-identity-organization | 330aee5649d8176e10f78795344fe23eb21a3e8f |
+| group | c759a24270439822653b38ce01937c7899e3de32 |
+| data-jpa | b78dadec2e481c3eb51184e85eeac0270d4a979e |
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-11-06 | The software grant agreement was filed by the Mifos Initiative and acknowledged by the secretary. https://lists.apache.org/thread.html/5ea4cc5f15e003238ce7d72094c694545ee9f2621b4a499d4aeb1e4e@%3Cprivate.fineract.apache.org%3E |
+| 2018-03-16 | The last of the changes to reflect the new ASF copyright were completed. https://lists.apache.org/thread.html/df158fe2bcfb08db24bc3b97b3e863dcc2907063c342445680b29a5c@%3Cdev.fineract.apache.org%3E |
+
+Name recorded for software grant: _https://github.com/mifosio from the Mifos Initiative_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Mifos Initiative_ 
+
+| date | item |
+|------|------|
+| 2018-02-19 | Active committers have signed an ICLA. Last one was here: https://lists.apache.org/thread.html/79a0274f1f2749160480d257b344e6681db80ba3d7a5cee6e5453355@%3Cprivate.fineract.apache.org%3E |
+| 2018-04-09 | Committers have been reminded that they are responsible for ensuring that a Corporate CLA is recorded if such is required. https://lists.apache.org/thread.html/4e64b77adab29d4238883342a985cf8bbb454b4dd0dbc75ab1002fb8@%3Cdev.fineract.apache.org%3E |
+| 2018-04-18 | Five files in service-starter (in package org.apache.fineract.cn.test.servicestarter.aether) are copied from an eclipse-licensed sample project. All other code is original code submitted to the Mifos Initiative by its original authors. |
+| 2018-04-18 | There are currently three dependencies with Category X licenses (embedded MariaDB for testing, MariaDB JDBC driver for accessing MySQL database, Hibernate JPA). 'Blocker' JIRA tickets have been written to describe the replacement of those dependencies with alternatives: FINCN-26, FINCN-27, FINCN-2. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _Two thirds of the committers at the time voted to accept the code donation: https://lists.apache.org/thread.html/8a791e91aa1295c84cd51f0429af2fcdada7db57fdb65b4185ea5fc0@%3Cdev.fineract.apache.org%3E_ 
diff --git a/content/fineract.md b/content/fineract.md
deleted file mode 100644
index a32f920..0000000
--- a/content/fineract.md
+++ /dev/null
@@ -1,182 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Fineract is an open source system for core banking as a platform.
-
-
-<span class="graduated">The Fineract project graduated on 2017-04-19</span>
-
-
-
-- 2015-12-15 Project enters incubation.
-
-- 2016-01-15 Code on ASF infrastructure.
-
-- 2016-10-25 Apache Fineract 0.4.0-incubating released.
-
-- 2016-10-27 Jim Jagielski added as a mentor and a committer.
-
-- 2016-12-16 Apache Fineract 0.5.0-incubating released.
-
-- 2017-01-17 Apache Fineract 0.6.0-incubating released.
-
-- 2017-04-19 Apache Fineract became a TLP.
-
-
--  [Apache Fineract website](http://fineract.apache.org) 
-
-
--  [How to contribute to Apache Fineract](https://cwiki.apache.org/confluence/display/FINERACT/Contributor%27s+Zone) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://fineract.apache.org/](http://fineract.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/FINERACT](https://cwiki.apache.org/confluence/display/FINERACT)  |
-| Mailing list | dev |  `dev`  `@`  `fineract.apache.org`  |
-| . | commits |  `commits`  `@`  `fineract.apache.org`  |
-| . | user |  `user`  `@`  `fineract.apache.org`  |
-| . | issues |  `issues`  `@`  `fineract.apache.org`  |
-| . | private |  `private`  `@`  `fineract.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/FINERACT](https://issues.apache.org/jira/browse/FINERACT)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-fineract.git](https://gitbox.apache.org/repos/asf/incubator-fineract.git)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-fineract](http://github.com/apache/incubator-fineract)  |
-| . | Website content and docs |  [https://gitbox.apache.org/repos/asf/incubator-fineract-site.git](https://gitbox.apache.org/repos/asf/incubator-fineract-site.git)  |
-| Mentors | rgardler | Ross Gardler |
-| . | jim | Jim Jagielski |
-| . | gstein | Greg Stein |
-| . | rvs | Roman Shaposhnik |
-| Committers | vishwasbabu | Vishwas Babu AJ |
-| . | edcable | Edward Cable |
-| . | mage | Markus Geiss |
-| . | sheyden | Sander van der Heijden |
-| . | ishan1604 | Ishan Khanna |
-| . | myrle | Myrle Krantz |
-| . | terencemo | Terence Monteiro |
-| . | rajuan | Adi Nayaran Raju |
-| . | . | Gaurav Saini |
-| . | nazeer1100126 | Nazeer Hussain Shaik |
-| . | . | Michael Vorburger |
-
-
--  [January 2016](http://wiki.apache.org/incubator/January2016) 
-
--  [February 2016](http://wiki.apache.org/incubator/February2016) 
-
--  [March 2016](http://wiki.apache.org/incubator/March2016) 
-
--  [April 2016](http://wiki.apache.org/incubator/April2016) 
-
--  [August 2016](http://wiki.apache.org/incubator/August2016) 
-
--  [November 2016](http://wiki.apache.org/incubator/November2016) 
-
--  [February 2017](http://wiki.apache.org/incubator/February2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via [INFRA-10968](https://issues.apache.org/jira/browse/INFRA-10968)  |
-| 2015-12-15 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-12-15 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2015-12-15 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-12-15 | Ask infrastructure to set up svn pubsub website. |
-| 2016-02-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-01-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-01-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-01-01 | Tell Mentors to track progress in the file 'incubator/projects/fineract.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-02-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-02-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-09-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-09-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-01-01 | Check that all active committers have submitted a contributors agreement. |
-| 2016-01-01 | Add all active committers in the STATUS file. |
-| 2016-01-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/flagon.md b/content/flagon.md
deleted file mode 100644
index 27913c5..0000000
--- a/content/flagon.md
+++ /dev/null
@@ -1,198 +0,0 @@
-Title: Apache Flagon Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Apache Flagon Project offers an open-source (ALv2.0) software tool usability testing platform. It includes a number of components that work together to provide a platform for collecting data about user interactions with software tools, as well as archiving, analyzing and visualizing that data.
-
-
-
-- 2021-05-28 Gedd Johnson (unclegedd) joins as PPMC
-
-- 2021-04-16 PPMC releases apache-flagon-useralejs-incubating-2.1.1
-
-- 2020-03-20 PPMC releases apache-flagon-useralejs-incubating-2.1.0
-
-- 2019-09-01 PPMC releases apache-flagon-useralejs-incubating-2.0.2
-
-- 2019-07-17 Furkan Kamaci (kamaci) joins as Mentor
-
-- 2019-07-17 Tim Allison (tallison) joins as Mentor
-
-- 2019-07-02 PPMC releases apache-flagon-useralejs-incubating-2.0.0
-
-- 2019-06-28 PPMC releases apache-flagon-useralejs-incubating-1.0.0
-
-- 2019-03-21 Project changes name to Apache Flagon (Incubating)
-
-- 2018-05-04 PPMC releases apache-senssoft-useralejs-1.0.0
-
-- 2017-01-24 Arthi Vezhavendan (arthivez) joins the PPMC
-
-- 2016-07-13 Project enters incubation as Apacher SensSoft (Incubating)
-
-
-- Flagon Website - http://flagon.incubator.apache.org
-
-
--  [Community Pages](http://flagon.incubator.apache.org/community/) 
-
--  [Current Documentation](http://flagon.incubator.apache.org/docs/) 
-
--  [Releases](http://flagon.incubator.apache.org/releases/) 
-
--  [Wiki](https://cwiki.apache.org/confluence/display/flagon) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://flagon.incubator.apache.org](http://flagon.incubator.apache.org)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/flagon](https://cwiki.apache.org/confluence/display/flagon)  |
-| Mailing list | dev |  `dev`  `@`  `flagon.incubator.apache.org`  |
-| . | user |  `user`  `@`  `flagon.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `flagon.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/flagon |
-| Source code | . | . |
-| . | incubator-flagon | https://gitbox.apache.org/repos/asf/incubator-flagon.git |
-| . | incubator-flagon-distill | https://gitbox.apache.org/repos/asf/incubator-flagon-distill.git |
-| . | incubator-flagon-stout | https://gitbox.apache.org/repos/asf/incubator-flagon-stout.git |
-| . | incubator-flagon-tap | https://gitbox.apache.org/repos/asf/incubator-flagon-tap.git |
-| . | incubator-flagon-user-ale | https://gitbox.apache.org/repos/asf/incubator-flagon-user-ale.git |
-| . | incubator-flagon-userale-pyqt5 | https://gitbox.apache.org/repos/asf/incubator-flagon-userale-pyqt5.git |
-| . | incubator-flagon-useralejs | https://gitbox.apache.org/repos/asf/incubator-flagon-useralejs.git |
-| Mentors |  | . |
-| . | mattmann | Chris Mattmann |
-| . | pramirez | Paul Ramirez |
-| . | lewismc | Lewis John Mcgibbney |
-| . | kamaci | Furkan Kamaci |
-| . | dmeikle | David Meikle |
-| . | tallison | Tim Allison |
-| PPMC and Committers | . | . |
-| . | poorejc | Joshua Poore |
-| . | lewismc | Lewis John McGibbney |
-| . | lmariano | Laura Mariano |
-| . | cgimenez | Clayton Gimenez |
-| . | aford | Alex Ford |
-| . | pykors | Steve York |
-| . | msbeard | Michelle Beard |
-| . | rf | Robert Foley |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/flagon.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-02-20 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name](http://www.apache.org/foundation/marks/naming.html) . See [PODLINGNAMESEARCH-154](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-154)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-09-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-09-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-09-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-09-01 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-09-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-09-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-01-11 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2017-01-11 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-09-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-01-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-07-27 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-01-11 | Check that all active committers have submitted a contributors agreement. |
-| 2017-01-11 | Add all active committers in the STATUS file. |
-| 2017-01-11 | Ask root for the creation of committers' accounts on home.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? Yes (lewismc 2020-09-23)
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) Yes (lewismc 2020-09-23)
-
-- Are project decisions being made in public by the committers? Yes (lewismc 2020-09-23)
-
-- Are the decision-making guidelines published and agreed to by all of the committers? Yes (lewismc 2020-09-23)
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? Yes (lewismc 2020-09-23)
-
-## Project Specific {#Project+Specific}
-
-
-
-- 
-
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/flex-adc-pmd-squiggly-fdb-tdf.md b/content/flex-adc-pmd-squiggly-fdb-tdf.md
new file mode 100644
index 0000000..b18f873
--- /dev/null
+++ b/content/flex-adc-pmd-squiggly-fdb-tdf.md
@@ -0,0 +1,64 @@
+Title: Adobe ADC PMD FDB Squiggly TDF Codebase Intellectual Property (IP) Clearance Status
+
+
+Adobe donates selected popular articles from the Adobe Developer Connection, plus the FlexPMD project, a version of FDB that supports ActionScript Workers, the Tour de Flex app, the Squiggly spell-checker library, the MXMLC specification, a prototype of a code coverage tool and the Mobile Trader demo app.
+
+
+
+- Which PMC will be responsible for the code: Apache Flex PMC
+
+
+- Into which existing project/module: the Apache Flex website for ADC content and the flex-utilities repo for everything else. The FDB code may go in the flex-sdk repo.
+
+
+- Officer or member managing donation: Alex Harui
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-04-18 | https://reviews.apache.org/r/20503/ |
+
+MD5 or SHA1 sum for donated software: e5a1faed5decceaecfc5c70dbdb69b5a ( _Mac MD5 Utility_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-04-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-04-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _adobe-flex-2013/adobe-flex-2013.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems Inc._ 
+
+| date | item |
+|------|------|
+| 2014-04-17 | (N/A: Software Grant) Check that all active committers have a signed CLA on record. |
+| 2014-04-17 | (N/A: Software Grant) Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-04-18 | No third-party code. Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-04-18 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote thread: http://mail-archives.apache.org/mod_mbox/flex-dev/201404.mbox/%3cCF75A473.1FD79%25aharui@adobe.com%3e
+
+- Result thread: http://markmail.org/search/+list:org.apache.incubator.flex-dev#query:%20list%3Aorg.apache.incubator.flex-dev+page:1+mid:htbxuzs367swhg37+state:results
diff --git a/content/flex-blazeds.md b/content/flex-blazeds.md
new file mode 100644
index 0000000..4a7e9c2
--- /dev/null
+++ b/content/flex-blazeds.md
@@ -0,0 +1,62 @@
+Title: Adobe BlazeDS Codebase Intellectual Property (IP) Clearance Status
+
+
+The Adobe BlazeDS Source Codebase.
+
+
+
+- Which PMC will be responsible for the code: Apache Flex PMC
+
+
+- Into which existing project/module: flex-blazeds git repo
+
+
+- Officer or member managing donation: Alex Harui
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-04-19 | https://reviews.apache.org/r/20506/ |
+
+MD5 or SHA1 sum for donated software: 2bf178f089071924fe460bcfc87c066e ( _OSX Md5 Utility_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-04-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-04-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: adobe-blazeds.pdf _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems Inc._ 
+
+| date | item |
+|------|------|
+| 2014-04-18 | (N/A Software Grant) Check that all active committers have a signed CLA on record. |
+| 2014-04-18 | (N/A Software Grant) Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-04-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-04-18 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _BlazeDS was promised by Adobe prior to entering the incubator, but the donation was not cleared by Adobe until after graduation._ 
diff --git a/content/flex-doc.md b/content/flex-doc.md
new file mode 100644
index 0000000..5aa67fd
--- /dev/null
+++ b/content/flex-doc.md
@@ -0,0 +1,63 @@
+Title: Flex Documentation Intellectual Property (IP) Clearance Status
+
+
+Adobe is donating the html and assets for some of their on-line Flex documentation.
+
+
+
+- Which PMC will be responsible for the code: Apache Flex
+
+
+- Into which existing project/module: It will be its own project in the flex-utilities repo.
+
+
+- Officer or member managing donation: Alex Harui
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-04-15 | The Flex trademark has already been donated to Apache. |
+| 2015-04-15 |  [https://reviews.apache.org/r/33232/](https://reviews.apache.org/r/33232/)  |
+
+MD5 or SHA1 sum for donated software: 1180712828b0a9c92950509c66f8e10a (Ant on OSX).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-04-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-04-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: adobe-flex-2015.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Adobe Systems, Inc.
+
+| date | item |
+|------|------|
+| 2015-04-15 | Check that all active committers have a signed CLA on record. |
+| 2015-04-15 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-04-15 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-04-15 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [http://markmail.org/message/qzmz5c2tbgh5jcjx](http://markmail.org/message/qzmz5c2tbgh5jcjx) 
diff --git a/content/flex-flatsparc.md b/content/flex-flatsparc.md
new file mode 100644
index 0000000..45fa844
--- /dev/null
+++ b/content/flex-flatsparc.md
@@ -0,0 +1,63 @@
+Title: FlatSpark Codebase Intellectual Property (IP) Clearance Status
+
+
+FlatSpark is an Apahe Flex theme for skinning applications.
+
+
+
+- Which PMC will be responsible for the code: Apache Flex
+
+
+- Into which existing project/module: Apache Flex SDK
+
+
+- Officer or member managing donation: Justin Mclean
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-09-26 | https://github.com/akamud/FlatSpark/releases/download/v1.0/FlatSparkApacheRelease.zip |
+| 2014-09-26 | Trademark and google search found no use of name as software product. |
+
+MD5 or SHA1 sum for donated software: 421620dbdd1b8cdc461123e9591debb2 ( _md5 on OSX_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-09-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-09-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _mahmoud-ali-neto.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:<br></br>Mahmoud Ali Neto<br></br>Bruno Pacola
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2014-09-26 | Check that all active committers have a signed CLA on record. |
+| 2014-09-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-09-26 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-09-26 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:http://mail-archives.apache.org/mod_mbox/flex-dev/201409.mbox/%3cD0390ECC.31740%25aharui@adobe.com%3e<br></br>http://mail-archives.apache.org/mod_mbox/flex-dev/201409.mbox/%3cD0332C78.31129%25aharui@adobe.com%3e<br></br>
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/flex-flatspark.md b/content/flex-flatspark.md
new file mode 100644
index 0000000..45fa844
--- /dev/null
+++ b/content/flex-flatspark.md
@@ -0,0 +1,63 @@
+Title: FlatSpark Codebase Intellectual Property (IP) Clearance Status
+
+
+FlatSpark is an Apahe Flex theme for skinning applications.
+
+
+
+- Which PMC will be responsible for the code: Apache Flex
+
+
+- Into which existing project/module: Apache Flex SDK
+
+
+- Officer or member managing donation: Justin Mclean
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-09-26 | https://github.com/akamud/FlatSpark/releases/download/v1.0/FlatSparkApacheRelease.zip |
+| 2014-09-26 | Trademark and google search found no use of name as software product. |
+
+MD5 or SHA1 sum for donated software: 421620dbdd1b8cdc461123e9591debb2 ( _md5 on OSX_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-09-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-09-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _mahmoud-ali-neto.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:<br></br>Mahmoud Ali Neto<br></br>Bruno Pacola
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2014-09-26 | Check that all active committers have a signed CLA on record. |
+| 2014-09-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-09-26 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-09-26 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:http://mail-archives.apache.org/mod_mbox/flex-dev/201409.mbox/%3cD0390ECC.31740%25aharui@adobe.com%3e<br></br>http://mail-archives.apache.org/mod_mbox/flex-dev/201409.mbox/%3cD0332C78.31129%25aharui@adobe.com%3e<br></br>
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/flex-radii8.md b/content/flex-radii8.md
new file mode 100644
index 0000000..c3c3a77
--- /dev/null
+++ b/content/flex-radii8.md
@@ -0,0 +1,63 @@
+Title: Radii8 Codebase Intellectual Property (IP) Clearance Status
+
+
+Radii8 is a Flex-oriented IDE designed to assist developers in the creation of Apache Flex applications. The entire source code base is being donated to Apache.
+
+
+
+- Which PMC will be responsible for the code: Apache Flex
+
+
+- Into which existing project/module: It will be its own project in the flex-utilities repo.
+
+
+- Officer or member managing donation: Alex Harui
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-08-20 | No evidence found of other use of Radii8 as software product name. |
+| 2014-08-20 |  [https://reviews.apache.org/r/24911/](https://reviews.apache.org/r/24911/)  |
+
+MD5 or SHA1 sum for donated software: 53e4f7644d57a73f48f7e737472aea12 (Ant on OSX).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-08-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-08-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: judah-frangipane-radii8.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Judah Frangipane
+
+| date | item |
+|------|------|
+| 2014-08-20 | Check that all active committers have a signed CLA on record. |
+| 2014-08-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-08-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-08-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [http://mail-archives.apache.org/mod_mbox/flex-dev/201408.mbox/%3cD0031CB1.28D99%25aharui@adobe.com%3e](http://mail-archives.apache.org/mod_mbox/flex-dev/201408.mbox/%3cD0031CB1.28D99%25aharui@adobe.com%3e) 
diff --git a/content/flex.md b/content/flex.md
deleted file mode 100644
index bf50a30..0000000
--- a/content/flex.md
+++ /dev/null
@@ -1,517 +0,0 @@
-Title: Flex Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Flex project graduated on 2012-12-19</span>
-
-
-Apache Flex® is a highly productive, open source application framework for building and maintaining expressive web applications that deploy consistently on all major browsers, desktops and devices (including smartphones, tablets and tv)
-
-
-
-- 2011-12-30 Project enters incubation.
-
-- 2012-07-25 Project releases Apache Flex 4.8.0-incubating.
-
-- 2012-11-14 Project releases Apache Flex SDK Installer 1.0.9-incubating.
-
-- 2012-12-19 Board approves graduation resolution.
-
-The website for Apache Flex is at: [http://incubator.apache.org/flex/](http://incubator.apache.org/flex/) 
-
-
-The wiki for Apache Flex is at: [https://cwiki.apache.org/confluence/display/FLEX](https://cwiki.apache.org/confluence/display/FLEX) 
-
-
-The mailing lists `flex-dev`  `@`  `incubator.apache.org` and `flex-user`  `@`  `incubator.apache.org` have been created and are being archived at both Apache and MarkMail.
-
-
-| List | Archives |
-|------|----------|
-|  `flex-dev`  `@`  `incubator.apache.org`  |  [Apache](http://mail-archives.apache.org/mod_mbox/incubator-flex-dev/)  |  [MarkMail](http://markmail.org/search/+list:org.apache.incubator.flex-dev)  |
-|  `flex-user`  `@`  `incubator.apache.org`  |  [Apache](http://mail-archives.apache.org/mod_mbox/incubator-flex-users/)  |  [MarkMail](http://markmail.org/search/+list:org.apache.incubator.flex-users)  |
-
-| date | item |
-|------|------|
-| 2012-08-09 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.<br></br> **Flex is an existing trademark registered by Adobe. It was transferred to Apache on an "as-is" basis. There are previously existing uses of Flex in websites such as flex.org that remain outside of Apache control.**  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2012-01-03 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-| date | item |
-|------|------|
-| 2012-01-03 | Mentors are:
-
-- Bertrand Delacretaz (Champion)
-
-- Greg Reddin
-
-- Dave Fisher
-
-- Anne Katherine Petteroe
- |
-| 2012-01-04 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-01-04 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-01-04 | Tell Mentors to track progress in the file 'incubator/projects/flex.html' |
-
-| date | item |
-|------|------|
-| 2011-08-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-07-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-| date | item |
-|------|------|
-| 2012-07-20 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2012-07-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-Active Committers:
-| Name | Email (@a.o) |
-|------|--------------|
-| Alex Harui | aharui |
-| Carol Frampton | cframpton |
-| Christophe Herreman | cherreman |
-| Chuck Mastrandrea | cmastrandrea |
-| Erik de Bruin | erikdebruin |
-| Espen Skogen | espenskogen |
-| Gordon Smith | gordonsmith |
-| Igor Costa | igorcosta |
-| Iwo Banas | iwo |
-| Jeff Tapper | jeff |
-| Jeffry Houser | jhouser |
-| Jeremy Tellier | jtellier |
-| Jonathon Campos | jonbcampos |
-| Jun Heider | junheider |
-| Justin Mclean | jmclean |
-| Kevin Korngut | kkorngut |
-| Leif Wells | leifwells |
-| Martin Heidegger | mheidegger |
-| Michael Jordan | mijordan |
-| Michael Labriola | labriola |
-| Michael Schmalle | mschmalle |
-| Michelle Yaiser | myaiser |
-| Nicholas Kwaitkowski | quetwo |
-| Omar Gonzalez | s9tpepper |
-| OmPrakash Muppirala | bigosmallm |
-| Peter Elst | peterelst |
-| Peter Ent | pent |
-| Rui Silva | rduartes |
-| Ryan Frishberg | frishy |
-| Sebastian Mohr | masuland |
-| Scott Delamater | sdelamater |
-| Tink | tink |
-| Bertrand Delacretaz | bdelacretaz |
-| Dave Fisher | wave |
-| Greg Reddin | greddin |
-
-| Bug tracking |  |  [https://issues.apache.org/jira/browse/FLEX](https://issues.apache.org/jira/browse/FLEX) 
-Note that INFRA-4380 remains unresolved
-
- |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/flex](http://svn.apache.org/repos/asf/incubator/flex)  |
-| Champion and mentors |  | 
-
-- Bertrand Delacretaz (Champion)
-
-- Greg Reddin
-
-- Dave Fisher
-
-- Anne Katherine Petteroe
- |
-| Committers |  | 
-| Name | Email (@a.o) |
-|------|--------------|
- | Alex Harui | aharui|
- | Carol Frampton | cframpton|
- | Christophe Herreman | cherreman|
- | Chuck Mastrandrea | cmastrandrea|
- | Erik de Bruin | erikdebruin|
- | Espen Skogen | espenskogen|
- | Gordon Smith | gordonsmith|
- | Igor Costa | igorcosta|
- | Iwo Banas | iwo|
- | Jeff Tapper | jeff|
- | Jeffry Houser | jhouser|
- | Jeremy Tellier | jtellier|
- | Jonathon Campos | jonbcampos|
- | Jun Heider | junheider|
- | Justin Mclean | jmclean|
- | Kevin Korngut | kkorngut|
- | Leif Wells | leifwells|
- | Martin Heidegger | mheidegger|
- | Michael Jordan | mijordan|
- | Michael Labriola | labriola|
- | Michael Schmalle | mschmalle|
- | Michelle Yaiser | myaiser|
- | Nicholas Kwaitkowski | quetwo|
- | Omar Gonzalez | s9tpepper|
- | OmPrakash Muppirala | bigosmallm|
- | Peter Elst | peterelst|
- | Peter Ent | pent|
- | Rui Silva | rduartes|
- | Ryan Frishberg | frishy|
- | Sebastian Mohr | masuland|
- | Scott Delamater | sdelamater|
- | Tink | tink|
- | Bertrand Delacretaz | bdelacretaz|
- | Dave Fisher | wave|
- | Greg Reddin | greddin|
- |
-
-
-- December 2012
- `
-Flex
-
-Apache Flex is an application framework for easily building Flash-based
-applications for mobile devices, the browser and desktop.
-
-Date of entry to the Incubator:  December 31, 2011
-
-Top three items to resolve before graduation:
-   Flex has their graduation resolution on the agenda for the December board meeting.
-
-Is there anything that the Incubator PMC or ASF Board specifically needs
-to address?
-   Only the graduation resolution.
-
-Are there any legal, infrastructure, cross-project or personal issues that
-need to be addressed? (Are there any stumbling blocks that impede the podling?)
-   The Flex community really wants to move from SVN to Git/GitHub.  We are eager to see
-   Infra fully support read/write Git repos.
-
-   Also, we are still waiting for INFRA-4380 (import the old Flex JIRA data) to
-   be resolved.
-
-Check that the project's Incubation Status file up to date.
-
-  http://incubator.apache.org/projects/flex
-
-What has been done (releases, milestones, etc.) since the last report?
-   -We approved 6 new committers
-   -We released Apache Flex SDK Installer 1.0.9-incubating.
-   -Adobe Systems Inc. donated both the Falcon compiler and the FalconJS
-    cross-compiler.
-   -Christopher Dutz donated Maven support tools for Flex
-   -We voted to graduate.
-   -We started work on a next-generation of Flex designed to target browsers
-    and devices without Flash.
-
-What are the plans and expectations for the next period?
-
-   -Go through the transition to being a TLP
-   -Continue with the next-generation Flex work
-   -Release several bug-fixes and new locales in the current Flex code base.
-
-Are there any recommendations for how incubation could run more smoothly
-for you?
-   No.  We thank you for your support.
-
-Signed off by mentor: Dave Fisher (wave), Greg Reddin (greddin), bdelacretaz, adc
-            ` 
-
-
-
-- September 2012
- `
-Flex
-
-Apache Flex is an application framework for easily building Flash-based
-applications for mobile devices, the browser and desktop.
-
-Summary: A large community is waiting to see if committer activity will increase
-and starting to think about graduating.
-
-Date of entry to the Incubator:  December 31, 2011
-
-Top three items to resolve before graduation:
-
-  - Get better at resolving issues the Apache Way
-  - Get more initial committers to commit something
-  - Make another release with more non-Adobe involvement
-
-Is there anything that the Incubator PMC or ASF Board specifically needs
-to address?
-
-  There was discussion about letting Flex graduate with the requirement that
-  one or two mentors remain on the PMC.
-
-Are there any legal, infrastructure, cross-project or personal issues that
-need to be addressed? (Are there any stumbling blocks that impede the podling?)
-
-  The issue regarding the import of attachments for existing
-  JIRA bugs remains open (INFRA-4380).  It is not critical, but it would be
-  nice to get this resolved soon.
-
-  The PPMC has voted to move from SVN to Git.  Having Apache approve read/write
-  Git repositories would be helpful.
-
-Check that the project's Incubation Status file up to date.
-
-  http://incubator.apache.org/projects/flex
-
-What has been done (releases, milestones, etc.) since the last report?
-
-  - We released Apache Flex 4.8.0 (incubating).
-
-  - OmPrakash Muppirala and Erik de Bruin were added as a committer and 
-    PPMC member due to their work on the installer.  Peter Ent and 
-    Gordon Smith from Adobe were also added as committers as they are 
-    shepherding large donations from Adobe.
-
-  - Adobe completed the trademark donation.
-
-  - Adobe donated the Text Layout Framework, the rest of the Mustella
-    test suite and signed off on the Falcon compiler donation.
-
-  - OmPrakash Muppirala has been leading the development of a tool that
-    allows IDEs like Adobe Flash Builder to work better with Apache Flex
-    releases.  Justin McLean, Stephen Downs, Roland Zwaga, Tomasz Maciag,
-    and Erik de Bruin have also contributed to the tool.
-
-  - We have accepted several patches from the community to address issues
-    with our test suite.
-
-  - After much discussion, we voted to move from SVN to Git and employ
-    something known as the Git Branching Model.
-
-What are the plans and expectations for the next period?
-
-  - We hope to finalize the release of the installer.
-
-  - Adobe will submit the Falcon compiler source
-
-  - We will get the test suite stable on Mac desktops and then on Windows
-    and mobile configurations.  This should remove the last excuse for
-    committers who are afraid to make changes without a validation suite
-
-  - We hope to complete the transition from SVN to Git.
-
-Are there any recommendations for how incubation could run more smoothly
-for you?
-
-  Our mentors continue to be very helpful.
-
-Signed off by mentor: wave, bdelacretaz, bmargulies
-            ` 
-
-
-
-- June 2012&gt;
- `
-Flex
-
-Apache Flex is an application framework for easily building Flash-based
-applications for mobile devices, the browser and desktop.
-
-Summary: A large community is losing momentum as it waits for Adobe to
-complete the source code transition and infrastructure.
-
-Date of entry to the Incubator:  December 31, 2011
-
-Top three items to resolve before graduation:
-
-  - Resolve trademark donation or licensing
-  - Complete code and bug database donation
-  - Make at least one release
-
-Is there anything that the Incubator PMC or ASF Board specifically needs
-to address?
-
-  The ASF legal team will have to agree to a custom Trademark licensing.
-  Adobe submitted an initial proposal for the agreement at the end of May.
-
-Are there any legal, infrastructure, cross-project or personal issues that
-need to be addressed? (Are there any stumbling blocks that impede the podling?)
-
-  Besides the trademark issue mentioned previously, the import of existing
-  JIRA bugs is blocked by an issue with Apache JIRA's import utility (INFRA-4380).
-  We just got news that this should now be resolved, the PPMC is testing
-  the results of the import before activating it.
-
-Check that the project's Incubation Status file up to date.
-
-  http://incubator.apache.org/projects/flex
-
-What has been done (releases, milestones, etc.) since the last report?
-
-  - Carol Frampton is the release manager for our first release and has
-    prepared some initial release candidates.  We are continuing to refine
-    the release candidates to respond to various licensing and policy issues.
-  - Christophe Herreman was added as a committer and PPMC member due to his 
-    offering patches for issues with the release candidates.
-  - OmPrakash Muppirala has been leading the development of a tool that
-    allows IDEs like Adobe Flash Builder to work better with Apache Flex
-    releases.  Justin McLean, Stephen Downs, Roland Zwaga, and Tomasz Maciag
-    have also contributed to the tool.
-
-What are the plans and expectations for the next period?
-
-  Adobe expects to complete the transfer of the mustella test suite.
-  We hope to get an initial release approved by IPMC.
-
-Are there any recommendations for how incubation could run more smoothly
-for you?
-
-  Our mentors continue to be very helpful.
-
-  See May 2012 report for other concerns related to JIRA and svn imports,
-  but as mentioned above it looks like the JIRA import problems are fixed 
-  now.
-
-Signed off by mentor: greddin, wave
-Shepherd: Matt Franklin
-            ` 
-
-
-
-- March 2012
- `
-Flex
-
-Apache Flex is an application framework for easily building Flash-based
-applications for mobile devices, the browser and desktop.
-
-Summary: A highly energetic community waits for Adobe to complete the
-source code transition and infrastructure.
-
-Date of entry to the Incubator:  December 31, 2011
-
-Top three items to resolve before graduation:
-
-  1. Resolve trademark donation or licensing
-  2. Complete code and bug database donation
-  3. Make at least one release
-
-Is there anything that the Incubator PMC or ASF Board specifically needs
-to address?
-
-  The ASF legal team may have to agree to a custom Trademark licensing.
-  Adobe is currently evaluating the parameters of a custom Trademark license
-  proposed by an ASF Board member.  If approved, a custom agreement will be
-  drafted and signed by both parties.
-
-Are there any legal, infrastructure, cross-project or personal issues that
-need to be addressed? (Are there any stumbling blocks that impede the podling?)
-
-  Besides the trademark issue mentioned previously, the import of existing
-  JIRA bugs is blocked by an issue with Apache JIRA's import utility. It has
-  failed to import the data file supplied by Adobe. Infra is supposed to
-  open a support ticket with Atlassian.
-
-Check that the project's Incubation Status file up to date.
-
-  http://incubator.apache.org/projects/flex
-
-What has been done (releases, milestones, etc.) since the last report?
-
-  - An initial set of Flex source (base framework code), including history,
-    was checked into the trunk area of the podling’s Subversion repository.
-  - Other initial committers have donated code to the whiteboard.
-  - Updates to the podling's wiki including a getting started area for
-    reference to new project members.
-  - Justin Mclean was accepted as committer to the podling.
-
-What are the plans and expectations for the next period?
-
-  Adobe expects to complete the transfer of the bug database. Adobe also
-  hopes to contribute the compiler and test suite as well. And there is hope
-  for an initial release.
-
-Are there any recommendations for how incubation could run more smoothly
-for you?
-
-  Incubation has been working well.  Our mentors are great.
-
-Signed off by mentor: wave, bdelacretaz, greddin
-            ` 
-
-
-
-- February 2012
- `
-Flex
-
-Apache Flex is an application framework for easily building Flash-based
-applications for mobile devices, the browser and desktop.
-
-Summary: A highly energetic community waits for Adobe to transition code
-and infrastructure.
-
-Date of entry to the Incubator:  December 31, 2011
-
-Top four items to resolve before graduation:
-
-  1. Resolve trademark donation or licensing
-  2. Complete code and bug database donation
-  3. Make at least one release
-  4. Add new committers
-
-Is there anything that the Incubator PMC or ASF Board specifically needs
-to address?
-
-  The ASF legal team will have to work with Adobe on the Trademark
-  licensing issue.  Adobe legal is still drafting the proposal before
-  presenting to Apache.
-
-Are there any legal, infrastructure, cross-project or personal issues that
-need to be addressed? (Are there any stumbling blocks that impede the podling?)
-
-  Besides the trademark issue mentioned previously, the code donation and
-  bug database donation are being slowed by infrastructure issues at both
-  Adobe and Apache, mainly the lack of ways to easily transfer multi-GB files.
-
-Check that the project's Incubation Status file up to date.
-
-  http://incubator.apache.org/projects/flex
-
-What has been done (releases, milestones, etc.) since the last report?
-
-  - An initial set of Flex source (minus Subversion history) was checked into
-    the whiteboard area of the podling’s Subversion repository.
-  - Other initial committers have donated code to the whiteboard.
-  - A logo contest was held.  Over 50 entries were submitted.
-  - The mailing lists were established.  Over 200 people joined in the
-    first 30 days and the traffic averaged over 100 emails a day.  It has
-    quieted down now that the logo contest has concluded.
-
-What are the plans and expectations for the next period?
-
-  Adobe expects to complete the transfer of the bug database and the initial
-  set of code with history.  Adobe also hopes to contribute the compiler and
-  test suite as well.  And there is hope for an initial release.
-
-Are there any recommendations for how incubation could run more smoothly for you?
-
-  Incubation has been working well.  Our mentors are great.
-
-Signed off by mentor: bdelacretaz, wave
-            ` 
-
-
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?<br></br> **Yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)<br></br> **Yes** 
-
-- Are project decisions being made in public by the committers?<br></br> **Yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?<br></br> **Yes** 
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?<br></br> **Yes** 
-
- _Things to check for before voting the project out._ 
-
-
-# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to a new PMC, has the board voted to accept it? **Yes** 
-
-# Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? **Yes** 
diff --git a/content/flink.md b/content/flink.md
deleted file mode 100644
index 48041af..0000000
--- a/content/flink.md
+++ /dev/null
@@ -1,183 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Flink is an open source system for expressive, declarative, fast, and efficient data analysis. Flink combines the scalability and programming flexibility of distributed MapReduce-like platforms with the efficiency, out-of-core execution, and query optimization capabilities found in parallel databases.
-
-
-<span class="graduated">The Flink project graduated on 2014-12-17</span>
-
-
-
-- 2014-08-28 New PPMC: Gyula Fóra
-
-- 2014-08-28 New PPMC: Márton Balassi
-
-- 2014-08-27 Apache Flink 0.6-incubating release
-
-- 2014-07-07 New PPMC: Till Rohrmann
-
-- 2014-04-14 Project enters incubation.
-
-
--  [Homepage](http://flink.incubator.apache.org) 
-
-
--  [How to contribute](http://flink.incubator.apache.org/how-to-contribute.html) 
-
-
--  [Materials](http://flink.incubator.apache.org/material.html) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://flink.incubator.apache.org/](http://flink.incubator.apache.org/)  |
-| Wiki | wiki |  [https://cwiki.apache.org/confluence/display/FLINK](https://cwiki.apache.org/confluence/display/FLINK)  |
-| Mailing list | user |  `user`  `@`  `flink.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `flink.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `flink.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `flink.incubator.apache.org`  |
-| . | private |  `private`  `@`  `flink.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/FLINK](https://issues.apache.org/jira/browse/FLINK)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-flink.git](https://gitbox.apache.org/repos/asf/incubator-flink.git)  |
-| . | Git web |  [https://gitbox.apache.org/repos/asf?p=incubator-flink.git;a=summary](https://gitbox.apache.org/repos/asf?p=incubator-flink.git;a=summary)  |
-| Mentors | gates | Alan Gates |
-| . | srowen | Sean Owen |
-| . | tdunning | Ted Dunning |
-| . | hsaputra | Henry Saputra |
-| . | hashutosh | Ashutosh Chauhan |
-| . | omalley | Owen O'Malley |
-| Committers | sewen | Stephan Ewen |
-| . | fhueske | Fabian Hueske |
-| . | warneke | Daniel Warneke |
-| . | rmetzger | Robert Metzger |
-| . | uce | Ufuk Celebi |
-| . | aljoscha | Aljoscha Krettek |
-| . | ktzoumas | Kostas Tzoumas |
-| . | ssc | Sebastian Schelter |
-| . | trohrmann | Till Rohrmann |
-| . | gyfora | Gyula Fóra |
-| . | mbalassi | Márton Balassi |
-
-
--  [May 2014](https://wiki.apache.org/incubator/May2014) 
-
--  [June 2014](https://wiki.apache.org/incubator/June2014) 
-
--  [July 2014](https://wiki.apache.org/incubator/July2014) 
-
--  [August 2014](http://wiki.apache.org/incubator/August2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-07-04 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) .<br></br>Resolved via [PODLINGNAMESEARCH-49](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-49) . |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-06-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-04-17 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-05-20 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-07-28 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-07-28 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-04-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-06-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-08-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-06-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-07-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-07-24 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-07-24 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-04-30 | Check that all active committers have submitted a contributors agreement. |
-| 2014-04-17 | Add all active committers in the STATUS file. |
-| 2014-04-30 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-
-| date | item |
-|------|------|
-| 2014-05-14 | Stratosphere voted to change the project name to Flink |
-
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/flume.md b/content/flume.md
deleted file mode 100644
index 5b3f4e0..0000000
--- a/content/flume.md
+++ /dev/null
@@ -1,210 +0,0 @@
-Title: Flume Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Flume project graduated on 2012-06-20</span>
-
-
-Flume is a distributed, reliable, and available system for efficiently collecting, aggregating, and moving large amounts of log data from many different sources to a centralized data store.
-
-
-
-- 2012-06-29 Apache Flume graduates from the Incbuator.
-
-- 2012-05-14 New committer: Will McQueen
-
-- 2012-05-14 New committer: Mike Percy
-
-- 2012-05-14 New committer: Hari Shreedharan
-
-- 2012-05-14 New PPMC Member: Prasad Mujumdar
-
-- 2012-03-27 Flume Release - version 1.1.0-incubating.
-
-- 2012-02-28 New committer: Juhani Connolly.
-
-- 2012-02-28 New committer: Brock Noland.
-
-- 2012-02-28 New committer: Jarek Jarcec Cecho.
-
-- 2012-01-04 Flume Release - version 1.0.0-incubating.
-
-- 2011-11-03 New committer: Mingjie Lai.
-
-- 2011-11-03 New committer: Prasad Mujumdar.
-
-- 2011-08-01 New committer and PPMC member: Nicholas Verbeck.
-
-- 2011-07-14 Code transfer rights document received by ASF.
-
-- 2011-06-21 Wiki space created.
-
-- 2011-06-16 Mailing lists and JIRA set up.
-
-- 2011-06-13 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/flume/](http://incubator.apache.org/flume/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/FLUME](https://cwiki.apache.org/confluence/display/FLUME)  |
-| Mailing list | dev |  `flume-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `flume-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `flume-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/FLUME](https://issues.apache.org/jira/browse/FLUME)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/flume/](https://svn.apache.org/repos/asf/incubator/flume/)  |
-| Mentors | nigel | Nigel Daley |
-| . | rgoers | Ralph Goers |
-| . | phunt | Patrick Hunt |
-| . | tomwhite | Tom White |
-| Committers | abayer | Andrew Bayer |
-| . | ddeeter | Derek Deeter |
-| . | jmhsieh | Jonathan Hsieh |
-| . | phunt | Patrick Hunt |
-| . | kimballa | Aaron Kimball |
-| . | mlai | Mingjie Lai |
-| . | brucem | Bruce Mitchener |
-| . | prasadm | Prasad Mujumdar |
-| . | arvind | Arvind Prabhakar |
-| . | ahmed | Ahmed Radwan |
-| . | henry | Henry Robinson |
-| . | esammer | Eric Sammer |
-| . | nerdynick | Nick Verbeck |
-| . | juhanic | Juhani Connolly |
-| . | brock | Brock Noland |
-| . | jarcec | Jaroslav Cecho |
-
-
--  [June 2012](https://cwiki.apache.org/confluence/display/FLUME/Flume+Incubator+Status+Report+-+June+2012) 
-
--  [March 2012](https://cwiki.apache.org/FLUME/flume-incubator-status-report-march-2012.html) 
-
--  [December 2011](https://cwiki.apache.org/FLUME/flume-incubator-status-report-december-2011.html) 
-
--  [September 2011](https://cwiki.apache.org/FLUME/flume-incubator-status-report-september-2011.html) 
-
--  [August 2011](https://cwiki.apache.org/FLUME/flume-incubator-status-report-august-2011.html) 
-
--  [July 2011](https://cwiki.apache.org/FLUME/flume-incubator-status-report-july-2011.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-10-18 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-06-21 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-06-16 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-06-16 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-06-21 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-06-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-06-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-11-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-06-17 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-06-13 | Tell Mentors to track progress in the file 'incubator/projects/flume.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-07-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-12-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-12-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-12-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-12-01 | Check that all active committers have submitted a contributors agreement. |
-| 2011-12-01 | Add all active committers in the STATUS file. |
-| 2011-12-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - YES
-
-- Are project decisions being made in public by the committers? - YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? - YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? - YES
diff --git a/content/fluo-astralway-code-repos.md b/content/fluo-astralway-code-repos.md
new file mode 100644
index 0000000..29f523e
--- /dev/null
+++ b/content/fluo-astralway-code-repos.md
@@ -0,0 +1,91 @@
+Title: Fluo contributions from Astralway Codebase Intellectual Property (IP) Clearance Status
+
+
+Astralway is the name of the project on GitHub (github.com/astralway) where Fluo originated. Since Fluo graduated incubation, the Astralway maintainers (who are also Fluo PMC members) have separately maintained two developer tools and three example projects for use with Fluo. They now wish to contribute those projects directly to the Apache Fluo PMC.
+
+
+The incoming code base is three git repositories ( [uno](https://github.com/astralway/uno) , [muchos](https://github.com/astralway/muchos) , and [examples](https://github.com/examples) ). Uno contains developer tools for running a single-node Accumulo/Fluo cluster for testing and development. Muchos is the same, but for running a multi-node cluster using Ansible. The examples project contains the three examples, phrasecount, webindex, and stresso, which are useful for testing Fluo, and as documentation for demonstrating example uses.
+
+
+
+- The Apache Fluo PMC will be responsible for the code.
+
+
+- The Astralway admins will coordinate with ASF Infra to transfer the existing GitHub repos to ASF and to configure ASF Gitbox dual-hosting for them, just as Fluo's current repositories are configured.
+
+
+- Christopher Tubbs (Apache Fluo PMC member, ASF member, and Astralway project maintainer) will manage the contribution.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-04-17 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Donated software is identified as:
+
+
+
+- https://github.com/astralway/uno (git commit: 8fbe10a9cd9e12f5eca67ee09cfad62aef141eb5)
+
+- https://github.com/astralway/muchos (git commit: 65be99caa4968fec1219f36b599533b40f4755e5)
+
+- https://github.com/astralway/examples (git commit: 4bd6a004c8dc37e2996314fd8b0de554562c5d38)
+
+The above repos are currently locked (archived), to prevent changes. The intention is that the full repositories will be transferred to ASF, and renamed with the "fluo-" prefix.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-04-17 | Check and make sure that the papers that transfer rights to the ASF been received. Entire donation is already ALv2 and all authors are ASF committers with ICLAs on file. ASF already has all rights necessary. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Individuals holding existing distribution rights (technically, everybody in the world has distribution rights; the project is licensed under ALv2):
+
+
+
+- ctubbsii - Christopher Tubbs
+
+- dhutchis - Dylan Hutchison
+
+- drew - Drew Farris
+
+- ecn - Eric Newton
+
+- elserj - Josh Elser
+
+- kennethmcfarland - Kenneth McFarland
+
+- kturner - Keith Turner
+
+- jmark99 - Mark Owens
+
+- mmiller - Mike Miller
+
+- mwalch - Mike Walch
+
+| date | item |
+|------|------|
+| 2018-04-17 | Check that all active committers have a signed CLA on record. |
+| Not applicable - ICLAs were already on file | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-04-17 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-04-17 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Notes: Ansible (GPL3) is a dependency of Muchos. However, since Muchos is targeted specifically for use with Ansible and does not include Ansible code, it is covered by the platform exception (See discussion on https://issues.apache.org/jira/browse/LEGAL-282). All Muchos code itself is under the Apache License, Version 2.0
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Donation acceptance vote on Apache Fluo dev list](https://lists.apache.org/thread.html/921012ad4be72642e81e1f06aee1bdb6c973e85f76f91bc12c180a84@%3Cdev.fluo.apache.org%3E) 
+
+-  [IP Clearance (lazy) vote on Apache Incubator general list](https://lists.apache.org/thread.html/a9a7ddcca6289edc3f756a085f37409f56da3029048e85d06d04427a@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/fluo.md b/content/fluo.md
deleted file mode 100644
index 11179f4..0000000
--- a/content/fluo.md
+++ /dev/null
@@ -1,189 +0,0 @@
-Title: Fluo Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Fluo is a distributed system for incrementally processing large data sets stored in Accumulo.
-
-
-<span class="graduated">The Fluo project graduated on 2017-07-19</span>
-
-
-
-- 2016-05-17 Project enters incubation.
-
-- 2016-08-07 build-resources-1.0.0-incubating released
-
-- 2016-08-07 fluo-parent-1-incubating released
-
-- 2016-10-05 fluo-1.0.0-incubating released
-
-- 2016-10-27 fluo-recipes-1.0.0-incubating released
-
-- 2017-05-31 New committer: Christopher McTague
-
-- 2017-06-12 fluo-1.1.0-incubating released
-
-- 2017-06-22 fluo-recipes-1.1.0-incubating released
-
-
-- link to the main website: [https://fluo.apache.org](https://fluo.apache.org) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code): [How To Contribute](https://fluo.apache.org/how-to-contribute/) and [Get Involved](https://fluo.apache.org/getinvolved/) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc): [Contributors](https://fluo.apache.org/people/) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://fluo.incubator.apache.org/](http://fluo.incubator.apache.org/)  |
-| Mailing lists | dev |  `dev`  `@`  `fluo.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `fluo.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `fluo.incubator.apache.org`  |
-| Bug tracking | Github Issues |  [https://github.com/apache/incubator-fluo/issues](https://github.com/apache/incubator-fluo/issues)  |
-| Bug tracking | Github Issues |  [https://github.com/apache/incubator-fluo-recipes/issues](https://github.com/apache/incubator-fluo-recipes/issues)  |
-| Bug tracking | Github Issues |  [https://github.com/apache/incubator-fluo-website/issues](https://github.com/apache/incubator-fluo-website/issues)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-fluo.git](https://gitbox.apache.org/repos/asf/incubator-fluo.git)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-fluo-recipes.git](https://gitbox.apache.org/repos/asf/incubator-fluo-recipes.git)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-fluo-website.git](https://gitbox.apache.org/repos/asf/incubator-fluo-website.git)  |
-| Mentors | billie | Billie Rinaldi |
-| . | drew | Drew Farris |
-| . | elserj | Josh Elser |
-| Committers | cjnolet | Corey Nolet |
-| . | ctubbsii | Christopher Tubbs |
-| . | elserj | Josh Elser |
-| . | kturner | Keith Turner |
-| . | mwalch | Mike Walch |
-| . | cjmctague | Christopher McTague |
-| Extra | . | . |
-
-
--  [May 2016](https://wiki.apache.org/incubator/May2016) (mentioned only)
-
--  [June 2016](https://wiki.apache.org/incubator/June2016) 
-
--  [July 2016](https://wiki.apache.org/incubator/July2016) 
-
--  [August 2016](https://wiki.apache.org/incubator/August2016) 
-
--  [September 2016](https://wiki.apache.org/incubator/September2016) (mentioned only)
-
--  [October 2016](https://wiki.apache.org/incubator/October2016) (mentioned only)
-
--  [November 2016](https://wiki.apache.org/incubator/November2016) 
-
--  [February 2017](https://wiki.apache.org/incubator/February2017) 
-
--  [April 2017](https://wiki.apache.org/incubator/April2017) (mentioned only)
-
--  [May 2017](https://wiki.apache.org/incubator/May2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  [2016-09-20](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-109)  | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2016-06-21 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-05-17 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-06-21 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-06-21 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-06-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-06-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-06-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-06-21 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-05-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-06-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2017-06-22 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2017-06-22 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-05-17 | Check that all active committers have submitted a contributors agreement. |
-| 2016-05-17 | Add all active committers in the relevant section above. |
-| 2016-05-17 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/fortress.md b/content/fortress.md
new file mode 100644
index 0000000..8860fe8
--- /dev/null
+++ b/content/fortress.md
@@ -0,0 +1,70 @@
+Title: Fortress Codebase Intellectual Property (IP) Clearance Status
+
+
+Apache Fortress™, or simply Fortress, is a standards based and Open Source Identity Access Management Java SDK for LDAP v3 compliant systems. Fortress is 100% compliant with RBAC, ARBAC02 and IETF's password policy draft .
+
+
+
+- Which PMC will be responsible for the code: Apache Directory PMC
+
+
+- Into which existing project/module: Fortress will go into its own project
+
+
+- Officer or member managing donation: Emmanuel Lecharny
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-10-21 | The code has been injected in the following git repo : http://git-wip-us.apache.org/repos/asf/directory-fortress-core/repo with all its history |
+
+MD5 or SHA1 sum for donated software: 76116bf38110d95ef043dbad8fad116e10918cae
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-10-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-10-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Joshua Tree Software, file joshua-tree-software-FORTRESS.pdf_  **DONE** 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- o Shawn McKinney (smckinney)
+
+| date | item |
+|------|------|
+| 2014-10-10 | 
+Check that all active committers have a signed CLA on record.
+
+
+All of the committers have a CLA on file at Apache
+
+ |
+| 2014-10-10 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-11-24 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-11-24 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- o Vote on dev@directory.apache.org Message-ID : &lt;5424389C.3050008@gmail.com&gt;
+
+- o Vote result on dev@directory.apache.org Message-ID : &lt;5429D55A.4000808@gmail.com&gt;
diff --git a/content/freemarker.md b/content/freemarker.md
deleted file mode 100644
index 4d6d7db..0000000
--- a/content/freemarker.md
+++ /dev/null
@@ -1,200 +0,0 @@
-Title: FreeMarker Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The FreeMarker project graduated on 2018-03-21</span>
-
-
-FreeMarker is a template engine, i.e. a generic tool to generate text output based on templates. FreeMarker is implemented in Java as a class library for programmers.
-
-
-
-- 2015-07-01 Project enters incubation.
-
-- 2015-08-01 All SGA-s and ICLA-s collected.
-
-- 2015-09-02 Git repositories imported from GitHub.
-
-- 2015-09-05 `dev`  `@`  `freemarker.incubator.apache.org` becomes the offical mailing list
-
-- 2015-11-03 All web site content is moved to the ASF infrastructure, the freemarker.org domain was transferred too
-
-- 2016-01-28 Apache FreeMarker 2.3.24-rc01-incubating released (this is a public release)
-
-- 2016-03-14 freemarker.org is our canonical domain again (fully server from ASF infrastructure), until graduation
-
-- 2016-03-28 Apache FreeMarker 2.3.24-incubating released
-
-- 2016-06-26 Apache FreeMarker 2.3.25-incubating released
-
-- 2017-02-13 New committer added: Woonsan Ko
-
-- 2017-03-25 Apache FreeMarker 2.3.26-incubating released
-
-- 2017-06-24 Based on the source code donated by Kenshoo, Ltd., http://try.freemarker.org goes online on ASF infrastructure
-
-- 2017-11-03 Apache FreeMarker 2.3.27-incubating released
-
-- 2017-11-04 Switched home page domain from freemarker.org to freemarker.apache.org
-
-- 2017-11-09 New PPMC member added: Woonsan Ko
-
-- 2017-11-13 New PPMC member added: Jacques Le Roux
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://freemarker.apache.org/](https://freemarker.apache.org/)  |
-|  | wiki |  [https://cwiki.apache.org/confluence/display/FREEMARKER/](https://cwiki.apache.org/confluence/display/FREEMARKER/)  |
-| Mailing list | dev |  `dev`  `@`  `freemarker.incubator.apache.org`  |
-|  | notifications (Git commits, Jira) |  `notifications`  `@`  `freemarker.incubator.apache.org`  |
-| Bug tracking |  | Report new issues here: [https://issues.apache.org/jira/browse/FREEMARKER](https://issues.apache.org/jira/browse/FREEMARKER) ;<br></br>Earlier issues (weren't yet migrated): [https://sourceforge.net/p/freemarker/bugs/](https://sourceforge.net/p/freemarker/bugs/)  |
-| Source code | Template engine |  [https://gitbox.apache.org/repos/asf/incubator-freemarker.git](https://gitbox.apache.org/repos/asf/incubator-freemarker.git)  |
-|  | Web site |  [https://gitbox.apache.org/repos/asf/incubator-freemarker-site.git](https://gitbox.apache.org/repos/asf/incubator-freemarker-site.git)  |
-|  | Manual and web site generator |  [https://gitbox.apache.org/repos/asf/incubator-freemarker-docgen.git](https://gitbox.apache.org/repos/asf/incubator-freemarker-docgen.git)  |
-|  | Template evaluator web site |  [https://gitbox.apache.org/repos/asf/incubator-freemarker-online-tester.git](https://gitbox.apache.org/repos/asf/incubator-freemarker-online-tester.git)  |
-| Mentors | jacopoc | Jacopo Cappellato |
-|  | jfclere | Jean-Frederic Clere |
-|  | jonesde | David E. Jones |
-|  | rgoers | Ralph Goers |
-|  | wikier | Sergio Fernández |
-| Committers | ddekany | Dániel Dékány |
-|  | edendramis | Evangelia Dendramis |
-|  | jleroux | Jacques Le Roux |
-|  | nanlei | Nan Lei |
-|  | woonsan | Woonsan Ko |
-| Extra |  |  |
-
-Note for PPMC members: The "master" of the roster (list of members) is now [here at Whimsy](https://whimsy.apache.org/roster/ppmc/freemarker) !
-
-
-
--  [2015-08](http://wiki.apache.org/incubator/August2015) 
-
--  [2015-09](http://wiki.apache.org/incubator/September2015) 
-
--  [2015-10](http://wiki.apache.org/incubator/October2015) 
-
--  [2016-01](http://wiki.apache.org/incubator/January2016) 
-
--  [2016-04](http://wiki.apache.org/incubator/April2016) 
-
--  [2016-07](http://wiki.apache.org/incubator/July2016) 
-
--  [2016-10](http://wiki.apache.org/incubator/October2016) 
-
--  [2017-01](http://wiki.apache.org/incubator/January2017) 
-
--  [2017-04](http://wiki.apache.org/incubator/April2017) 
-
--  [2017-07](http://wiki.apache.org/incubator/July2017) 
-
--  [2017-10](http://wiki.apache.org/incubator/October2017) 
-
--  [2018-01](https://wiki.apache.org/incubator/January2018) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-09-20 | Make sure that the requested project name does not already exist. Done in [PODLINGNAMESEARCH-107](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-107) . |
-| 2015-07-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-09-02 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-07-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-10-02 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-11-03 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-08-14 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-08-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2015-08-14 | Tell Mentors to track progress in the file 'incubator/projects/freemarker.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-08-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-09-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-10-07 (or earlier) | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-10-07 (or earlier) | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-07-06 (or earlier) | Check that all active committers have submitted a contributors agreement. |
-| 2015-07-06 | Add all active committers in the STATUS file. |
-| 2015-10-07 (or earlier) | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-
-- As soon as the project graduates, the canonical project homepage domain changes to an apache.org subdomain, and freemarker.org must redirect to that domain.
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ftpserver.md b/content/ftpserver.md
deleted file mode 100644
index 69f1f42..0000000
--- a/content/ftpserver.md
+++ /dev/null
@@ -1,178 +0,0 @@
-Title: FTPServer Project Incubation status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](http://incubator.apache.org/ftpserver) .
-
-
-<span class="graduated">The FtpServer project graduated on 2007-12-18</span>
-
-
-The Apache FTP Server is a Java FTP server implementation. It is a complete and portable ftp server engine solution based on currently available open protocols.
-
-
-It is also a FTP application platform. It includes a Java API to let the developers write Java code to process FTP event notifications.
-
-
-
-- 2007-12-18 - FtpServer graduates to [MINA PMC](http://mina.apache.org) 
-
-- We welcome two new commiters - Niklas Gustavsson and Sergey M Vladimirov.
-
-- Avalon dependencies removed on 7 September 2005.
-
-- Proposal accepted by Incubator PMC on 29 March 2003.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ftpserver/](http://incubator.apache.org/ftpserver/)  |
-| . | wiki | Wiki not requested. |
-| Mailing list | dev |  [ftpserver-dev@incubator.apache.org](http://incubator.apache.org/ftpserver/mail-lists.html)  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/FTPSERVER](http://issues.apache.org/jira/browse/FTPSERVER)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/incubator/ftpserver/](http://svn.apache.org/repos/asf/incubator/ftpserver/)  |
-| Sponsor | . | Incubator PMC |
-| Mentors | . | Paul Hammant - missin in action |
-| . | . | Nicola Ken Barozzi - missing in action |
-| . | . | Niclas Hedhman |
-| Commiters | ngn |  [Niklas Gustavsson](mailto:niklas.{aT}.protocol7.{d0T}.com)  |
-| . | hammant |  [Paul Hammant](mailto:paul.{aT}.hammant.{d0T}.org)  |
-| . | rana_b |  [Rana Battacharyya](mailto:rana_b.{aT}.yahoo.{d0T}.com)  |
-| . | sergey |  [Sergey M Vladimirov](mailto:vlsergey.{aT}.gmail.{d0T}.com)  |
-| Extra | . | . |
-
-
-- http://wiki.apache.org/incubator/October2007
-
-- http://wiki.apache.org/incubator/July2007
-
-- http://wiki.apache.org/incubator/April2007
-
-- http://wiki.apache.org/incubator/January2007
-
-- http://wiki.apache.org/incubator/October2006
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-FtpServer was placed to the Incubator when procedure was not well defined. The dates are therefor unknown below.
-
-
-The origin of the FtpServer can be found in Avalon and primarily Paul Hammant as the initial contributor. As the codebase was developed in the scope of existing Apache projects, there are no Software Grants to be executed, nor any encumbered IP rights.
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-04-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2003-03-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2003-03-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2006-04-20 | Check that all active committers have submitted a contributors agreement. |
-| 2006-01-31 | Add all active committers in the STATUS file. |
-| 2006-04-20 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2006-04-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-10-19 | Ask infrastructure to set up and archive Mailing lists. |
-| 2004-08-05 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-04-20 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| Date | Item |
-|------|------|
-| 2007-12-10 | The Apache Mina PMC accepts to become a new home for the FtpServer. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ga-grid-ignite.md b/content/ga-grid-ignite.md
new file mode 100644
index 0000000..421aa54
--- /dev/null
+++ b/content/ga-grid-ignite.md
@@ -0,0 +1,62 @@
+Title: Genetic Algorithms Grid Codebase Intellectual Property (IP) Clearance Status
+
+
+Genetic Algorithms (GA) Grid represents a set of APIs, specifically developed for Apache Ignite, to solve complex problems by simulating biological evolution. GA's are a form of Machine Learning (ML), excellent for finding an optimal solution, among possibly thousands (or more) candidate solutions for a given domain. Real world applications of GAs include: automotive design, computer gaming, robotics, investments, traffic/shipment routing and more.
+
+
+
+- Apache Ignite PMC will be responsible for the code.
+
+
+- The GA Grid will be accepted as a subset of APIs of existing Ignite Machine Learning component and will be located under "org/apache/ignite/ml/genetic/" package.
+
+
+- Officer or member managing donation: Denis Magda (Apache Ignite PMC Chair)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-01-09 | Pull-request to accept GA Grid under Apache Ignite ML codebase was submitted:<br></br>https://github.com/apache/ignite/pull/3347 |
+| 2018-01-24 | Apache Ignite ML committers/contributors and the donor finished the review of the pull-request. It's ready to be merged into Apache Ignite codebase. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-02-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-02-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: GA Grid
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- NetMillennium, Inc.
+
+| date | item |
+|------|------|
+| 2018-02-22 | Check that all active committers have a signed CLA on record. |
+| 2017-11-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-02-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-02-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [IP Clearance vote on general@incubator.](http://apache-incubator-general.996316.n3.nabble.com/RESULT-IP-CLEARANCE-Apache-Ignite-Genetic-Algorithms-Grid-td57821.html) 
+
+-  [Donation acceptance discussion on Apache Ignite dev list.](http://apache-ignite-developers.2346864.n4.nabble.com/GA-Grid-Request-to-contribute-GA-library-to-Apache-Ignite-td23920.html) 
diff --git a/content/gearpump.md b/content/gearpump.md
deleted file mode 100644
index 24a83b5..0000000
--- a/content/gearpump.md
+++ /dev/null
@@ -1,157 +0,0 @@
-Title: Gearpump Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Gearpump is a reactive real-time streaming engine based on the micro-service Actor model. Gearpump provides extremely high performance stream processing while maintaining millisecond latency message delivery. It enables reusable, composable flows or partial graphs that can be remotely deployed and executed in a diverse set of environments. These flows may be deployed and modified at runtime.
-
-
-<span class="retired">The Gearpump podling retired on 2018-09-19</span>
-
-.
-
-- 2016-03-08 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://gearpump.incubator.apache.org/](http://gearpump.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `gearpump.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `gearpump.incubator.apache.org`  |
-| . | user |  `user`  `@`  `gearpump.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/GEARPUMP](https://issues.apache.org/jira/browse/GEARPUMP)  |
-| Source code | Git | https://gitbox.apache.org/repos/asf/incubator-gearpump.git |
-| Champion | apurtell | Andrew Purtell |
-| Mentors | apurtell | Andrew Purtell |
-| . | jarcec | Jarek Jarcec Cecho |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | rxin | Reynold Xin |
-| . | tlipcon | Todd Lipcon |
-| . | xuefu | Xuefu Zhang |
-| Committers | karolbrejna | Karol Brejna |
-| . | centiteo | Jianzhong Chen |
-| . | mchmarny | Mark Chmarny |
-| . | whjiang | Weihua Jiang |
-| . | kamkasravi | Kam Kasravi |
-| . | lirui | Rui Li |
-| . | tomasztargonski | Tomasz Targonski |
-| . | garyw | Gang Wang |
-| . | . | Huafeng Wang |
-| . | . | Lan Wang |
-| . | xinglang | Xinglang Wang |
-| . | qxu | Qian Xu |
-| . | mauzhang | Tianlun Zhang |
-| . | seanzhong | Xiang Zhong |
-| . | xuefu | Xuefu Zhang |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-03-08 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-03-11 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-03-11 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-03-13 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-03-11 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-03-15 | Check that all active committers have submitted a contributors agreement. |
-| 2016-03-15 | Add all active committers in the relevant section above. |
-| 2016-03-15 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/geode.md b/content/geode.md
deleted file mode 100644
index 40ed2c8..0000000
--- a/content/geode.md
+++ /dev/null
@@ -1,282 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
- **THIS WEBSITE IS NO LONGER MAINTAINED!** 
-
-
-<span class="graduated">The Geode project graduated on 2016-11-16</span>
-
-
-Geode is a data management platform that provides real-time, consistent access to data-intensive applications throughout widely distributed cloud architectures.
-
-
-
-- 2015-04-27 Project enters incubation.
-
-- 2015-06-15 project fully transitions to asf infrastructure.
-
-- 2015-12-01 JGroups (GEODE-77) got resolved finally getting rid of LGPL dependency and allowing our first release!
-
-- 2015-01-19 Software Grant Agreement (SGA) from Pivotal for Apache Geode (incubating) WAN and CQ.
-
-- 2015-01-26 Jinmei Liao elected as a new committer and PPMC member.
-
-- 2016-02-06 Apache Geode 1.0.0-incubating.M1 release.
-
-- 2015-02-19 Sai Boorlagadda elected as a new committer and PPMC member.
-
-- 2015-03-07 Nitin Lamba elected as a new committer and PPMC member.
-
-- 2015-03-30 Dave Barnes elected as a new committer and PPMC member.
-
-- 2016-04-22 Apache Geode 1.0.0-incubating.M2 release.
-
-- 2015-05-19 Software Grant Agreement (SGA) from Pivotal for Apache Geode (incubating) C++ and .NET Native code.
-
-- 2015-05-31 Nabarun Nag elected as a new committer and PPMC member.
-
-- 2015-07-18 Karen Miller elected as a new committer and PPMC member.
-
-- 2015-08-11 William A Rowe resigned as a mentor.
-
-- 2016-08-23 Apache Geode 1.0.0-incubating.M3 release.
-
-- 2015-09-29 Software Grant Agreement (SGA) from Pivotal for Apache Geode (incubating) documentation.
-
-- 2016-10-25 Apache Geode 1.0.0-incubating release.
-
-- 2016-10-25 Apache Geode graduation discussion started.
-
-- 2016-11-16 Apache Geode graduation resolution passed by ASF Board
-
-
--  [Apache Geode (incubating) website](http://geode.incubator.apache.org) 
-
-
--  [How to contribute to Apache Geode (incubating)](https://cwiki.apache.org/confluence/display/GEODE/How+to+Contribute) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://geode.incubator.apache.org/](http://geode.incubator.apache.org/)  |
-| Dashboard | dash |  [http://projects.bitergia.com/apache-geode/browser/](http://projects.bitergia.com/apache-geode/browser/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/GEODE](https://cwiki.apache.org/confluence/display/GEODE/Index)  |
-| Mailing list | dev |  `dev`  `@`  `geode.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `geode.incubator.apache.org`  |
-| . | user |  `user`  `@`  `geode.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `geode.incubator.apache.org`  |
-| . | private |  `private`  `@`  `geode.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/GEODE](https://issues.apache.org/jira/browse/GEODE)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-geode.git](https://gitbox.apache.org/repos/asf/incubator-geode.git)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-geode](http://github.com/apache/incubator-geode)  |
-| . | Website content and docs |  [https://svn.apache.org/repos/asf/incubator/geode](https://svn.apache.org/repos/asf/incubator/geode)  |
-| Mentors | cos | Konstantin Boudnik |
-| . | chipchilders | Chip Childers |
-| . | jerenkrantz | Justin Erenkrantz |
-| . | mattmann | Chris Mattmann |
-| . | rvs | Roman Shaposhnik |
-| Committers | cos | Konstantin Boudnik |
-| . | chipchilders | Chip Childers |
-| . | jerenkrantz | Justin Erenkrantz |
-| . | jani | Jan Iversen |
-| . | mattmann | Chris Mattmann |
-| . | wrowe | William A. Rowe Jr. |
-| . | rvs | Roman Shaposhnik |
-| . | agingade | Anilkumar Gingade |
-| . | Adongre | Avinash Dongre |
-| . | boglesby | Barrett Oglesby |
-| . | bschuchardt | Bruce J Schuchardt |
-| . | kishorbachhav | Kishor Pundlik Bachhav |
-| . | gregchase | Gregory Chase |
-| . | shirish | Shirish Sharad Deshmukh |
-| . | abarve | Amey Barve |
-| . | ashetkar | Amogh Shetkar |
-| . | agingade | Anilkumar Gingade |
-| . | abaker | Anthony Baker |
-| . | ashvin | Ashvin Agrawal |
-| . | breser | Ben Reser |
-| . | cjgeode | Catherine Johnson |
-| . | tzolov | Christian Tzolov |
-| . | upthewaterspout | Dan Smith |
-| . | dschneider | Darrel Schneider |
-| . | yozie | David Yozie |
-| . | dixie | Dick Cavender |
-| . | ezulich | Edin Zulich |
-| . | eshu11 | Eric Shu |
-| . | gideonlow | Gideon Low |
-| . | hbhanawat | Hemant Bhanawat |
-| . | hsaputra | Henry Saputra |
-| . | hiteshkhamesra | Hitesh Khamesra |
-| . | jbarrett | Jacob Barrett |
-| . | jagsr123 | Jags Ramnarayan |
-| . | jasonhuynh | Jason Huynh |
-| . | jensdeppe | Jens Deppe |
-| . | jchen21 | Jianxia Chen |
-| . | jxblum | John Blum |
-| . | klund | Kirk Lund |
-| . | leasttorque | Lise Storc |
-| . | lukeshannon | Luke Shannon |
-| . | ladams | Lyndon Adams |
-| . | lgallinat | Lynn Gallinat |
-| . | ladyvader | Lynn Hughes-Godfrey |
-| . | mbretl | Mark Bretl |
-| . | schubert | Michael Schubert |
-| . | nthanvi | Namrata Thanvi |
-| . | kneeraj | Neeraj Kumar |
-| . | npatel | Nilkanth Patel |
-| . | qihong | Qihong Chen |
-| . | rdiyewar | Rahul Diyewar |
-| . | wrmay | Randy May |
-| . | sagarwal | Sonal Agarwal |
-| . | smaldini | Stephane Maldini |
-| . | pidster | Stuart Williams |
-| . | sjigyasu | Sunil Jigyasu |
-| . | suranjan | Suranjan Kumar |
-| . | sbhokare | Suyog Bhokare |
-| . | sbawaskar | Swapnil Bawaskar |
-| . | tushark | Tushar Khairnar |
-| . | udo | Udo Kohlmeyer |
-| . | vford13 | Vince Ford |
-| . | vivekwiz | Vivek Bhaskar |
-| . | weswilliams | Wes Williams |
-| . | markito | William Markito |
-| . | wschipp | Will Schipp |
-| . | zhouxj | Xiaojian Zhou |
-| . | ymahajan | Yogesh Mahajan |
-| . | jinmeiliao | Jinmei Liao |
-| . | sai_boorlagadda | Sai Boorlagadda |
-| . | nlamba | Nitin Lamba |
-| . | dbarnes | Dave Barnes |
-| nnag | ymahajan | Nabarun Nag |
-| kmiller | ymahajan | Karen Miller |
-
-
--  [June 2015](http://wiki.apache.org/incubator/June2015) 
-
--  [July 2015](http://wiki.apache.org/incubator/July2015) 
-
--  [August 2015](http://wiki.apache.org/incubator/August2015) 
-
--  [September 2015](http://wiki.apache.org/incubator/September2015) 
-
--  [October 2015](http://wiki.apache.org/incubator/October2015) 
-
--  [January 2016](http://wiki.apache.org/incubator/January2016) 
-
--  [April 2016](http://wiki.apache.org/incubator/April2016) 
-
--  [July 2016](http://wiki.apache.org/incubator/July2016) 
-
--  [October 2016](http://wiki.apache.org/incubator/October2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-04-27 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-04-27 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via [INFRA-9536](https://issues.apache.org/jira/browse/INFRA-9536)  |
-| 2015-04-27 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-04-27 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2015-04-27 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-04-27 | Ask infrastructure to set up svn pubsub website. |
-| 2015-06-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-04-27 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-06-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-06-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-06-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-12-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-12-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-| 2015-12-15 | The Apache RAT check was added to check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check that all active committers have submitted a contributors agreement. |
-| 2015-12-15 | Add all active committers in the podling description file. |
-| 2015-12-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/geronimo-1016-ibm-daytrader.md b/content/geronimo-1016-ibm-daytrader.md
new file mode 100644
index 0000000..b601e61
--- /dev/null
+++ b/content/geronimo-1016-ibm-daytrader.md
@@ -0,0 +1,48 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Donation of code DayTrader application<br></br>
+
+
+ [http://issues.apache.org/jira/browse/GERONIMO-1016](http://issues.apache.org/jira/browse/GERONIMO-1016) 
+
+<br></br>
+
+- Which PMC will be responsible for the code  : Apache Geronimo<br></br>
+
+
+- Into which existing project/module : regular Apache SVN
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-09-20<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-11-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-09-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-09-20 | Check that all active committers have a signed CLA on record. |
+| 2005-09-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-09-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-09-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200509.mbox/%3c4 3CC3C8-07EA-4155-9963-649DEC6CCDB9@apache.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200509.mbox/%3c4B3CC3C8-07EA-4155-9963-649DEC6CCDB9@apache.org%3e) <br></br></u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200509.mbox/%3c4 3CC3C8-07EA-4155-9963-649DEC6CCDB9@apache.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200509.mbox/%3c4B3CC3C8-07EA-4155-9963-649DEC6CCDB9@apache.org%3e) <br></br>
\ No newline at end of file
diff --git a/content/geronimo-1111-trifork-initial.md b/content/geronimo-1111-trifork-initial.md
new file mode 100644
index 0000000..81beaf0
--- /dev/null
+++ b/content/geronimo-1111-trifork-initial.md
@@ -0,0 +1,48 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Infrastructure code such as CORBA components, IO system and RMI binding.
+
+
+ [http://issues.apache.org/jira/browse/GERONIMO-1111](http://issues.apache.org/jira/browse/GERONIMO-1111) 
+
+<br></br>
+
+- Which PMC will be responsible for the code  : Apache Geronimo<br></br>
+
+
+- Into which existing project/module : regular Apache SVN
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-10-27<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-10-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-10-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-10-27 | Check that all active committers have a signed CLA on record. |
+| 2005-10-27 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-10-27 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-10-27 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200510.mbox/%3c1 40794F-06CA-4180-B533-70E02322F331@apache.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200510.mbox/%3c1E40794F-06CA-4180-B533-70E02322F331@apache.org%3e) <br></br></u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200510.mbox/%3c1 40794F-06CA-4180-B533-70E02322F331@apache.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200510.mbox/%3c1E40794F-06CA-4180-B533-70E02322F331@apache.org%3e) <br></br>
\ No newline at end of file
diff --git a/content/geronimo-1478-xbean.md b/content/geronimo-1478-xbean.md
new file mode 100644
index 0000000..3ea35e2
--- /dev/null
+++ b/content/geronimo-1478-xbean.md
@@ -0,0 +1,81 @@
+Title: XBean Codebase Intellectual Property (IP) Clearance Status
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+XBean is a new set of functional modules for the Apache Geronimo project. XBean includes the following modules:
+
+
+
+- classpath: Utilities for manipulating the class path of a server after is has been initialized
+
+- jmx: Utilities for automated wrapping of serves with an MBean
+
+- kernel: A light weight kernel
+
+- osgi: Experimental bidirectional bridge between OSGi and the XBean kernel
+
+- reflect: Simple API for build objects using reflection
+
+- sca: SCA annotation support for service building
+
+- server: Supporting classes to start a kernel in a standalone server
+
+- spring: Simplified XML extensions for Spring
+
+- telnet: Lightweight telnet server for scripting the kernel
+
+
+- Geronimo module
+
+
+- geronimo/xbean
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-01-20 | No hits at [United States Patent and Trademark Office](http://tess2.uspto.gov/bin/gate.exe?f=login&amp;p_lang=english&amp;p_d=trmk)  |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-01-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-01-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|------|------|
+| 2006-01-20 | 
+Check that all active committers have a signed CLA on record.
+
+svn log https://svn.codehaus.org/xbean | grep "r[0-9][0-9]* | " | sed "s/r[0-9][0-9]* | \(.*\) | .* | .*$/\1/" | sort | uniq
+All of the committers have a CLA on file at Apache. The following table maps the unix user names to real names:
+
+
+ | chirino | Hiram Chirino|
+ | dain | Dain Sundstrom|
+ | dandiep | Daniel Diephouse|
+ | dblevins | David Blevins|
+ | gnt | Guillaume Nodet|
+ | jstrachan | James Strachan|
+ | jvanzyl | Jason van Zyl|
+ | maguro | Alan Cabrera|
+ | root | -service account-|
+ | spullara | Sam Pullara|
+ |
+| 2006-01-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2006-01-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-01-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it? YES
+<u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200602.mbox/%3c43E282DD.8020502@hogstrom.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200602.mbox/%3c43E282DD.8020502@hogstrom.org%3e) <br></br></u><u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200601.mbox/%3c6BA20318-F62D-4645-AF21-AE31428C7351@iq80.com%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200601.mbox/%3c6BA20318-F62D-4645-AF21-AE31428C7351@iq80.com%3e) <br></br></u>
\ No newline at end of file
diff --git a/content/geronimo-2743-ibm-covalent-j2g.md b/content/geronimo-2743-ibm-covalent-j2g.md
new file mode 100644
index 0000000..3c75115
--- /dev/null
+++ b/content/geronimo-2743-ibm-covalent-j2g.md
@@ -0,0 +1,59 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Donation of code for IBM/Covalent JBoss to Geronimo Conversion tool<br></br>
+
+
+ [http://issues.apache.org/jira/browse/GERONIMO-2743](http://issues.apache.org/jira/browse/GERONIMO-2743) 
+
+<br></br>
+
+- Which PMC will be responsible for the code?  : Apache Geronimo<br></br>
+
+
+- Into which existing project/module : regular Apache SVN under devtool subproject
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| January-16-2007 | 
+JIRA [GERONIMO-2743](https://issues.apache.org/jira/browse/GERONIMO-2743) Created.<br></br> [Covalent CCLA](https://issues.apache.org/jira/secure/attachment/12349176/Covalent-J2G-Tool.pdf) Attached<br></br> [IBM CCLA](https://issues.apache.org/jira/secure/attachment/12349047/CCLA.tif) Attached<br></br> [Original codebase](https://issues.apache.org/jira/secure/attachment/12349046/J2G-Migration-v2_src_1.0.0.zip) attached<br></br>
+
+ |
+| February-21-2007 | 
+Copyright adjusted and [codebase](https://issues.apache.org/jira/secure/attachment/12351724/J2G-Migration_2.0.0_src_20070220-1501.zip) cleaned up, ready for import
+
+ |
+| February-21-2007 | 
+MD5 or SHA1 sum for donated software:<br></br>3cfbefd2424c3556fdcbf162a1129399 *J2G-Migration_2.0.0_src_20070220-1501.zip<br></br>e49e61df710dae15025b0126e4f8e672 *J2G-Migration-v2_src_1.0.0.zip<br></br>( _Note versioned software used to calculate sum in parentheses_ ).
+
+ |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| March-13-2007 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| March-5-2007 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| Not Applicable - No request for new committers as part of this donation at this time. | Check that all active committers have a signed CLA on record. |
+| Not Applicable - No request for new committers as part of this donation at this time. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| March-5-2007 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| March-5-2007 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<u> [http://www.mail-archive.com/dev@geronimo.apache.org/msg41068.html](http://www.mail-archive.com/dev@geronimo.apache.org/msg41068.html) <br></br></u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200701.mbox/%3c45AD336E.5010202@hanik.com%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200701.mbox/%3c45AD336E.5010202@hanik.com%3e) <br></br>
\ No newline at end of file
diff --git a/content/geronimo-762-ibm-console.md b/content/geronimo-762-ibm-console.md
new file mode 100644
index 0000000..0c7e301
--- /dev/null
+++ b/content/geronimo-762-ibm-console.md
@@ -0,0 +1,48 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Donation of code for an administration console for the Apache Geronimo project.<br></br>
+
+
+ [http://issues.apache.org/jira/browse/GERONIMO-762](http://issues.apache.org/jira/browse/GERONIMO-762) 
+
+<br></br>
+
+- Which PMC will be responsible for the code  : Apache Geronimo<br></br>
+
+
+- Into which existing project/module : regular Apache SVN
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-07-14<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-11-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-07-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-07-14 | Check that all active committers have a signed CLA on record. |
+| 2005-07-14 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-07-14 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-07-14 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200507.mbox/%3cP ne.LNX.4.58.0507141258360.9306@saturn.opentools.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200507.mbox/%3cPine.LNX.4.58.0507141258360.9306@saturn.opentools.org%3e) <br></br></u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200507.mbox/%3cP ne.LNX.4.58.0507141258360.9306@saturn.opentools.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200507.mbox/%3cPine.LNX.4.58.0507141258360.9306@saturn.opentools.org%3e) <br></br>
\ No newline at end of file
diff --git a/content/geronimo-875-ibm-eclipse.md b/content/geronimo-875-ibm-eclipse.md
new file mode 100644
index 0000000..59df7eb
--- /dev/null
+++ b/content/geronimo-875-ibm-eclipse.md
@@ -0,0 +1,48 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Donation of code for Eclipse Geronimo Server Adapter<br></br>
+
+
+ [http://issues.apache.org/jira/browse/GERONIMO-875](http://issues.apache.org/jira/browse/GERONIMO-875) 
+
+<br></br>
+
+- Which PMC will be responsible for the code  : Apache Geronimo<br></br>
+
+
+- Into which existing project/module : regular Apache SVN
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-08-16<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-11-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-08-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-08-16 | Check that all active committers have a signed CLA on record. |
+| 2005-08-16 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-08-16 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-08-16 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200508.mbox/%3cA F96C0E-0626-4AAC-87A6-C376D3859168@apache.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200508.mbox/%3cA9F96C0E-0626-4AAC-87A6-C376D3859168@apache.org%3e) <br></br></u> [http://mail-archives.apache.org/mod_mbox/geronimo-dev/200508.mbox/%3cA F96C0E-0626-4AAC-87A6-C376D3859168@apache.org%3e](http://mail-archives.apache.org/mod_mbox/geronimo-dev/200508.mbox/%3cA9F96C0E-0626-4AAC-87A6-C376D3859168@apache.org%3e) <br></br>
\ No newline at end of file
diff --git a/content/geronimo-dependency-upgrades.md b/content/geronimo-dependency-upgrades.md
new file mode 100644
index 0000000..04eb68e
--- /dev/null
+++ b/content/geronimo-dependency-upgrades.md
@@ -0,0 +1,62 @@
+Title: Geronimo 2.2 Dependency Upgrades Codebase Intellectual Property (IP) Clearance Status
+
+
+This code donation updates the version numbers of multiple technologies embedded in the Geronimo server. There are multiple code updates required by these version number updates, included changes to Geronimo's GShell processing.
+
+
+
+- Which PMC will be responsible for the code: Apache Geronimo
+
+
+- The code will be initially imported into http://svn.apache.org/repos/asf/geronimo/server/branches/2.2/.
+
+
+- Kevan Miller is the officer responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2011-11-18 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The code updates are available here: https://issues.apache.org/jira/secure/attachment/12504761/geronimo-2.2-1188546-clean.patch (MD5: bae04ca7df1b7351fa8ea18dd72f82b6) and https://issues.apache.org/jira/secure/attachment/12504760/gshell-alpha-1-606434-clean.patch (MD5: f5d8762e9531a3e615f8caac22ea650e)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2011-11-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2011-11-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _hypobytes-ltd-geronimo-6217.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _HypoBytes LTD._ 
+
+| date | item |
+|------|------|
+| 2011-11-22 | Check that all active committers have a signed CLA on record. |
+| 2011-11-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2011-11-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2011-11-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the geronimo dev-list [archives](http://mail-archives.apache.org/mod_mbox/geronimo-dev/201111.mbox/%3c1BC3AB3F-2B25-4CE4-BA7B-5C8B4764E69B@gmail.com%3e) .
diff --git a/content/geronimo-iiop.md b/content/geronimo-iiop.md
new file mode 100644
index 0000000..1091cf7
--- /dev/null
+++ b/content/geronimo-iiop.md
@@ -0,0 +1,41 @@
+Title: Ip Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+The incoming codebase is a contribution of existing and original work for Apache Geronimo to begin providing the required functionality for IIOP and Corba support as required by the specifications implemented by Geronimo.  It will constitute a separate module in the Geronimo codebase.<br></br>
+
+
+
+- Apache Geronimo is the responsible PMC accepting this code, accepting into the main Geronimo codeline<br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-01-15 | No unique name is being applied - it's an addition to existing Geronimo code<br></br> |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-01-15 | Software grant from Sybase has been received for partial codebase, and ICLA from Mark DeLaFramier has been recieved for original work and patches |
+| 2005-01-15 | Donated files have current-style copyright notice  "Copyright 2004 The Apache Software Foundation or its licensors, as applicable."<br></br> |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-01-15 | All committers have ICLA on file (geirm and adc) |
+| 2005-01-15<br></br> | All items are under Apache license, and no new dependencies exist.<br></br> |
+| <br></br> | <br></br> |
+| <br></br> | <br></br> |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- The Geronimo PMC has accepted this code<br></br>
diff --git a/content/geronimo.md b/content/geronimo.md
deleted file mode 100644
index de0e529..0000000
--- a/content/geronimo.md
+++ /dev/null
@@ -1,147 +0,0 @@
-Title: geronimo
-
-
-# Apache Geronimo Now A Top Level Project {#Apache+Geronimo+Now+A+Top+Level+Project}
-
-The Apache Geronimo project has completed incubation. Please go to the main project site :
-
-
- [http://geronimo.apache.org/](http://geronimo.apache.org/) 
-
-
-This page tracked the project status, incubator-wise. Items marked **DONE** have been completed.
-
-
-<span class="graduated">The Geronimo project graduated on 2004-05-26</span>
-
-
-This page is of historical interest only.
-
-
-# 2003-11-11 {#2003-11-11}
-
-We have recieved a mail [a letter on behalf of the JBoss Group, LCC dated October 31, 2003](geronimo/20031031_jboss.pdf) that asks for clarifications regarding similarity between parts of the Geronimo codebase and the JBoss codebase.
-
-
-We are thus in the process of actively reviewing not only the specific claims but also the code base in general.
-
-
-A small info page for Geronimo can be found [here](geronimo/index.html) .
-
-
-The wiki for Geronimo is at [http://wiki.apache.org/geronimo/](http://wiki.apache.org/geronimo/) 
-
-
- **DONE** Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
-
-
- **DONE** If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names.
-
-
- **DONE** If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.
-
-
- **DONE** If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted.
-
-
- **DONE** Who has been identified as the Mentor for the incubation?
-
-
-Geir Magnusson Jr. Jim Jagielski
-
-
- **DONE** Are they tracking progress in the file
-
-
-incubator/projects/{project_name}/status
-
-
- **DONE** Have the papers that transfer rights to the ASF been received? It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
-
-
- **(new codebase)** 
-
-
- **DONE** Have the files been updated to reflect the new ASF copyright?
-
-
-Verify distribution rights:
-
-
-
-- For all code included with the distribution that is not under the Apache license, do we have the right to combine with Apache-licensed code and redistribute?
-
-done except for questions about the Sun j2ee schemas. We are waiting for information from Geir on the Sun and Apache position on this question.
-
-
- **DONE** Is all source code distributed by the project covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms?
-
-
-
-- Check all clarification requests from the JBoss group, and in particular check that [this letter dated 2003-10-31](geronimo/20031031_jboss.pdf) has been properly addressed. These claims were extensively researched by many Apache contributors and Geronimo committers. The official conclusions are ???
-
-
-- Are all active committers in the STATUS file? **DONE** Do they have accounts on cvs.apache.org? **DONE** Have they submitted a contributors agreement?
-
- **DONE** CVS modules created and committers added to avail file? **DONE** Mailing lists set up and archived? **DONE** Problem tracking system (JIRA)? **DONE** Has the project migrated to our infrastructure?
-
-
- **DONE** Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
- **DONE** Are there three or more independent committers?
-
-
-(The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-
- **DONE** Are project decisions being made in public by the committers?
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-# 2004-01-20 {#2004-01-20}
-
-```
-Status report for the Incubator Geronimo Project * is the STATUS file
-up to date? (also post link) Yes
-/home/cvs/incubator/site/projects/geronimo.cwiki * any legal,
-cross-project or personal issues that still need to be addressed? A
-serious legal issue was raised by JBoss Group LLC in a letter dated
-10/31/2003. This issue has been thoroughly investigated and the
-conclusion of the community is that the issues raised in the letter
-are unfounded. A question has arisen whether it is permissible to
-include XML Schema documents for J2EE deployment descriptors in CVS.
-We have raised the issue with Sun and are awaiting a response. * what
-has been done for incubation since the last report? The establishment
-of a PPMC has aided the organization of the project. Added Gianny
-D'Amour as committer. The community voted to keep the name "Geronimo"
-The ASF has become a J2EE licensee, allowing us to start the
-certification process. * plans and expectations for the next period?
-To start testing with the J2EE TCK. To work with the Incubator PMC to
-provide an interim release allowing people to use Geronimo without
-building from source making it available to a larger community. To
-address any remaining issues before applying to leave the Incubator.
-* any recommendations for how incubation could run more smoothly for
-you? The establishment of the PPMC has been a great help.
-
-```
-
-If graduating to an existing PMC, has the PMC voted to accept it? (Not applicable)
-
-
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-Other issues: 2003/12/21 vote on keeping the name Geronimo +1 jboynes, dblevins, adc, gstein, jdillon, djencks, dims, chirino, dain, janb, gregwilkins, bsnyder, rmonson, jules, geir -1 jstrachan Decision made on 2003/12/24 to keep the name Geronimo
-
-
-List of active committers: (see also the root project.xml maven control file)
-
-
-Jan Bartel Jeremy Boynes Alan Cabrera Hiram Chinirio Gianni Damour Jason Dillon Jules Gosnell David Jencks Richard Monson-Haefel Aaron Mulder Bruce Snyder James Strachan Dain Sundstrom Greg Wilkins
-
diff --git a/content/giraph.md b/content/giraph.md
deleted file mode 100644
index d666f57..0000000
--- a/content/giraph.md
+++ /dev/null
@@ -1,168 +0,0 @@
-Title: Giraph Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Giraph project graduated on 2012-05-16</span>
-
-
-Giraph is a large-scale, fault-tolerant, Bulk Synchronous Parallel (BSP)-based graph processing framework.
-
-
-
--  **2012-05-16 Apache Giraph has been accepted by the Board and has now graduated to a Top Level Project within the Apache Software Foundation.** 
-
-- 2011-09-15 Jake Mannix added as a new committer.
-
-- 2011-09-15 Dmitriy Ryaboy added as a new committer.
-
-- 2011-08-01 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://giraph.apache.org](http://giraph.apache.org)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/GIRAPH](https://cwiki.apache.org/confluence/display/GIRAPH)  |
-| Mailing list | dev |  `giraph-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `giraph-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `giraph-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/GIRAPH](https://issues.apache.org/jira/browse/GIRAPH)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/giraph/](https://svn.apache.org/repos/asf/incubator/giraph/)  |
-| Mentors | omalley | Owen O'Malley |
-| . | mattmann | Chris Mattmann |
-| . | gates | Alan Gates |
-| Committers | aching | Avery Ching |
-| . | kunzchr | Christian Kunz |
-| . | omalley | Owen O'Malley |
-| . | prhodes | Phillip Rhodes |
-| . | hyunsik | Hyunsik Choi |
-| . | jghoman | Jakob Homan |
-| . | asuresh | Arun Suresh |
-| . | jmannix | Jake Mannix |
-| . | dvryaboy | Dmitriy Ryaboy |
-
-
--  [August 2011](http://wiki.apache.org/incubator/August2011) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-08-10 | Make sure that the requested project name does not already exist and check www.trademarkia.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-08-11 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-08-29 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-08-06 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-08-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-08-06 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-08-29 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-08-11 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-08-11 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-08-11 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2011-08-29 | Tell Mentors to track progress in the file 'incubator/projects/giraph.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-08-29 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-08-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-08-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-08-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/gobblin.md b/content/gobblin.md
deleted file mode 100644
index b5ddaa6..0000000
--- a/content/gobblin.md
+++ /dev/null
@@ -1,207 +0,0 @@
-Title: Gobblin Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Gobblin project graduated on 2021-01-20</span>
-
-
-Gobblin is a distributed data integration framework that simplifies common aspects of big data integration such as data ingestion, replication, organization and lifecycle management for both streaming and batch data ecosystems.
-
-
-
-- 2020-12-10 Apache Gobblin 0.15.0-incubating released.
-
-- 2020-01-22 New Committer: Lei Sun
-
-- 2020-01-09 New Committer: Kuai Yu
-
-- 2019-01-07 New Committer: Sudarshan Vasudevan
-
-- 2018-12-08 Apache Gobblin 0.14.0-incubating released.
-
-- 2018-11-08 New Committer: Tamas Nemeth
-
-- 2018-09-20 Apache Gobblin 0.13.0-incubating released.
-
-- 2018-07-02 Apache Gobblin 0.12.0-incubating released.
-
-- 2017-07-02 New Committer: Joel Baranick
-
-- 2017-02-23 Project enters incubation.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://gobblin.apache.org/](https://gobblin.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/GOBBLIN](https://cwiki.apache.org/confluence/display/GOBBLIN)  |
-| Mailing list | dev |  `dev`  `@`  `gobblin.incubator.apache.org`  |
-| . | user |  `user`  `@`  `gobblin.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `gobblin.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/GOBBLIN](https://issues.apache.org/jira/browse/GOBBLIN)  |
-| Source code | git checkout | git clone https://gitbox.apache.org/repos/asf/incubator-gobblin.git |
-| Source code | Browse | git clone https://gitbox.apache.org/repos/asf/incubator-gobblin.git |
-| Source code | Github mirror | https://github.com/apache/incubator-gobblin |
-| Mentors | jbonofre | Jean-Baptiste Onofre |
-| . | olamy | Olivier Lamy |
-| . | omalley | Owen O'Malley |
-| Committers | abti | Abhishek Tiwari |
-| . | hutran | Hung Tran |
-| . | ibuenros | Issac Buenrostro |
-| . | jbaranick | Joel Baranick |
-| . | kishoreg | Kishore G |
-| . | kuyu | Kuai Yu |
-| . | lbendig | Lorand Bendig |
-| . | lesun | Lei Sun |
-| . | shirshanka | Shirshanka Das |
-| . | suvasude | Sudarshan Vasudevan |
-| . | stakiar | Sahil Takiar |
-| . | treff7es | Tamás Németh |
-| . | liyinan926 | Yinan Li |
-
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/January2021
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/October2020
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/July2020
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/April2020
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/January2020
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/October2019
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/July2019
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/April2019
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/January2019
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/October2018
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/July2018
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/April2018
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/January2018
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/October2017
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/September2017
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/August2017
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/June2017
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/April2017
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2020-12-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-04-02 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2017-02-24 | Ask infrastructure to set up and archive mailing lists. |
-| 2017-03-11 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2017-07-23 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2017-07-30 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-01-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2017-03-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-07-20 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2020-06-09 | Tell Mentors to track progress in the file 'incubator/projects/gobblin.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2017-07-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2018-06-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-06-20 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-06-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-06-09 | Check that all active committers have submitted a contributors agreement. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - Yes
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - Yes
-
-- Are project decisions being made in public by the committers? - Yes
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - Yes
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - Yes
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? - NA
-
-- If graduating to a new PMC, has the board voted to accept it? - Yes
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? - Yes
diff --git a/content/gora.md b/content/gora.md
deleted file mode 100644
index 76cea92..0000000
--- a/content/gora.md
+++ /dev/null
@@ -1,173 +0,0 @@
-Title: Gora Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Gora project graduated on 2012-01-15</span>
-
-
-Gora is an ORM framework for column stores such as Apache HBase and Apache Cassandra with a specific focus on Hadoop.
-
-
-Although there are various excellent ORM frameworks for relational databases, data modeling in NoSQL data stores differ profoundly from their relational cousins. Moreover, data-model agnostic frameworks such as JDO are not sufficient for use cases, where one needs to use the full power of the data models in column stores. Gora fills this gap by giving the user an easy-to-use ORM framework with data store specific mappings and built in Apache Hadoop support.
-
-
-
--  **2012-01-15 Apache Gora has been accepted by the Board and has now graduated to a Top Level Project within the Apache Software Foundation.** 
-
-- 2010-10-10 Mailing lists, issue tracker, accounts, etc. created
-
-- 2010-09-26 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/gora/](http://incubator.apache.org/gora/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/GORA](http://cwiki.apache.org/confluence/display/GORA)  |
-| Mailing list | dev |  `gora-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `gora-commits`  `@`  `incubator.apache.org`  |
-| . | private (PPMC) |  `gora-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/GORA](https://issues.apache.org/jira/browse/GORA)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/gora/](https://svn.apache.org/repos/asf/incubator/gora/)  |
-| Mentors | mattmann | Chris Mattmann |
-| . | ab | Andrzej Bialecki |
-| . | tomwhite | Tom White |
-| Committers | . | . |
-| . | ahart | Andrew F. Hart |
-| . | dogacan | Doğacan Güney |
-| . | enis | Enis Söztutar |
-| . | hsaputra | Henry Saputra |
-| . | jnioche | Julien Nioche |
-| . | sertan | Sertan Alkan |
-| . | woollard | David Woollard |
-| Extra | Proposal |  [GORA Proposal](http://wiki.apache.org/incubator/GoraProposal)  |
-
-
-- All are linked from our wiki, [here](https://cwiki.apache.org/confluence/display/GORA/Home) .
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-11-10 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product (searched and found closest match to be [@GORA](http://s.apache.org/Ilp) .). |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2010-09-26 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2010-09-26 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-09-26 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-09-26 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-09-26 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-09-26 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-10-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-10-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-10-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-10-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-09-26 | Check that all active committers have submitted a contributors agreement. |
-| 2010-09-26 | Add all active committers in the STATUS file. |
-| 2010-10-04 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-09-27 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-09-27 | Ask infrastructure to set up and archive Mailing lists. ( [INFRA-3017](https://issues.apache.org/jira/browse/INFRA-3017) ) |
-| 2010-09-27 | Ask infrastructure to set up JIRA ( [INFRA-3019](https://issues.apache.org/jira/browse/INFRA-3019) ) |
-| 2010-09-27 | Ask infrastructure to set up Confluence ( [INFRA-3020](https://issues.apache.org/jira/browse/INFRA-3020) ) |
-| 2010-10-11 | Migrate the project to our infrastructure. |
-
-## Initial Goals {#Project+specific}
-
-
-1. Iron out the remaining issues with HBase, Cassandra and SQL support. **DONE** 
-
-1. Make the first release before the end of the year. **DONE** 
-
-1. Improve documentation. **DONE** 
-
-1. Support for Cascading. Not done, but not currently required by the community.
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **YES** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **YES** 
-
-- Are project decisions being made in public by the committers? **YES** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **YES** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **YES** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? **SEE BELOW** 
-
-- If graduating to a new PMC, has the board voted to accept it? **YES SEE TOP OF PAGE** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? **YES** 
diff --git a/content/gossip.md b/content/gossip.md
deleted file mode 100644
index 80fe146..0000000
--- a/content/gossip.md
+++ /dev/null
@@ -1,142 +0,0 @@
-Title: Gossip Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-<span class="retired">The Gossip podling retired on 2018-08-21</span>
-
-.
-Apache Gossip is an implementation of the Gossip Protocol
-
-
-
-- 2016-04-28 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://gossip.incubator.apache.org/](http://gossip.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `gossip.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `gossip.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/GOSSIP](https://issues.apache.org/jira/browse/GOSSIP)  |
-| Source code | Git | https://gitbox.apache.org/repos/asf/incubator-gossip.git |
-| Champion | ptgoetz | P. Taylor Goetz |
-| Mentors | ptgoetz | P. Taylor Goetz |
-| . | elserj | Josh Elser |
-| . | drew | Drew Farris |
-| Committers | ecapriolo | Edward Capriolo |
-| . |  | Josh Clemm |
-| . | ptgoetz | P. Taylor Goetz |
-| . | gdusbabek | Gary Dusbabek |
-| . |  | Dorian Ellerbe |
-| . |  | Sathish Dhinakaran |
-| . |  | Joe Price |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/graffito.md b/content/graffito.md
deleted file mode 100644
index 27e6b25..0000000
--- a/content/graffito.md
+++ /dev/null
@@ -1,351 +0,0 @@
-Title: Graffito
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Graffito project retired on 2007-07-11</span>
-
-
-Graffito (formerly JCMS) is dedicated to build a complete CMS solution on top of existing content management frameworks (like Slide or Jackrabbit). One of the design goals of Graffito is to be easily integrated in a JSR-168 portal environment like Pluto or Jetspeed 2.
-
-
-
-
-2007 April
-
-The JCR Mapping component was transferred into the Apache Jackrabbit project.
-
-
-
-2006 January
-
-1 new committer joins the team (Alexandru Popescu).
-
-
-Jetspeed 2 integration is almost finished. We plan to build a Graffito implementation for the Jetspeed 2 Page Manager.
-
-
-Version 1.0-a1-dev is almost finished.
-
-
-The JCR mapping tools support basic mapping strategies. Now, we are working on more advance strategy like inheritance,interface, ...
-
-
-
-2005 June
-
-Graffito is still under incubation. See on the Graffito incubation page to get more information.
-
-
-2 new committers join the team (Oliver and Sandro). They are mainly focus on the JCR Mapping tools.
-
-
-Version 1.0-a1-dev is on good way, some portlets are availables, see the maven report to follow the developement process.
-
-
-
-2004 December
-
-Graffito developement is just incubating in the ASF. The code is not 100% stable and not all Graffito features are implemented.
-
-
-Obviously, you are welcome to send your comments and to contribute!
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/graffito/](http://incubator.apache.org/graffito/)  |
-| . | wiki | . |
-| Mailing list | dev | graffito-dev@incubator.apache.org |
-| . | svn | graffito-commits@incubator.apache.org |
-| Bug tracking | jira |  [http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10661](http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10661)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/graffito/](https://svn.apache.org/repos/asf/incubator/graffito/)  |
-| Mentors | raphael | Raphael Luta |
-| . | jukka | Jukka Zitting |
-| Committers | taylor | David S. Taylor |
-| . | raphael | Raphael Luta |
-| . | clombart | Christophe Lombart |
-| . | okiessler | Oliver Kiessler |
-| . | sboehme | Sandro Boehme |
-| . | apopescu | Alexandru Popescu |
-
-# April 2007 {#April 2007}
-
-Graffito is a framework for content-based applications, especially in portlet environments. Graffito entered incubation on September 20, 2004.
-
-
-Despite recent efforts the level of activity within the Graffito project remains low. The only part of the project that enjoys continued interest and commit activity is the JCR Mapping component, whose transfer into a subproject of Apache Jackrabbit is being prepared.
-
-
-There is little indication that the level of activity within other parts of the Graffito project would increase in future, so we will most likely request termination of the project as retired as soon as the JCR Mapping component has been moved to Apache Jackrabbit.
-
-
-# February 2007 {#February 2007}
-
-(This is the extra followup report requested by the board last month.)
-
-
-Graffito is a framework for content-based applications, especially in portlet environments. Graffito entered incubation on September 20, 2004.
-
-
-The recent discussion on the status of the Graffito project has concluded with some concrete action items (see [the thread](http://mail-archives.apache.org/mod_mbox/incubator-graffito-dev/200702.mbox/%3c3b728ee90702140445i5d21bd22j95fb5b67c58abc70@mail.gmail.com%3e) ). The plan is to realign Graffito to be more a content management framework instead of a complete CMS product and to better leverage the features of JCR content repositories.
-
-
-The effect of these plans on commit activity remains to be seen, but as of now the general feeling around the project is positive. Hopefully we'll have some concrete results to show by the time of the next report.
-
-
-# January 2007 {#January 2007}
-
-Graffito is a framework for content-based applications, especially in portlet environments. Graffito entered incubation on September 20, 2004.
-
-
-Top three items to resolve before graduation:
-
-
-
-1. Build a self-sustaining community
-
-1. Create an incubating Graffito release
-
-1. Move the JCR mapping component to the Jackrabbit project
-
-There hasn't been much activity in the Graffito project since the last report. A discussion on what to do with the project that still hasn't reached "critical mass" after over two years of incubation is currently taking place. The perceived complexity of the project is seen by many as a barrier to start using or contributing to Graffito. Splitting the project into more manageable component projects was raised as one potential approach to reviving the codebase and project community.
-
-
-# October 2006 {#October 2006}
-
-Graffito is a framework for content-based applications, especially in portlet environments. Graffito entered incubation on September 20, 2004.
-
-
-Top three items to resolve before graduation:
-
-
-
-- Upgrade to the latest license header and copyright notice policy
-
-- Create an incubating Graffito release
-
-- Move the JCR mapping component to the Jackrabbit project
-
-Graffito activity has increased noticeably since the last report, especially due to interest from within the Jackrabbit community. New bug reports and patches are also being contributed.
-
-
-
-- Jukka Zitting was voted in as a new mentor for the project. He will accompany Raphael Luta in that role.
-
-- Given positive feedback from both communities, we are evaluating options for moving the JCR mapping component from Graffito into the Jackrabbit project. This would expose the component to a wider JCR developer community and a larger audience of potential users.
-
-- There has been renewed discussion on producing incubating releases of the Graffito components.
-
-- Edgar Poce has been working on a related JCR-based wysiwyg portlet prototype, using the Graffito mailing list for design discussions, but the implementation approach differs from the Graffito portlet model, so at least for now the tool is not being integrated into Graffito
-
-# June 2006 {#June 2006}
-
-There was not so much commits on the project due to the current commiters activities. The company Sword Technologies donates new Graffito services (worfklow, news management , mail and scheduler services). Christophe will try to review and commit this code asap.
-
-
-The Spring support is finished for the OCM Tools. Now the OCM tools will be used in the complete Graffito stack. By this way, the Graffito persistence service can access to JCR repositories.
-
-
-Graffito is working with Jetspeed 2 head.
-
-
-# April 2006 {#April 2006}
-
-
-- We are still working on our JCR support. This support is mainly done with an object/Content mapping. We hope to finalize the first release of this subproject for the ASF Europe Conf. This tools could be use in other open source project.
-
-- Sword Technologies is working on the workflow service and the first Graffito module (personalized news management with syndication). The code will be donate in May to the ASF.
-
-- Still working with the Jetspeed team to see how to build a common release for the ASF Europe Conf.
-
-- We want to promote and make some "marketing" to increase the community size.
-
-# 2006Q1 {#2006Q1}
-
-Graffito has nicely grown recently with activity encouraged by the final release of Jetspeed 2.0 and good progress made on the JCR support though Jackrabbit.
-
-
-We've just added a new committer:
-
-
-
-- Alexandru Popescu
-
-and some existing Portals committers also actively contributing to the integration of Graffito with Portals.
-
-
-# 2005Q4 {#2005Q4}
-
-Lot of work underway:
-
-
-
-- working on JCR mapping for Graffito objects
-
-- port under way for using Graffito for storing Jetspeed page descriptions in a Graffito managed repository (effort lead by Jetspeed team)
-
-- several new names have appeared on mailing-list and start contributing patches and join the design discussions
-
-We plan to have a Graffito binary bundled with upcoming Jetspeed 2 M4 release (required if PSML integration is complete for M4) If community development continues its progress as expected, I think we'll add couple of new committers this quarter and probably ask for exiting Incubator early next year.
-
-
-# 2005Q3 {#2005Q3}
-
-
-- The main news in this quarter is that we have expanded the committer base beyond the original contributors with the addition of Oliver Kiessler and Sandro Boehme.
-
-- Both are busily working on building support for JCR (through Jackrabbit).
-
-- Work is also underway to use Graffito as a native CMS engine in Jetspeed 2.
-
-# 2005-4-25 {#2005-4-25}
- `1) Is the STATUS file up to date? Yes 2) Any legal, cross-project or
-personal issues that still need to be addressed? no 3) What has been
-done for incubation since the last report? * The most important work
-was made on the Jetspeed 2 integration &amp; building some JSR-168
-portlets. There is a content tree view, a document viewer and an
-admin browser portlet. Futhermore, we have integrate an HTML editor
-(Kupu). * Some work has been done for the security management (fine
-grain access control, permission management, JAAS support, ...). * We
-have started raising awareness and promoting the project on some
-other Apache and non-Apache lists in order build further the
-community. * New developers have started collaborating with the core
-team on Graffito work, especially JCR mapping tools. 4) Plans and
-expectations for the next period? * Implementing our JCR mapping
-framework with Jackrabbit. * XML editor integration. * A Graffito
-implementation for the Jetspeed 2 page manager. * Continue our work
-on the JSR-168 portlets (search &amp; version management). * Start a site
-demo with a Jetspeed integration * We expect the committer base to
-expand during next period given the current developer participation
-on the dev mailing-lists. 5) Any recommendations for how incubation
-could run more smoothly for you? None so far.
-` 
-# 2005-1-14 {#2005-1-14}
- `1) Is the STATUS file up to date? Yes 2) Any legal, cross-project or
-personal issues that still need to be addressed? * Software grant has
-been recieved by the ASF. * All trademark issues with project name
-have been resolved. * We have renamed the JCMS project as Graffito to
-avoid naming confusion with Jalios JCMS, another Java based CMS
-system. 3) What has been done for incubation since the last report? *
-We cleaned up repository, site, build process, site deployment and
-publishing to help new users and developers jump into the project. *
-Christophe Lombart account has been created and karma granted * ASF
-Infrastructure has been set up for Graffito * We are working on the
-Jetspeed 2 integration &amp; building JSR 168 portlets. 4) Plans and
-expectations for the next period? * Add more info in the Graffito
-site * WEBDAV integration * More work on Jetspeed 2 integration,
-building portlets. * Introduce Graffito to some important to related
-projects: Slide, JackRabbit, Jetspeed ... in order to grow the
-development community 5) Any recommendations for how incubation could
-run more smoothly for you? None so far. All is well.
-` 
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2004-09-20 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. (raphael) |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2004-09-13 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. (raphael) |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2004-09-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. (raphael) |
-| 2004-09-20 | Subscribe all Mentors on the pmc and general lists. (raphael) |
-| 2004-11-06 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) (raphael) |
-| 2004-11-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' (raphael) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2004-11-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. (raphael) |
-| 2004-11-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. (raphael) |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2004-11-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. (raphael) |
-| 2004-11-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. (raphael) |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|------|------|
-| 2004-11-27 | Check that all active committers have submitted a contributors agreement. (raphael) |
-| 2004-12-12 | Add all active committers in the STATUS file. (raphael) |
-| 2004-12-23 | Ask root for the creation of committers' accounts on cvs.apache.org. (raphal) |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|------|------|
-| 2005-01-03 | Ask infrastructure to create source repository modules and grant the committers karma. (raphael) |
-| 2004-12-28 | Ask infrastructure to set up and archive Mailing lists. (raphael) |
-| 2005-01-07 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2005-01-08 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2004-12-27 | Renamed JCMS to Graffito to avoid naming conflict with Jalios JCMS, another Java CMS package |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/griffin.md b/content/griffin.md
deleted file mode 100644
index eb64f00..0000000
--- a/content/griffin.md
+++ /dev/null
@@ -1,205 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Griffin project graduated on 2018-11-21</span>
-
-
-Griffin is a open sourced data quality solution for distributed data systems at any scale in both streaming and batch data model. Griffin supports a wide variety of data quality dimensions as accuracy,completeness,validity,timeliness,profiling.
-
-
-
-- 2018-11-21 Graduated
-
-- 2018-09-30 Add one new committer: Nick Sokolov
-
-- 2018-09-18 Remove one mentor: Uma Maheswara Rao Gangumalla
-
-- 2018-09-07 Apache Griffin 0.3.0-incubating released
-
-- 2018-07-31 Add one new committer: Jason Liao
-
-- 2018-07-28 Add one new committer: Jenny Li
-
-- 2018-07-23 Add one new committer: Liu Jin
-
-- 2018-07-08 Add one new committer: Grant XueXu
-
-- 2018-07-03 Add one PPMC: Liu Lionel
-
-- 2018-05-16 Apache Griffin 0.2.0-incubating released
-
-- 2018-03-30 Add three new committer: Kevin Yao, Xuan Yuqin, Wang He
-
-- 2017-12-21 Add one new committer: Liu Lionel.
-
-- 2017-11-29 Apache Griffin 0.1.6-incubating released
-
-- 2017-08-01 Apache Griffin 0.1.5-incubating released
-
-- 2017-01-23 Mailing list, wiki, jira, git repo and website initialized
-
-- 2016-12-05 Project enters incubation
-
-
-- Project Website: http://griffin.incubator.apache.org/
-
-
-- Community and how to contribute: http://griffin.incubator.apache.org/docs/contribute.html
-
-
-- Committers http://griffin.incubator.apache.org/docs/community.html
-
-- Contributors http://griffin.incubator.apache.org/docs/contributors.html
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://griffin.incubator.apache.org/](http://Griffin.incubator.apache.org/)  |
-| . | wiki | https://cwiki.apache.org/confluence/display/GRIFFIN/Apache+Griffin |
-| Mailing list | dev |  `dev`  `@`  `griffin.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `griffin.incubator.apache.org`  |
-| . | users |  `users`  `@`  `griffin.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/projects/GRIFFIN |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-griffin.git](https://gitbox.apache.org/repos/asf?p=incubator-griffin.git)  |
-| Mentors | hsaputra | Henry Saputra |
-| . | kaspersor | Kasper Sørensen |
-| . | lresende | Luciano Resende |
-| Committers | guoyp | William Guo |
-| . | johnliu | John Liu |
-| . | alexlv | Alex Lv |
-| . | wenzhao | Vincent Zhao |
-| . | yosha | Shawn Sha |
-| . | liangshao | Liang Shao |
-| . | lionelliu | Liu Lionel |
-| . | dyyao | Kevin Yao |
-| . | xuanyq | Yuqin Xuan |
-| . | wanghe | Wang He |
-| . | liujin | Eugene Liu |
-| . | xuexu | Grant Guo |
-| . | jasonliao | Jason Liao |
-| . | icesmartjuan | Juan Li |
-| . | nsokolov | Nick Sokolov |
-| Extra | . | . |
-
-
--  [September 2018](https://wiki.apache.org/incubator/September2018) 
-
--  [June 2018](https://wiki.apache.org/incubator/June2018) 
-
--  [March 2018](https://wiki.apache.org/incubator/March2018) 
-
--  [December 2017](https://wiki.apache.org/incubator/December2017) 
-
--  [September 2017](https://wiki.apache.org/incubator/September2017) 
-
--  [June 2017](https://wiki.apache.org/incubator/June2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-02-16 | Make sure that the requested project name does not already exist. [http://www.apache.org/foundation/m\ arks/naming.html](http://www.apache.org/foundation/marks/naming.html) Please follow the guide to ensure a suitable project/product name. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-02-01 | Ask infrastructure to set up and archive mailing lists. Done using mlreq. |
-| 2017-02-22 | Ask infrastructure to create source repository modules and grant the committers karma. GitHub with GitBox |
-| 2017-03-06 | Ask infrastructure to set up issue tracker (JIRA). (INFRA-14264). Also using GitHub Issues |
-| 2017-03-22 | Ask infrastructure to set up wiki (Confluence, Moin). Using GitHub Wiki |
-| 2017-02-23 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-03-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-02-23 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2017-03-12 | Tell Mentors to track progress in the file 'incubator/projects/griffin.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2017-04-09 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-04-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2017-04-09 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2017-04-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-04-28 | Check that all active committers have submitted a contributors agreement. |
-| 2017-04-28 | Add all active committers in the relevant section above. |
-| 2017-04-28 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/groovy.md b/content/groovy.md
deleted file mode 100644
index 7190cdc..0000000
--- a/content/groovy.md
+++ /dev/null
@@ -1,166 +0,0 @@
-Title: Groovy Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Groovy project graduated on 2015-11-18</span>
-
-
-Groovy is an object-oriented programming language for the Java platform. It is a language with features similar to those of Python, Ruby, Java, Perl, and Smalltalk.
-
-
-
-- 2015-03-17 Project enters incubation.
-
-- 2015-03-25 Mailing lists created.
-
-- 2015-04-15 Issue tracker created and issues imported from codehaus.
-
-- 2015-04-16 Git repository created and source imported.
-
-- 2015-11-18 Groovy graduated and is now a top level Apache project.
-
-
-- TODO : link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www<br></br>apache |  [http://groovy-lang.org/](http://groovy-lang.org/) <br></br> [http://groovy.incubator.apache.org/](http://groovy.incubator.apache.org/)  |
-|   | wiki | https://github.com/groovy/groovy-website/tree/master/site/src/site/wiki |
-|   | contribute |  [http://www.groovy-lang.org/contribute.html](http://www.groovy-lang.org/contribute.html)  |
-| Mailing list | dev |  `dev`  `@`  `groovy.incubator.apache.org`  |
-|   | commits |  `commits`  `@`  `groovy.incubator.apache.org`  |
-|   | issues |  `notifications`  `@`  `groovy.incubator.apache.org`  |
-|   | users |  `users`  `@`  `groovy.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/GROOVY](https://issues.apache.org/jira/browse/GROOVY)  |
-| Source code | GIT<br></br>GitHub mirror |  [https://gitbox.apache.org/repos/asf/incubator-groovy.git](https://gitbox.apache.org/repos/asf/incubator-groovy.git) <br></br> [https://github.com/apache/incubator-groovy](https://github.com/apache/incubator-groovy)  |
-| Mentors | abayer | Andrew Bayer |
-| Mentors | cos | Konstantin Boudnik |
-| Mentors | bdelacretaz | Bertrand Delacretaz |
-| Mentors | jim | Jim Jagielski |
-| Mentors | elecharny | Emmanuel Lecharny |
-| Mentors | rvs | Roman Shaposhnik |
-| Committers | cchampeau | Cedric Champeau |
-| Committers | paulk | Paul King |
-| Committers | glaforge | Guillaume Laforge |
-| Committers | pascalschumacher | Pascal Schumacher |
-| Committers | blackdrag | Jochen Theodorou |
-| Committers | aalmiray | Andres Almiray |
-| Committers | koenig | Dierk Koenig |
-| Committers | russel | Dr. Russel Winder |
-| Committers | keegan | Keegan Witt |
-| Committers | shils | Shil Sinha |
-
-
--  [2015 - April](https://wiki.apache.org/incubator/April2015) 
-
--  [2015 - May](https://wiki.apache.org/incubator/May2015) 
-
--  [2015 - June](https://wiki.apache.org/incubator/June2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-03-17 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2015-03-17 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-03-25 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-03-24 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-03-25 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A : no wiki | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-04-16 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-03-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-04-16 | Give all Mentors access to the incubator GIT repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2015-03-25 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-04-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-04-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-07-13 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-07-13 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-03-30 | Check that all active committers have submitted a contributors agreement. |
-| 2015-03-15 | Add all active committers in the STATUS file. |
-| 2015-04-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/guacamole.md b/content/guacamole.md
deleted file mode 100644
index b8f429f..0000000
--- a/content/guacamole.md
+++ /dev/null
@@ -1,172 +0,0 @@
-Title: Guacamole Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Guacamole project graduated on 2017-11-15</span>
-
-
-Guacamole is an enterprise-grade, protocol-agnostic, remote desktop gateway. Combined with cloud hosting, Guacamole provides an excellent alternative to traditional desktops. Guacamole aims to make cloud-hosted desktop access preferable to traditional, local access.
-
-
-
-- 2016-02-08 Project enters incubation.
-
-- 2016-02-10 Resources (git, jira, mailing lists) creation requested.
-
-- 2016-04-03 New committer: Frode Langelo.
-
-- 2016-12-09 VOTE to include all committers in the PPMC passes.
-
-- 2016-12-29 Apache Guacamole 0.9.10-incubating released.
-
-- 2017-02-02 Apache Guacamole 0.9.11-incubating released.
-
-- 2017-02-05 Mentor resigns: Olivier Lamy.
-
-- 2017-02-09 New committer: Nick Couchman.
-
-- 2017-04-01 Apache Guacamole 0.9.12-incubating released.
-
-- 2017-04-20 [PODLINGNAMESEARCH-120](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-120) started.
-
-- 2017-05-31 [PODLINGNAMESEARCH-120](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-120) completed (name approved).
-
-- 2017-07-30 Apache Guacamole 0.9.13-incubating released.
-
-- 2017-10-19 New committer: Carl Harris.
-
-- 2017-11-15 Project graduated to TLP.
-
-The PPMC consists of all the committers and mentors listed here.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://guacamole.incubator.apache.org/](http://guacamole.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `guacamole.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `guacamole.incubator.apache.org`  |
-| . | user |  `user`  `@`  `guacamole.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/GUACAMOLE](https://issues.apache.org/jira/browse/GUACAMOLE)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-guacamole-client.git](https://gitbox.apache.org/repos/asf/incubator-guacamole-client.git)  |
-| . | git |  [https://gitbox.apache.org/repos/asf/incubator-guacamole-server.git](https://gitbox.apache.org/repos/asf/incubator-guacamole-server.git)  |
-| Documentation source | git |  [https://gitbox.apache.org/repos/asf/incubator-guacamole-manual.git](https://gitbox.apache.org/repos/asf/incubator-guacamole-manual.git)  |
-| Website source | git |  [https://gitbox.apache.org/repos/asf/incubator-guacamole-website.git](https://gitbox.apache.org/repos/asf/incubator-guacamole-website.git)  |
-| Champion | jbonofre | Jean-Baptiste Onofré |
-| Mentor | jbonofre | Jean-Baptiste Onofré |
-| . | humbedooh | Daniel Gruno |
-| . | jim | Jim Jagielsky |
-| . | gtrasuk | Greg Trasuk |
-| Committers | mjumper | Mike Jumper |
-| . | jmuehlner | James Muehlner |
-| . | frode | Frode Langelo |
-| . | vnick | Nick Couchman |
-| . | ceharris | Carl Harris |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-05-31 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. (See: [PODLINGNAMESEARCH-120](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-120) ) |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2016-02-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-02-10 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-02-10 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-02-10 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-05-04 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-02-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2016-02-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-02-10 | Give all Mentors access to the incubator git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-02-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-11-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-12-03 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-12-03 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-02-19 | Check that all active committers have submitted a contributors agreement. |
-| 2016-02-10 | Add all active committers in the STATUS file. |
-| 2016-02-19 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hama.md b/content/hama.md
deleted file mode 100644
index df91bad..0000000
--- a/content/hama.md
+++ /dev/null
@@ -1,179 +0,0 @@
-Title: Hama Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Hama project graduated on 2012-05-16</span>
-
-
-The Hama Project is a distributed computing framework based on BSP (Bulk Synchronous Parallel) computing techniques for massive scientific computations, e.g., matrix, graph and network algorithms.
-
-
-
-- 2012-03-12 : Suraj Menon was added as a new committer.
-
-- 2012-02-05 : Hama 0.4-incubating was released.
-
-- 2011-09-23 : ChiaHung Lin was added as a new committer.
-
-- 2011-09-13 : Thomas Jungblut was added as a new committer.
-
-- 2011-07-28 : Hama 0.3-incubating was released.
-
-- 2011-06-02 : Hama 0.2-incubating was released.
-
-- 2010-02-26 : Hyunsik Choi was added as a new committer.
-
-- 2008-10-29 : Samuel Guo was added as a new committer.
-
-- 2008-05-20 : Hama accepted to Apache Incubator Project.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/hama/](http://incubator.apache.org/hama/)  |
-|  | wiki |  [http://wiki.apache.org/hama](http://wiki.apache.org/hama)  |
-| Mailing list | dev |  [hama-dev@incubator.apache.org](mailto:hama-dev-subscribe@incubator.apache.org)  |
-|  | user |  [hama-user@incubator.apache.org](mailto:hama-user-subscribe@incubator.apache.org)  |
-|  | commits |  [hama-commits@incubator.apache.org](mailto:hama-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/HAMA](http://issues.apache.org/jira/browse/HAMA)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/hama](https://svn.apache.org/repos/asf/incubator/hama)  |
-| Mentors | ianh | Ian Holsman |
-|  | jeastman | Jeff Eastman |
-|  | tommaso | Tommaso Teofili |
-|  | stevel | Steve Loughran |
-| Committers | edwardyoon | Edward Yoon |
-|  | chanwit | Chanwit Kaewkasi |
-|  | tjungblut | Thomas Jungblut |
-|  | chl501 | ChiaHung Lin |
-|  | surajsmenon | Suraj Menon |
-| Extra |  |  |
-
-
--  [June 2008](http://wiki.apache.org/incubator/June2008) : Project started and setting up infrastructure.
-
--  [July 2008](http://wiki.apache.org/incubator/July2008) : The intial donation of Hama code from the google project.
-
--  [August 2008](http://wiki.apache.org/incubator/August2008) : Prepared a plan for the first release of Apache Hama.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-03-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2008-03-10 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2008-05-20 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2008-05-20 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-5-18 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-05-28 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-05-24 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-05-30 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-06-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-06-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-06-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-06-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-08-08 | Check that all active committers have submitted a contributors agreement. |
-| 2008-08-08 | Add all active committers in the STATUS file. |
-| 2008-05-24 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-05-26 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-05-26 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-05-26 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-06-02 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-| date | item |
-|------|------|
-| 2008-05-24 | Setup basic site. |
-| 2008-08-16 | Care for nightly builds. |
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/harmony-127-contribution-plugin-ibm.md b/content/harmony-127-contribution-plugin-ibm.md
new file mode 100644
index 0000000..252d350
--- /dev/null
+++ b/content/harmony-127-contribution-plugin-ibm.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of Eclipse plug-in for Harmony JRE support
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-127](http://issues.apache.org/jira/browse/HARMONY-127) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2006-03-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-03-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2006-03-01 | Check that all active committers have a signed CLA on record. |
+| 2006-03-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2006-03-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-03-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<br></br><u><br></br></u><br></br>
\ No newline at end of file
diff --git a/content/harmony-14-contribution-classlib-ibm.md b/content/harmony-14-contribution-classlib-ibm.md
new file mode 100644
index 0000000..5806338
--- /dev/null
+++ b/content/harmony-14-contribution-classlib-ibm.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of VM/classlibrary interface, java and native code for start of class library for Java 1.4.2<br></br>
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-14](http://issues.apache.org/jira/browse/HARMONY-14) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-11-24 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-11-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-11-24 | Check that all active committers have a signed CLA on record. |
+| 2005-11-24 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-11-24 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-11-24 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<br></br><u><br></br></u><br></br>
\ No newline at end of file
diff --git a/content/harmony-16-contribution-classlib-intel.md b/content/harmony-16-contribution-classlib-intel.md
new file mode 100644
index 0000000..46d7119
--- /dev/null
+++ b/content/harmony-16-contribution-classlib-intel.md
@@ -0,0 +1,44 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+<br></br><br></br>
+ [http://issues.apache.org/jira/browse/HARMONY-16](http://issues.apache.org/jira/browse/HARMONY-16) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-12-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-12-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| N/A<br></br> | Check that all active committers have a signed CLA on record. |
+| 2005-12-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-12-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-12-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  No - upcoming<br></br>
diff --git a/content/harmony-1680-contribution-javap-kononov.md b/content/harmony-1680-contribution-javap-kononov.md
new file mode 100644
index 0000000..0d0d113
--- /dev/null
+++ b/content/harmony-1680-contribution-javap-kononov.md
@@ -0,0 +1,47 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of javap tool - a Java class file disassembler
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-1680](http://issues.apache.org/jira/browse/HARMONY-1680) 
+
+
+
+- Which PMC will be responsible for the code? : Apache Harmony
+
+- Into which existing project/module? : Harmony SVN
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-05-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-05-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|------|------|
+| 2008-06-15 | Check that all active committers have a signed CLA on record. |
+| 2008-06-15 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| N/A | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-05-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  _Pending_ 
+<br></br><u><br></br></u><br></br>
\ No newline at end of file
diff --git a/content/harmony-3-ccontribution-jcvm-archie-cobbs.md b/content/harmony-3-ccontribution-jcvm-archie-cobbs.md
new file mode 100644
index 0000000..2a4aee3
--- /dev/null
+++ b/content/harmony-3-ccontribution-jcvm-archie-cobbs.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Proof-of-concept component model in C using function pointers<br></br>
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-3](http://issues.apache.org/jira/browse/HARMONY-3) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-10-04<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.  _Codebase will be renamed from JCVM_ <br></br> |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-10-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-10-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-10-04 | Check that all active committers have a signed CLA on record. |
+| 2005-10-04 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-10-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-10-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+ [](http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200509.mbox/%3c41287D45-DD82-4276-A0DF-F7263EB5BD8B@apache.org%3e) <br></br><br></br>
\ No newline at end of file
diff --git a/content/harmony-438-contribution-drlvm-intel.md b/content/harmony-438-contribution-drlvm-intel.md
new file mode 100644
index 0000000..9687432
--- /dev/null
+++ b/content/harmony-438-contribution-drlvm-intel.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of DRLVM - JVM including core VM, JIT, GC, bytecode verifier et al
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-438](http://issues.apache.org/jira/browse/HARMONY-438) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2006-05-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-05-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2006-05-31 | Check that all active committers have a signed CLA on record. |
+| 2006-05-31 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2006-05-31 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-05-31 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<br></br><u><br></br></u><br></br>
\ No newline at end of file
diff --git a/content/harmony-5-component-poc-david-tanzer.md b/content/harmony-5-component-poc-david-tanzer.md
new file mode 100644
index 0000000..53f3d4f
--- /dev/null
+++ b/content/harmony-5-component-poc-david-tanzer.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Proof-of-concept component model in C using function pointers<br></br>
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-5](http://issues.apache.org/jira/browse/HARMONY-5) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-09-28<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-09-28 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-09-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-09-28 | Check that all active committers have a signed CLA on record. |
+| 2005-09-28 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-09-28 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-09-28 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+ [http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200509. box/%3c9FFE9F24-033F-412D-8AB7-5069B099B85B@apache.org%3e](http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200509.mbox/%3c9FFE9F24-033F-412D-8AB7-5069B099B85B@apache.org%3e) <br></br>
\ No newline at end of file
diff --git a/content/harmony-57-contribution-tests-ibm.md b/content/harmony-57-contribution-tests-ibm.md
new file mode 100644
index 0000000..49b06ac
--- /dev/null
+++ b/content/harmony-57-contribution-tests-ibm.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of unit test code for a number of components
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-57](http://issues.apache.org/jira/browse/HARMONY-57) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2006-03-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-03-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2006-03-01 | Check that all active committers have a signed CLA on record. |
+| 2006-03-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2006-03-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-03-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<br></br><u><br></br></u><br></br>
\ No newline at end of file
diff --git a/content/harmony-5742-contribution-microemu-teodorczyk.md b/content/harmony-5742-contribution-microemu-teodorczyk.md
new file mode 100644
index 0000000..16c5d5f
--- /dev/null
+++ b/content/harmony-5742-contribution-microemu-teodorczyk.md
@@ -0,0 +1,47 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of Java ME APIs - a subset of Microemulator code
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-5742](http://issues.apache.org/jira/browse/HARMONY-5742) 
+
+
+
+- Which PMC will be responsible for the code? : Apache Harmony
+
+- Into which existing project/module? : Harmony SVN
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-04-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-04-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|------|------|
+| 2008-04-16 | Check that all active committers have a signed CLA on record. |
+| 2008-04-16 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2008-04-16 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-05-31 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  _Pending_ 
+<br></br><u><br></br></u><br></br>
\ No newline at end of file
diff --git a/content/harmony-6-contribution-jvm-daniel-lydick.md b/content/harmony-6-contribution-jvm-daniel-lydick.md
new file mode 100644
index 0000000..ffed27f
--- /dev/null
+++ b/content/harmony-6-contribution-jvm-daniel-lydick.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of simple JVM written by contributor<br></br>
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-6](http://issues.apache.org/jira/browse/HARMONY-6) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2005-10-08<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2005-10-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-10-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2005-10-08 | Check that all active committers have a signed CLA on record. |
+| 2005-10-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2005-10-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-10-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<u> [http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200510. box/%3cB893CF31-912C-4E9E-A88C-2FFA346CAC6D@apache.org%3e](http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200510.mbox/%3cB893CF31-912C-4E9E-A88C-2FFA346CAC6D@apache.org%3e) <br></br></u> [http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200510. box/%3cB893CF31-912C-4E9E-A88C-2FFA346CAC6D@apache.org%3e](http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200510.mbox/%3cB893CF31-912C-4E9E-A88C-2FFA346CAC6D@apache.org%3e) <br></br>
\ No newline at end of file
diff --git a/content/harmony-88-contribution-tests-ibm.md b/content/harmony-88-contribution-tests-ibm.md
new file mode 100644
index 0000000..b7e74d0
--- /dev/null
+++ b/content/harmony-88-contribution-tests-ibm.md
@@ -0,0 +1,50 @@
+Title: Intellectual Property (IP) Clearance Template
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Contribution of code and unit tests for jndi, logging, prefs and sql plus unit tests only for beans, crypto, math, regex and security
+
+
+ [http://issues.apache.org/jira/browse/HARMONY-88](http://issues.apache.org/jira/browse/HARMONY-88) 
+
+
+
+- Which PMC will be responsible for the code  : Apache Harmony / Incubator<br></br>
+
+
+- Into which existing project/module : regular Harmony SVN
+
+- <br></br>
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| N/A<br></br> | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2006-03-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-03-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2006-03-01 | Check that all active committers have a signed CLA on record. |
+| 2006-03-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2006-03-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-03-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it?  Yes
+<br></br><u><br></br></u><br></br>
\ No newline at end of file
diff --git a/content/harmony.md b/content/harmony.md
deleted file mode 100644
index b52f2cb..0000000
--- a/content/harmony.md
+++ /dev/null
@@ -1,190 +0,0 @@
-Title: Apache Harmony Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Harmony project graduated on 2006-10-29</span>
-
-
-The Apache Harmony Project will create  a modular VM and classlibrary architecture, and using it, create a compatible implementation of Java SE 5.<br></br>
-
-
-
-- 2005-05-18 Project accepted by the Incubator PMC
-
-- 2005-05-06 Project proposed to the Incubator PMC<br></br>
-
-
--  [Main Website](http://incubator.apache.org/harmony) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code) :
-
-  -  [Contribution Policy](http://incubator.apache.org/harmony/contribution_policy.html) 
-
-  -  [Project Guidelines](http://incubator.apache.org/harmony/guidelines.html) 
-
-  -  [Getting Involved](http://incubator.apache.org/harmony/get-involved.html) 
-
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/harmony/](http://incubator.apache.org/harmony/)  |
-| . | wiki |  [http://wiki.apache.org/harmony/](http://wiki.apache.org/harmony/) <br></br> |
-| Mailing list | dev | harmony-dev@incubator.apache.org |
-| . | svn | harmony-commits@incubator.apache.org |
-| Bug tracking | JIRA<br></br> | <br></br> |
-| Source code | svn<br></br> | <br></br> |
-| Mentors | <br></br> | Noel Bergman<br></br> |
-| <br></br> | <br></br> | Geir Magnusson Jr. |
-| <br></br> | <br></br> | Stefano Mazzocchi |
-| <br></br> | <br></br> | Sam Ruby |
-| <br></br> | <br></br> | Leo Simons |
-| <br></br> | <br></br> | Davanum Srinivas |
-| Active Committers | . | . |
-|  |  | Geir Magnusson Jr |
-|  |  | Tim Ellison |
-|  |  | Mark Hindess |
-|  |  | Dan Lydick |
-|  |  | George Harley |
-|  |  | Mikhail Loenko |
-|  |  | Stepan Mishura |
-|  |  | Nathan Beyer |
-|  |  | Paulex Yang |
-|  |  | Weldon Washburn |
-|  |  | Archie Cobbs |
-|  |  | Oliver Deakin ( _new - account in progress_ ) |
-|  |  | Richard Liang ( _new - account in progress_ ) |
-|  |  | Alexey Petrenko ( _new - account in progress_ ) |
-|  |  | Gregory Shimansky ( _new - account in progress_ ) |
-|  |  | Alexey Varlamov ( _new - account in progress_ ) |
-|  |  | Alexei Zakharov ( _new - account in progress_ ) |
-| Extra | . | . |
-
-
--  [October 2006](http://wiki.apache.org/incubator/October2006) 
-
--  [July 2006](http://wiki.apache.org/incubator/July2006) 
-
--  [April 2006](http://wiki.apache.org/incubator/April2006) 
-
--  [Q1 2006](http://wiki.apache.org/incubator/IncubatorBoardReport2006Q1) 
-
--  [Q4 2005](http://wiki.apache.org/incubator/IncubatorBoardReport2005Q4) 
-
-- Email archives for previous
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2005-05-06 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A<br></br> | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| N/A<br></br> | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2005-05-18 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2005-05-06 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2005-05-06<br></br> | Subscribe all Mentors on the pmc and general lists. |
-| 2005-06-01<br></br> | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2005-05-06<br></br> | Tell Mentors to track progress in the file 'incubator/projects/harmony.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2006-10-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-10-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2006-10-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2006-10-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. Note - also includes "Public Domain" code from Doug Lea for java.util.concurrent |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2006-10-10 | Check that all active committers have submitted a contributors agreement. Is required by ASF process. |
-| 2006-10-10 | Add all active committers in the STATUS file. See above |
-| 2006-10-10 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2005-06-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-05-01 | Ask infrastructure to set up and archive Mailing lists. |
-| 2005-06-01 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). JIRA chosen by project. |
-| 2005-05-18 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _None_ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? _ **YES** - in progress as a continuous activity of the project PPMC_ 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) _ **YES** _ 
-
-- Are project decisions being made in public by the committers? _ **YES** _ 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? _ **YES** _ 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? _ **YES** this is an area of heightened awareness for project_ 
-
-## Project Specific {#Project+Specific}
-
- __ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? ** _N/A_ ** 
-
-- If graduating to a new PMC, has the board voted to accept it? ** _2006-10-25_ ** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? ** _2006-10-29_ ** 
diff --git a/content/hawq.md b/content/hawq.md
deleted file mode 100644
index 7bf08c2..0000000
--- a/content/hawq.md
+++ /dev/null
@@ -1,260 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
- **THIS WEBSITE IS NO LONGER MAINTAINED!** 
-
-
-<span class="graduated">The HAWQ project graduated on 2018-08-15</span>
-
-
-HAWQ is an advanced, enterprise-grade, Hadoop-native SQL analytic engine built around a robust and high-performance massively-parallel processing (MPP) SQL framework that evolved from the Pivotal Greenplum Database.
-
-
-
-- 2015-09-04 Project enters incubation.
-
-- 2015-12-15 Project fully transitions to ASF infrastructure.
-
-- 2016-01-15 ApacheHAWQ twitter account created and social media guidelines discussed.
-
-- 2016-03-21 GSOC application submitted.
-
-- 2016-06-30 ASF branding issue with an external vendor resolved.
-
-- 2016-09-09 Kavinder Dhaliwal voted in as a new committer.
-
-- 2016-10-11 Our first 2.0.0.0-incubating release created.
-
-- 2016-10-18 Hong Wu voted in as a new committer.
-
-- 2016-10-24 Paul Guo voted in as a new committer.
-
-- 2016-11-04 Bob Glithero joins the community contributing to developer documentation and content.
-
-- 2017-01-31 Lisa Owen voted in as a new committer.
-
-- 2017-02-01 Jane Beckman voted in as a new committer.
-
-- 2017-02-27 Our second 2.1.0.0-incubating release created.
-
-- 2017-02-28 Kyle Dunn voted in as a new committer.
-
-- 2017-07-12 Our third source release which is also the first binary release 2.2.0.0-incubating created.
-
-- 2018-03-18 Our forth source release also the second binary relese 2.3.0.0-incubating created.
-
-- 2018-08-15 HAWQ graduated and is now a top level Apache project.
-
-
--  [Apache HAWQ (incubating) website](http://hawq.incubator.apache.org) 
-
-
--  [How to contribute to Apache HAWQ (incubating)](https://cwiki.apache.org/confluence/display/HAWQ/Contributing+to+HAWQ) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://hawq.incubator.apache.org/](http://hawq.incubator.apache.org/)  |
-| Dashboard | dash |  [http://projects.bitergia.com/apache-hawq/browser/](http://projects.bitergia.com/apache-hawq/browser/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/HAWQ](https://cwiki.apache.org/confluence/display/HAWQ)  |
-| Mailing list | dev |  `dev`  `@`  `hawq.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `hawq.incubator.apache.org`  |
-| . | user |  `user`  `@`  `hawq.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `hawq.incubator.apache.org`  |
-| . | private |  `private`  `@`  `hawq.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/HAWQ](https://issues.apache.org/jira/browse/HAWQ)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-hawq.git](https://gitbox.apache.org/repos/asf/incubator-hawq.git)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-hawq](http://github.com/apache/incubator-hawq)  |
-| . | Website content and docs |  [https://gitbox.apache.org/repos/asf?p=incubator-hawq-site.git](https://gitbox.apache.org/repos/asf?p=incubator-hawq-site.git;a=tree;h=refs/heads/asf-site;hb=refs/heads/asf-site)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-hawq-site](http://github.com/apache/incubator-hawq-site)  |
-| Mentors | cos | Konstantin Boudnik |
-| . | gates | Alan Gates |
-| . | jerenkrantz | Justin Erenkrantz |
-| . | thejas | Thejas Nair |
-| . | rvs | Roman Shaposhnik |
-| Committers | lei_chang | Lei Chang |
-| . | lisao | Lisa Owen |
-| . | jbeckman | Jane Beckman |
-| . | kdunn | Kyle Dunn |
-| . | kavinder | Kavinder Dhaliwal |
-| . | xunzhang | Hong Wu |
-| . | paulguo | Paul Guo |
-| . | cos | Konstantin Boudnik |
-| . | bosco | Don Bosco Durai |
-| . | hubertzhang | Hubert Zhang |
-| . | iweng | Ivan Weng |
-| . | adenissov | Alexander Denissov |
-| . | jda | Jimmy Da |
-| . | mnxn | Michael Nixon |
-| . | dbbaskette | Dan Baskette |
-| . | mkiyama | Mel Kiyama |
-| . | godenyao | Goden Yao |
-| . | foyzur | Foyzur Rahman |
-| . | gcaragea | George Caragea |
-| . | msoliman | Mohamed Soliman |
-| . | vraghavan78 | Venkatesh Raghavan |
-| . | jz | Jesse Zhang |
-| . | schubert | Michael Schubert |
-| . | jakob | Jake Frank |
-| . | litzell | Chuck Litzell |
-| . | gregchase | Gregory Chase |
-| . | jian | Lirong Jian |
-| . | rlei | Radar Da Lei |
-| . | wangzw | Zhanwei Wang |
-| . | yjin | Yi Jin |
-| . | lilima | Lili Ma |
-| . | jyao | Jiali Yao |
-| . | ztao1987 | Zhenglin Tao |
-| . | huor | Ruilong Huo |
-| . | mli | Ming Li |
-| . | wlin | Wen Lin |
-| . | wcl14 | Chunling Wang |
-| . | stanlyxiang | Xiang Sheng |
-| . | nalex | Newton Alex |
-| . | odiachenko | Oleksandr Diachenko |
-| . | jaoki | Jun Aoki |
-| . | bhuvnesh2703 | Bhuvnesh Chaudhary |
-| . | vvineet | Vineet Goel |
-| . | shivram | Shivram Mani |
-| . | nhorn | Noa Horn |
-| . | entong | Entong Shen |
-| . | aelhelw | Amr El-Helw |
-| . | cjcjameson | C.J. Jameson |
-| . | bc | Ben Calegari |
-| . | yozie | David Yozie |
-| . | cwelton | Caleb Welton |
-| . | tzolov | Christian Tzolov |
-| . | tushar_pednekar | Tushar Pednekar |
-| . | jacksoncvm | Chloe Jackson |
-| . | rvs | Roman Shaposhnik |
-| . | gates | Alan Gates |
-| . | omalley | Owen O'Malley |
-| . | thejas | Thejas Nair |
-| . | ssa | Sergey Soldatov |
-| . | atri | Atri Sharma |
-
-
--  [October 2015](http://wiki.apache.org/incubator/October2015) 
-
--  [November 2015](http://wiki.apache.org/incubator/November2015) 
-
--  [December 2015](http://wiki.apache.org/incubator/December2015) 
-
--  [January 2016](http://wiki.apache.org/incubator/January2016) 
-
--  [April 2016](http://wiki.apache.org/incubator/April2016) 
-
--  [July 2016](http://wiki.apache.org/incubator/July2016) 
-
--  [October 2016](http://wiki.apache.org/incubator/October2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-09-04 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-09-04 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via [INFRA-10259](https://issues.apache.org/jira/browse/INFRA-10259)  |
-| 2015-09-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-09-04 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2015-09-04 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-09-04 | Ask infrastructure to set up svn pubsub website. |
-| 2015-12-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-12-15 | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-12-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-12-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-| 2015-12-15 | The Apache RAT check was added to check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-12-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check that all active committers have submitted a contributors agreement. |
-| 2015-12-15 | Add all active committers in the podling description file. |
-| 2015-12-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2016-10-11 | Produce first Apache Incubating release. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-| date | item |
-|------|------|
-| 2016-10-11 | Figure out how to publish project documentation. |
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hcatalog.md b/content/hcatalog.md
deleted file mode 100644
index 1c25a55..0000000
--- a/content/hcatalog.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: HCatalog Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The HCatalog project graduated on 2013-02-13</span>
-
-
-HCatalog is a table and storage management service for data created using Apache Hadoop.
-
-
-
-- 2011-03-14 HCatalog enters incubation.
-
-- 2013-02-13 HCatalog graduates from incubation to become part of Apache Hive.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [HCatalog](http://incubator.apache.org/hcatalog/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/HCATALOG](https://cwiki.apache.org/confluence/display/HCATALOG)  |
-| Mailing list | dev |  `hcatalog-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `hcatalog-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `hcatalog-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/HCATALOG](https://issues.apache.org/jira/browse/HCATALOG)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/hcatalog/](https://svn.apache.org/repos/asf/incubator/hcatalog/)  |
-| Mentors | gates | Alan Gates |
-| . | akarasulu | Alex Karasulu |
-| . | omalley | Owen O'Malley |
-| PPMC Members | hashutosh | Ashutosh Chauhan |
-| . | ddas | Devaraj Das |
-| . | macyang | Mac Yang |
-| . | pauly | Paul Yang |
-| . | khorgath | Sushanth Sowmyan |
-| . | toffer | Francis Liu |
-| . | avandana | Vandana Ayyalasomayajula |
-| Committers | daijy | Daniel Dai |
-| . | travis | Travis Crawford |
-| . | mithun | Mithun Radhakrishnan |
-
-
--  [December 2012 Report](http://wiki.apache.org/incubator/December2012) 
-
--  [September 2012 Report](http://wiki.apache.org/incubator/September2012) 
-
--  [June 2012 Report](http://wiki.apache.org/incubator/June2012) 
-
--  [March 2012 Report](http://wiki.apache.org/incubator/March2012) 
-
--  [December 2011 Report](http://wiki.apache.org/incubator/December2011) 
-
--  [September 2011 Report](http://wiki.apache.org/incubator/September2011) 
-
--  [June 2011 Report](http://wiki.apache.org/incubator/June2011) 
-
--  [May 2011 Report](http://wiki.apache.org/incubator/May2011) 
-
--  [April 2011 Report](http://wiki.apache.org/incubator/April2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-03-15 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. (nameprotect.com no longer offers free services (see [LUCY-121](https://issues.apache.org/jira/browse/LUCY-121)) ) but I worked through the steps located on this [this page](http://www.apache.org/dev/project-names.html) and did not find any name issues.) |
-| Not Applicable | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| Not Applicable | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| Not Applicable | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-03-15 | Ask infrastructure to create source repository modules and grant the committers karma. I created the initial repository area and Owen added the trunk, branches, and tags directories. Karma was granted for mentors and committers who are current Apache committers. Accounts have been requested for committers who are not current committers (Mac Yang and Sushanth Sowmyan). |
-| 2011-03-16 | Ask infrastructure to set up and archive mailing lists. [INFRA-3522](https://issues.apache.org/jira/browse/INFRA-3522)  |
-| 2011-03-16 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). [INFRA-3523](https://issues.apache.org/jira/browse/INFRA-3523)  |
-| 2011-03-16 | Ask infrastructure to set up wiki (Confluence, Moin). I asked for a confluence page since it has access controls. [INFRA_3524](https://issues.apache.org/jira/browse/INFRA-3524)  |
-| 2011-04-12 | Migrate the project to our infrastructure. [HCATALOG-1](https://issues.apache.org/jira/browse/HCATALOG-1)  |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-03-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-03-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-03-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-03-16 | Tell Mentors to track progress in the file 'incubator/projects/hcatalog.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-03-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-03-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-08-09 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-08-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-03-21 | Check that all active committers have submitted a contributors agreement. |
-| 2011-03-28 | Add all active committers in the STATUS file. |
-| 2011-03-21 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? The Hive PMC voted to accept Hive on Feb 4 2013 ( [vote summary](http://mail-archives.apache.org/mod_mbox/hive-dev/201302.mbox/%3CCACf6Rrz-2vQ%2BT3KcDrt9gjxvf8%2B_OOvbxzQRT9iveiknOWxRWQ%40mail.gmail.com%3E) ). The IPMC ratified the decision on Feb 13 2013 ( [vote summary](http://mail-archives.apache.org/mod_mbox/incubator-general/201302.mbox/%3CAA3D16B0-F542-4E17-89E8-9220443158B2%40hortonworks.com%3E) ).
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hdt.md b/content/hdt.md
deleted file mode 100644
index 8a88b94..0000000
--- a/content/hdt.md
+++ /dev/null
@@ -1,180 +0,0 @@
-Title: Hadoop Development Tools (HDT) Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Hadoop Development Tools project retired on 2014-12-02</span>
-
-
-Eclipse based tools for developing applications on the Hadoop platform.
-
-
-
-- 2012-11-09 Project enters incubation.
-
-- 2013-01-07 Project infrastructured (scm, wiki, website) is up and open for business.
-
-- 2013-01-07 All committers have completed ICLAs.
-
-- 2014-12-02 Project requested to be withdrawn from incubation.
-
-
--  [Main Web site](http://hdt.incubator.apache.org/) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://hdt.incubator.apache.org/](http://hdt.incubator.apache.org/)  |
-| . | wiki |  [http://wiki.apache.org/hdt/](http://wiki.apache.org/hdt/)  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/HDT](https://issues.apache.org/jira/browse/HDT)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-hdt.git](https://gitbox.apache.org/repos/asf/incubator-hdt.git)  |
-| Mentors | smarru | Suresh Marru |
-| . | mattmann | Chris Mattman |
-| . | rvs | Roman Shaposhnik |
-| Committers | adamb | Adam Berry |
-| . | jzemerick | Jeffrey Zemerick |
-| . | evert | Evert Lammerts |
-| . | simoneg | Simone Gianni |
-| . | rsharma | Rahul Sharma |
-
-
--  [December 2012 Report](http://wiki.apache.org/incubator/December2012) 
-
-
--  [January 2013 Report](http://wiki.apache.org/incubator/January2013) 
-
-
--  [February 2013 Report](http://wiki.apache.org/incubator/February2013) 
-
-
--  [May 2013 Report](http://wiki.apache.org/incubator/May2013) 
-
-
--  [August 2013 Report](http://wiki.apache.org/incubator/August2013) 
-
-
--  [November 2013 Report](http://wiki.apache.org/incubator/November2013) 
-
-
--  [February 2014 Report](http://wiki.apache.org/incubator/February2014) 
-
-
--  [May 2014 Report](http://wiki.apache.org/incubator/May2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| rvs | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-01-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-12-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-12-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-01-07 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ab | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-12-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-12-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-12-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-12-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-12-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-12-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| rvs | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| rvs | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-01-07 | Check that all active committers have submitted a contributors agreement. |
-| 2013-01-07 | Add all active committers in the STATUS file. |
-| 2013-01-07 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/helix.md b/content/helix.md
deleted file mode 100644
index d0257db..0000000
--- a/content/helix.md
+++ /dev/null
@@ -1,185 +0,0 @@
-Title: Helix Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Helix project graduated on 2013-12-18</span>
-
-
-Helix is a cluster management system for managing partitioned and replicated resources in distributed data systems.
-
-
-
-- 2012-10-15 Project enters incubation.
-
-- 2013-01-28 Apache Helix 0.6.0-incubating released
-
-- 2013-05-18 Added Vinayak Borkar as new committer
-
-- 2013-05-18 Added Shirshanka Das as new committer
-
-- 2013-05-28 Apache Helix 0.6.1-incubating released
-
-- 2013-09-20 Added Kanak Biscuitwala as new committer
-
-- 2013-11-22 Apache Helix 0.6.1-incubating released
-
-- 2013-11-23 Apache Helix 0.7.0-incubating released
-
-- 2013-12-01 Graduation vote passed, Resolution added to the next board meeting (2013-12-18)
-
-- 2013-12-18 Graduation accepted at the board meeting.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/helix/](http://incubator.apache.org/helix/)  |
-| . | wiki |  |
-| Mailing list | dev |  `dev`  `@`  `helix.incubator.apache.org`  |
-| . | user |  `user`  `@`  `helix.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `helix.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/HELIX](https://issues.apache.org/jira/browse/HELIX)  |
-| Source code | git checkout | git clone https://gitbox.apache.org/repos/asf/incubator-helix.git |
-| Source code | Browse | git clone https://gitbox.apache.org/repos/asf/incubator-helix.git |
-| Source code | Github mirror | https://github.com/apache/incubator-helix |
-| Mentors | phunt | Patrick Hunt |
-| . | mahadev | Mahadev Konar |
-| . | omalley | Owen O'Malley |
-| . | olamy | Olivier Lamy |
-| Committers | kishoreg | Kishore Gopalakrishna |
-| . | slu | Shi Lu |
-| . | zzhang | Zhen Zheng |
-| . | ksurlaker | Kapil Surlaker |
-| . | rms | Bob Schulman |
-| . | swaroop-aj | Swaroop Jagadish |
-| . | rahula | Rahul Aggarwal |
-| . | chtyim | Terence Yim |
-| . | santip | Santiago Perez |
-| . | vinayakb | Vinayak Borkar |
-| . | sdas | Shirshanka Das |
-| . | kanakb | Kanak Biscuitwala |
-
-
--  [October 2012 Report](http://wiki.apache.org/incubator/October2012) 
-
--  [November 2012 Report](http://wiki.apache.org/incubator/November2012) 
-
--  [December 2012 Report](http://wiki.apache.org/incubator/December2012) 
-
--  [January 2013 Report](http://wiki.apache.org/incubator/January2013) 
-
--  [April 2013 Report](http://wiki.apache.org/incubator/April2013) 
-
--  [October 2013 Report](http://wiki.apache.org/incubator/October2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ? | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA..-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA..-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA..-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-10-16 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-10-16 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-10-24 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| NA | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-10-24 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-10-16 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-10-16 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-10-16 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-10-24 | Tell Mentors to track progress in the file 'incubator/projects/helix.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-01-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-01-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-01-03 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-01-03 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-01-03 | Check that all active committers have submitted a contributors agreement. |
-| ? | Add all active committers in the STATUS file. |
-| 2013-01-03 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/heraldry.md b/content/heraldry.md
deleted file mode 100644
index b1b1297..0000000
--- a/content/heraldry.md
+++ /dev/null
@@ -1,147 +0,0 @@
-Title: Incubation Status for Heraldry
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Heraldry project retired on 2007-06-09</span>
-
-
- _Please Note: This project has terminated incubation._ 
-
-
-The Heraldry Project aims to develop technologies around the emerging user-centric identity space. It is currently focusing on creating libraries and applications to support OpenID. Interest has also been expressed in working to develop libraries to support Microsoft's CardSpace effort which will be part of Windows Vista.
-
-
-# 2007-06-09 {#2007-06-09}
-
-Project retired. Some activity has moved to [http://openid.net/](http://openid.net/) . Any other forks and code moves will also be announced here.
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/heraldry/](http://incubator.apache.org/heraldry/)  |
-| Mailing list | dev | heraldry-dev@incubator.apache.org |
-| . | commits | heraldry-commits@incubator.apache.org |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/HERALDRY](http://issues.apache.org/jira/browse/HERALDRY)  |
-| Source code | SVN |  [incubator/heraldry](https://svn.apache.org/repos/asf/incubator/heraldry/)  |
-| Mentors | farra | J. Aaron Farr |
-| . | twl | Ted Leung |
-| . | wrowe | William Rowe |
-| Committers | jernst | Johannes Ernst |
-| . | mattpelletier | Matt Pelletier |
-| . | quellhorst | Daniel Quellhorst |
-| . | recordond | David Recordon |
-
-
-- August 2006 [http://wiki.apache.org/incubator/August2006](http://wiki.apache.org/incubator/August2006) 
-
-- October 2006 [http://wiki.apache.org/incubator/October2006](http://wiki.apache.org/incubator/October2006) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2006-07-14 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| DONE | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc and general lists. |
-| 2006-08-09 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| DONE | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| 2006-08-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-07-26 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-10-09 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hermes.md b/content/hermes.md
deleted file mode 100644
index 3bddcaf..0000000
--- a/content/hermes.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: hermes
-
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Hermes project graduated on 2005-06-03</span>
-
-
-A Web Services WS-FX subproject that provides an implementation of the OASIS Web Services Notification (WSN) family of specifications.
-
-
-
-- 2005-06-03 - Incubator PMC voted to graduate Pubscribe (formerly named Hermes)
-
-- 2004-11-08 - Proposal sent to incubator general mailing list
-
-- 2004-10-14 - Proposal accepted by WS PMC
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/hermes/](http://incubator.apache.org/hermes/)  |
-| Proposal | wiki |  [http://wiki.apache.org/incubator/HermesProposal](http://wiki.apache.org/incubator/HermesProposal)  |
-| Mailing Lists | dev |  [hermes-dev@ws.apache.org](mailto:hermes-dev@ws.apache.org)  |
-| . | svn |  [hermes-cvs@incubator.apache.org](mailto:hermes-cvs@incubator.apache.org)  |
-| Bug Tracking | jira |  [http://nagoya.apache.org/jira/secure/project/ViewProject.jspa?pid=1061](http://nagoya.apache.org/jira/secure/project/ViewProject.jspa?pid=10613)  |
-| Source Code | svn |  [https://svn.apache.org/repos/asf/incubator/hermes/](https://svn.apache.org/repos/asf/incubator/hermes/)  |
-| Mentors | dims | Davanum Srinivas |
-| Committers | gawor | Jarek Gawor |
-| . | ips | Ian Springer |
-| . | kidz | Kinga Dziembowski |
-| . | lischke | Stefan Lischke |
-| . | meder | Sam Meder |
-| . | scamp | Sal Campana |
-| . | wire | Bill Reichardt |
-
-
-- 2005-06-03 - Incubator PMC voted to graduate Pubscribe
-
-- 2005-05-25 - A 1.0 beta release of Hermes was released today. For a description of the features included in this release, see the [release announcement](http://marc.theaimsgroup.com/?l=hermes-dev&amp;m=111707874714178&amp;w=2) . This release contains all of the features that are planned for v1.0. The plan is to spend the next 6-8 weeks bolstering documentation and unit test coverage, i18nizing all messages, and fixing any bugs that are reported.
-
-- 2005-04-21 - Kinga Dziembowski was voted in as a committer.
-
-- 2005-03-17 - Due to trademark concerns with using the name Hermes, we voted to change the project name to MessageBroker.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2005-04-18 | Make sure that the requested project name does not already exist and check http://www.nameprotect.com/ to be sure that the name is not already trademarked for an existing software product. NOTE: The new name will be MessageBroker, since the name Hermes has trademark issues. |
-| 2004-11-04 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-11-04 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2004-11-04 | Subscribe all Mentors on the pmc and general lists. |
-| 2004-11-04 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2004-11-04 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2005-01-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-11-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2005-04-26 | Check and make sure that all code included with the distribution that is not under the Apache license has the right to combine with Apache-licensed code and redistribute. |
-| 2005-04-21 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2004-11-08 | Check that all active committers have submitted a contributors agreement. |
-| 2004-11-08 | Add all active committers in the STATUS file. |
-| 2004-11-08 | Ask root for the creation of committers' accounts on minotaur.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2004-11-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2004-11-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2004-11-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2004-11-15 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|-------|-------|
-| 2005-12-15 | Carry over the interfaces used in the Globus WSRF/WSN impl (Subscription, Topic, etc.). |
-| 2005-??-?? | Participate in the OASIS WSN interop. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? ... Yes, though we expect to add new committers in the future. For example. Hitachi will be contributing a couple developers in the near future, and a company called Gestalt has expressed interest in contributing some manpower.
-
-- Are there three or more independent committers? ... Yes - HP (4), Globus (2), CA (1) and Stefan Lischke (individual).
-
-- Are project decisions being made in public by the committers? ... Yes, we vote on all important decisions (for example, cutting a release or changing the project name).
-
-- Are the decision-making guidelines published and agreed to by all of the committers? ... Yes, we use the standard ASF voting procedure.
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? ... Yes, we are only using 3rd-party libs with ASF-compatible licenses, and we are not using any trademarked names without proper acknowledgement.
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Has the PMC voted to accept it? ... Yes, the WebServices PMC has accepted responsibility for the project.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? ... A VOTE was intitiated by dims on 2005-05-27 and incubation was successfully completed on 2005-06-03.
diff --git a/content/heron.md b/content/heron.md
deleted file mode 100644
index c2774fc..0000000
--- a/content/heron.md
+++ /dev/null
@@ -1,166 +0,0 @@
-Title: Heron Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Heron is a real-time, distributed, fault-tolerant stream processing engine
-
-
-
-- 2017-06-23 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website, Mailing lists, Bug tracking, Source code)
-
-
-- link to the project status file (Committers, non-incubation action items, project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://heron.incubator.apache.org/](http://heron.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/HERON](https://cwiki.apache.org/confluence/display/HERON)  |
-| Mailing list | dev |  `dev`  `@`  `heron.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `heron.incubator.apache.org`  |
-| . | users |  `users`  `@`  `heron.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `heron.incubator.apache.org`  |
-| Bug tracking | . |  [Heron JIRA](https://issues.apache.org/jira/browse/Heron/)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-heron.git](https://gitbox.apache.org/repos/asf/incubator-heron.git)  |
-| Mentors | jfarrell | Jake Farrell |
-| . | jacques | Jacques Nadeau |
-| . | julien | Julien Le Dem |
-| . | ptgoetz | P. taylor Goetz |
-| . | wave | David Fisher |
-| Committers / PPMC | . | Andrew Jorgensen (andrew at andrewjorgensen dot com) |
-| . | ashvin | Ashvin Agrawal (ashvin at apache dot org) |
-| . | . | Avrilia Floratou (avrilia dot floratou at gmail dot com) |
-| . | billgraham | Bill Graham (billgraham at apache dot org) |
-| . | . | Brian Hatfield (bmhatfield at gmail dot com) |
-| . | . | Chris Kellogg (cckellogg at gmail dot com) |
-| . | . | Huijun Wu (huijun dot wu dot 2010 at gmail dot com) |
-| . | . | Karthik Ramasamy (karthik at gmail dot com) |
-| . | . | Maosong Fu (maosongfu at gmail dot com) |
-| . | . | Neng Lu(freeneng at gmail dot com) |
-| . | . | Runhang Li (obj dot runhang at gmail dot com) |
-| . | . | Sanjeev Kulkarni (sanjeevrk at gmail dot com) |
-| . | supun | Supun Kamburugamuve (supun at apache dot org) |
-| . | . | Thomas Sun (tom dot ssf at gmail dot com) |
-| . | . | Yaliang Wang (yaliang dot w dot wang at ieee dot org) |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hise.md b/content/hise.md
deleted file mode 100644
index 1a6a663..0000000
--- a/content/hise.md
+++ /dev/null
@@ -1,146 +0,0 @@
-Title: HISE Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The HISE project retired on 2012-02-11</span>
-
-
-HISE provides a deployable component ready to interpret human interactions defined in xml files, as specified in WS-Human-Task 1.0 Spec. It also exposes a taskOperations Web Service for tasks management.
-
-
-
-- 2012-02-11 Project requested to be withdrawn from incubation.
-
-- 2009-11-06 HISE enters incubation, sponsored by ODE.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/hise/](http://incubator.apache.org/hise/)  |
-| . | wiki | . |
-| Mailing list | dev |  |
-| . | commits |  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/HISE |
-| Source code | SVN | http://svn.apache.org/repos/asf/incubator/hise/ |
-| Mentors | gdaniels | Glen Daniels |
-| . | pzf | Paul Fremantle |
-| . | mriou | Matthieu Riou |
-| Committers | . | Jakub Kurlenda |
-| . | . | Mateusz Lipczyński |
-| . | . | Michał Zalewski |
-| . | . | Rafał Rusin |
-| . | . | Ula Trzaskowska |
-| . | . | Warren Crossing |
-| . | . | Witek Wołejszo |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-11-06 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| 2009-11-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-11-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-11-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-11-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-11-06 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hivemall.md b/content/hivemall.md
deleted file mode 100644
index dbcaff3..0000000
--- a/content/hivemall.md
+++ /dev/null
@@ -1,154 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Hivemall is a library for machine learning implemented as Hive UDFs/UDAFs/UDTFs. Hivemall runs on Hadoop-based data processing frameworks, specifically on Apache Hive, Apache Spark, and Apache Pig, that support Hive UDFs as an extension mechanism.
-
-
-
-- 2016-09-13 Project enters incubation.
-
-
--  [Apache Hivemall (incubating) website](http://hivemall.incubator.apache.org) 
-
-
--  [How to contribute to Apache Hivemall (incubating)](https://cwiki.apache.org/confluence/display/HIVEMALL/) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://hivemall.incubator.apache.org/](http://hivemall.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/HIVEMALL](https://cwiki.apache.org/confluence/display/HIVEMALL)  |
-| Mailing list | dev |  `dev`  `@`  `hivemall.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `hivemall.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `hivemall.incubator.apache.org`  |
-| . | user |  `user`  `@`  `hivemall.incubator.apache.org`  |
-| . | private |  `private`  `@`  `hivemall.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/HIVEMALL](https://issues.apache.org/jira/browse/HIVEMALL)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-hivemall.git](https://gitbox.apache.org/repos/asf/incubator-hivemall.git)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-hivemall](http://github.com/apache/incubator-hivemall)  |
-| . | Website content and docs |  [https://gitbox.apache.org/repos/asf/incubator-hivemall-site.git](https://gitbox.apache.org/repos/asf/incubator-hivemall-site.git)  |
-| Mentors | rxin | Reynold Xin |
-| . | weimer | Markus Weimer |
-| . | meng | Xiangrui Meng |
-| . | daijy | Daniel Dai |
-| Committers | myui | Makoto Yui |
-| . | yamamuro | Takeshi Yamamuro |
-| . | daijy | Daniel Dai |
-| . | ozawa | Tsuyoshi Ozawa |
-| . | lewuathe | Kai Sasaki |
-| . | takuti | Takuya Kitazawa |
-| . | ri | Ryu-ichi Ito |
-
-
--  [September 2016](http://wiki.apache.org/incubator/September2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-09-14 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via [INFRA-12608](https://issues.apache.org/jira/browse/INFRA-12608)  |
-| 2016-09-14 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-09-14 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2016-09-14 | Ask infrastructure to set up wiki (Confluence). |
-| 2016-09-14 | Ask infrastructure to set up svn pubsub website. |
-| 2016-12-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/hivemall.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-| ....-..-.. | The Apache RAT check was added to check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the podling description file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| ....-..-.. | Produce first Apache Incubating release. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-| date | item |
-|------|------|
-| ....-..-.. | Figure out how to publish project documentation. |
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hop.md b/content/hop.md
deleted file mode 100644
index 095b168..0000000
--- a/content/hop.md
+++ /dev/null
@@ -1,148 +0,0 @@
-Title: Apache Hop Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Hop is short for the Hop Orchestration Platform. Written completely in Java it aims to provide a wide range of data orchestration tools, including a visual development environment, servers, metadata analysis, auditing services and so on. As a platform, Hop also wants to be a reusable library so that it can be easily reused by other software.
-
-
-
-- 2020-09-24 Project enters incubation.
-
-
--  [https://hop.incubator.apache.org/](https://hop.incubator.apache.org/) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://hop.incubator.apache.org/](http://hop.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `hop.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `hop.incubator.apache.org`  |
-| . | users |  `users`  `@`  `hop.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `hop.incubator.apache.org`  |
-| Bug tracking | . |  [JIRA](https://issues.apache.org/jira/projects/HOP/issues)  |
-| Source code | Git |  [https://github.com/apache/hop](https://github.com/apache/hop)  |
-| Roster | Whimsy |  [Hop Roster](https://whimsy.apache.org/roster/ppmc/hop)  |
-
-
--  [Hop Board Reports](https://whimsy.apache.org/board/minutes/hop.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2020-09-25 | Request DNS (first step after creating podling status page) |
-| 2020-09-25 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2020-09-25 | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2020-09-25 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2020-11-18 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2020-10-01 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2020-12-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2020-11-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-11-18 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| 2020-11-18 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/horn.md b/content/horn.md
deleted file mode 100644
index d80f1f4..0000000
--- a/content/horn.md
+++ /dev/null
@@ -1,164 +0,0 @@
-Title: HORN Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Horn is a neuron-centric programming model and execution framework on Hadoop and Hama, inspired by Google's DistBelief, supports both data and model parallelism for training large models with massive datasets.
-
-
-<span class="retired">The HORN project retired on 2017-07-13</span>
-
-
-
-- 2016-12-12 New committers: Yeonhee Lee.
-
-- 2015-11-17 New committers: Zachary Jaffee.
-
-- 2015-09-04 Project enters incubation.
-
-
-- TODO: link to the main website
-
-
-- TODO: link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- TODO: link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://horn.incubator.apache.org/](http://horn.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/HORN](https://cwiki.apache.org/confluence/display/HORN)  |
-| Mailing list | dev |  `dev`  `@`  `horn.incubator.apache.org`  |
-| . | private |  `private`  `@`  `horn.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/HORN](https://issues.apache.org/jira/browse/HORN)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-horn.git](https://gitbox.apache.org/repos/asf/incubator-horn.git)  |
-| Mentors | lresende | Luciano Resende |
-| . | edwardyoon | Edward J. Yoon |
-| Committers | tjungblut | Thomas Jungblut |
-| . | edwardyoon | Edward J. Yoon |
-| . | dongjin | DongJin Lee |
-| . | minho | MinHo Kim |
-| . | jungin | JungIn Lee |
-| . | paeng | Kyunghyun Paeng |
-| . | chl501 | Chia-Hung Lin |
-| . | bsikander | Behroz Sikander |
-| . | ks881115 | Kisuk Lee |
-| . | zjaffee | Zachary Jaffee |
-| . | yeonhee | Yeonhee Lee |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-09-05 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-09-08 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-09-05 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-09-08 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-09-10 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-09-05 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-01-03 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2017-01-03 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-01-03 | Check that all active committers have submitted a contributors agreement. |
-| 2017-01-03 | Add all active committers in the STATUS file. |
-| 2017-01-03 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/hornetq.md b/content/hornetq.md
new file mode 100644
index 0000000..2b85aec
--- /dev/null
+++ b/content/hornetq.md
@@ -0,0 +1,59 @@
+Title: HornetQ Codebase Intellectual Property (IP) Clearance Status
+
+
+HornetQ is an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system. This is large code grant of the whole project. HornetQ was previously licensed under the Apache License 2.0 and is now being granted to the ASF.
+
+
+
+- Which PMC will be responsible for the code: Apache ActiveMQ PMC
+
+
+- Into which existing project/module: New ActiveMQ subproject
+
+
+- Officer or member managing donation: Hiram Chirino
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-07-10 | https://github.com/hornetq/hornetq/archive/90d43fbc158a0e6e3028c7179dbcf984757b88fb.zip (MD5: c41d7dafd24c02dd040217f46255c64e ) |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-04-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>A CCLA was recorded cover grant from 'Red Hat, Inc. as - David Ingham:dingham@redhat.com:Signed Corp CLA for Clebert Suconic, Andy Taylor, Justin Bertram, Youg Hao Gao, Martyn Taylor for hornetq, hornetq.utils.UUID, hornetq.utils.base64, hornetq.utils.json' |
+| 2015-05-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: CCLA was recorded as _Red Hat, Inc. - David Ingham:dingham@redhat.com:Signed Corp CLA for Clebert Suconic, Andy Taylor, Justin Bertram, Youg Hao Gao, Martyn Taylor for hornetq, hornetq.utils.UUID, hornetq.utils.base64, hornetq.utils.json_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Red Hat, Inc.
+
+| date | item |
+|------|------|
+| 2015-04-13 | Check that all active committers have a signed CLA on record. |
+| 2015-04-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-05-27 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-05-27 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [http://activemq.markmail.org/thread/asmdcnxetocg4jnb](http://activemq.markmail.org/thread/asmdcnxetocg4jnb) 
diff --git a/content/htrace.md b/content/htrace.md
index 9aa4479..ef09110 100644
--- a/content/htrace.md
+++ b/content/htrace.md
@@ -1,167 +1,76 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: HTrace Codebase Intellectual Property (IP) Clearance Status
 
 
-HTrace is a tracing framework intended for use with distributed systems written in java.
-
-
-<span class="retired">The HTrace podling retired on 2018-04-11</span>
+HTrace is a tracing framework for use with distributed systems written in java. HTrace is currently in a repository on the Cloudera public github at htrace.org. This clearance is for HTrace at https://github.com/cloudera/htrace as of commit 22c4fac69eef035d8cc2819febdc4ac14c1fb99a .
 
 
 
-- 2018-04-11 The HTrace podling retired on 2018-04-11
-
-- 2016-10-05 PPMC: Mike Drob
-
-- 2016-03-08 GSoC Mentor: Colin McCabe
-
-- 2016-03-04 Apache HTrace 4.1.0 release
-
-- 2015-09-26 Apache HTrace 4.0.1 release
-
-- 2015-09-14 Apache HTrace 4.0.0 release
-
-- 2015-06-03 Apache HTrace 3.2.0 release
-
-- 2015-02-11 PPMC: Abraham Elmahrek
-
-- 2014-11-11 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www | Original: [http://htrace.org/](http://htrace.org/) Podling: [http://htrace.incubator.apache.org/](http://htrace.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `htrace.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `htrace.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `htrace.incubator.apache.org`  |
-| . | private |  `private`  `@`  `htrace.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/HTRACE](https://issues.apache.org/jira/browse/HTRACE)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-htrace.git](https://gitbox.apache.org/repos/asf?p=incubator-htrace.git)  |
-| Mentors | rvs | Roman Shaposhnik |
-| . | jfarrell | Jake Farrell |
-| . | todd | Todd Lipcon |
-| . | lewismc | Lewis John McGibbney |
-| . | billie | Billie Rinaldi |
-| . | stack | Michael Stack |
-| Committers | . | . |
-| . | cmccabe | Colin McCabe |
-| . | eclark | Elliott Clark |
-| . | leavitt | Jonathan Leavitt |
-| . | iwasakims | Masatake Iwasaki |
-| . | stack | Michael Stack |
-| . | ndimiduk | Nick Dimiduk |
-| . | todd | Todd Lipcon |
-| Extra | . | . |
+- Which PMC will be responsible for the code: HTrace (incubating) PMC
 
 
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
+- Into which existing project/module: HTrace (incubating)
 
 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+- Officer or member managing donation: Michael Stack (stack)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2014-11-11 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) DONE |
-| 2014-11-11 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names: N/A. |
-| 2014-11-11 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance: N/A. |
-| 2014-11-11 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. DONE |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-11-11 | Ask infrastructure to create source repository modules and grant the committers karma. DONE by Jake Farrell in [INFRA-8608](https://issues.apache.org/jira/browse/INFRA-8608)  |
-| 2014-11-11 | Ask infrastructure to set up and archive mailing lists. DONE by Jake Farrell in [INFRA-8608](https://issues.apache.org/jira/browse/INFRA-8608)  |
-| 2014-11-11 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). DONE by Jake Farrell in [INFRA-8608](https://issues.apache.org/jira/browse/INFRA-8608)  |
-| 2014-11-11 | Ask infrastructure to set up wiki (Confluence, Moin). NONE asked for. |
-| 2014-12-10 | Project src migrated to Apache. Software grant email, [[IP CLEARANCE] Software grant for htrace (incubating), a tracing framework for use with distributed systems written in java](https://mail-archives.apache.org/mod_mbox/incubator-general/201412.mbox/%3CCADcMMgFEWeSS9PdaNh94ahgZaW%2BrtK19EX4rNqSagSj%3DmuzaBQ%40mail.gmail.com%3E) . |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-11-11 | Subscribe all Mentors on the pmc and general lists. DONE by Jake Farrell |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' DONE by Jake Farrell |
+| 2014-11-11 | https://github.com/cloudera/htrace as of commit 22c4fac69eef035d8cc2819febdc4ac14c1fb99a or see tarball at https://issues.apache.org/jira/secure/attachment/12680909/htrace.22c4fac69eef035d8cc2819febdc4ac14c1fb99a.tgz Its md5 is ed8901e64ff35e93fb78ebd1c9056385 |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2014-12-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. DONE: See [[IP CLEARANCE] Software grant for htrace (incubating), a tracing framework for use with distributed systems written in java](https://mail-archives.apache.org/mod_mbox/incubator-general/201412.mbox/%3CCADcMMgFEWeSS9PdaNh94ahgZaW%2BrtK19EX4rNqSagSj%3DmuzaBQ%40mail.gmail.com%3E)  |
-| 2014-12-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. DONE. Migraged src runs RAT check as part of build. |
+| 2014-11-11 | Software Grant of HTrace project mailed to secretary@apache. Had to be resent 2014-11-26 signed by a VP of Cloudera, Inc. (Peter Cooper Ellis). |
+| 2014-11-27 | Grant ack'd by secretary@apache `To: Peter Cooper Ellis &lt;stack@apache.org&gt;
+                    Cc: secretary@apache.org
+                    Message-ID: &lt;5477bcd888b9c_1d8dc1e0f8608b9@whimsy-vm.mail&gt;
+                    Subject: Your Grant sent to Apache Secretary
+                    Mime-Version: 1.0
+                    Content-Type: text/plain;
+                     charset=UTF-8
+                     Content-Transfer-Encoding: 7bit
+
+                     Dear Peter Cooper Ellis,
+
+                     This message acknowledges receipt of the following document, which has been filed in the Apache Software Foundation records:
+
+                       Grant from Cloudera, Inc.
+
+                       -- Craig L Russell
+                       Secretary, Apache Software Foundation`  |
+| N/A | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. _The project was already licensed Apache 2.0_ . |
+
+Identify name recorded for software grant: _Cloudera, Inc., file cloudera-htrace.pdf, for htrace_ 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. ONGOING |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. ONGOING |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+- Cloudera, Inc.
 
 | date | item |
 |------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. ONGOING. All but Mastake have filed icla or already have an apache id. |
-| ....-..-.. | Add all active committers in the STATUS file. TODO |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. DONE except for Masatake. Waiting on icla. |
+| 2014-11-11 | All active committers have a signed CLA on record. |
+| 2014-11-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-11-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-11-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-# Incubation {#Incubation}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
-These action items have to be checked for during the whole incubation process.
+Related VOTEs:
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
 
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+- The VOTE thread accepting the donation is up on the dev mailing list for htrace: http://mail-archives.apache.org/mod_mbox/incubator-htrace-dev/201411.mbox/browser
diff --git a/content/httpd-cli.md b/content/httpd-cli.md
deleted file mode 100644
index bae60ae..0000000
--- a/content/httpd-cli.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Title: httpd-cli
-
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The httpd-CLI project graduated on 2004-12-16</span>
-
-
-The Apache 2.0 module mod_aspdotnet, and CLI implementation of Apache.Web.Host, together form a hosting environment for ASP.NET applications within Microsoft's .NET Framework for Windows, and the Apache 2.0 httpd server running on Win32.
-
-
-This code was developed by William A. Rowe, Jr., Covalent Technologies, Inc., and is donated to the Apache community as a starting point for multiple avenues of CLI integration with the Apache 2.0 httpd server.
-
-
-Microsoft, as part of it's .NET patents, asserts ownership of the implementation of System.Web.Hosting, the framework under which ASP.NET applications are instantiated. Note that this patent does not assert the implementation of System.Web.Host, System.Web.Request and other specific implementations of the server 'container' which forwards ASP.NET requests to the .NET Framework's implementation of System.Web.Hosting.
-
-
-The initial goal of the PMC is to release this ASP.NET implementation of ASP.NET for he benefit of Apache httpd Win32 users.
-
-
-The second goal of the PMC will be to refactor the Microsoft COM/.NET CLI thunks which exist in mod_aspdotnet, from the specific implementation of the ASP.NET-based Apache.Web.Host container.
-
-
-Once the CLI thunk is a seperate and distinct component, the next two goals, may occur in parallel;
-
-
-
-- Abstract the Apache httpd request model as it's own CLI implementation, allowing authors to handle native httpd requests without the Microsoft specific ASP.NET model.
-
-
-- Build alternate CLI thunks to other engines such as mono, to allow CLI code to run on other platforms using the native Apache request model.
-
-This goal allows CLI developers, to use tools such as C# to develop Apache-based solutions using alternate CLI hosting environments such as mono, without infringing on the claims of Microsoft which may inhibit ASP.NET-based solutions on non-Windows operating systems.
-
-
-
-- The Apache httpd PMC owns this httpd CLI subproject, and this subproject follows the Apache httpd PMC's direction. Significant contributors to this sub-project (e.g. 6 months of sustained contribution) will be proposed for Apache httpd PMC membership.
-
-
-- The CLI sub-project's modules will be available under seperate downloads, and are not envisioned to become part of a 'stock' httpd distribution.
-
-# Detailed References: {#Detailed+References%3A}
-
-| item | type | reference |
-|-------|-------|------------|
-| Status file | www | http://incubator.apache.org/projects/httpd-cli.html |
-| Website | www | To-Do; http://httpd.apache.org/cli/ |
-| Mailing list | dev | cli-dev@httpd.apache.org |
-| Source code | SVN | /repos/asf/incubator/httpd/cli/trunk/ |
-| Mentor | wrowe | Will Rowe (CLA on file) |
-| Committers | ridruejo | Daniel Lopez (CLA on file) |
-| Committers | ianh | Ian Holsman (CLA on file) |
-| Committers | jimjag | Jim Jagleski (CLA on file) |
-| Committers | shughes | Sterling Hughes (CLA on file) |
-| Committers | wrowe | Will Rowe (CLA on file) |
-| Discussion Thread | mail | Message-Id: &lt;6.0.2.0.2.20040305114405.02b4db60@pop3.rowe-clan.net&gt; |
-
- _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-
-- 19 July 2004
-
-In March '04, the httpd PMC referred the mod_aspdotnet contribution (Code Grant ack'ed in rev 1.7 of foundation/grants.txt) for incubation.
-
-
-The project was recently picked back up, with Will Rowe now having the cycles to devote to the care and feeding required of incubation. Ian Holsman, also an httpd PMC member, stepped up to co-shepherd the incubation.
-
-
-Invites to the interested parties were sent last week to join the mailing list cli-dev@httpd.apache.org, followed by an invitation to the dev@httpd community. The status page/ip incubation template was created, with Ian managing the site. Will has imported the initial contribution into SVN (under asf/incubator/httpd/cli/).
-
-
-Next steps are documented in status, first posts will be sent to this list this week. mod_aspdotnet should have an initial release soon, followed by the refactoring of code to support an Apache.Web model that is entirely independent of the Microsoft ASP.NET technology, usable in C# with one of several CLI environments, including mono.
-
-
-The cli-dev team would like to thank Noel and Sander for their advise and handholding through initial mailing list creation, SVN setup, and general guidance on the incubation process.
-
-
-Will Rowe
-
-
-
-- 30 October 2004
-
-After soliciting a number of comments from cli-dev testers of the mod_aspdotnet, and committing their patches to solve various bugs, the subproject has extracted v2.0.0 release candidate 1 today.
-
-
-The installer was migrated to InstallShield X, the only and current product for authoring .msi files from InstallShield. This, after experience with converting the Apache 1.3.33 installer, turned out to be fairly trivial, and the .ism project file did have an xml flavor that can be tracked in svn.
-
-
-Next actions are creating a cli-users@httpd end-user list, declaring v2.0.0 released, adding the tracking category in bugzilla, and moving from incubator/httpd/cli to httpd/cli in svn, once graduated.
-
-
-Will Rowe
-
-
-
-- 4 February 2005
-
-Graduation Report
-
-
-December 16th is the date that the httpd-pmc vote was closed, this sub-project adopted, the repositories and first release moved into the httpd.apache.org domain, and officially kicked off. This had included the cli-users@httpd list, cli-dev@httpd list, bugzilla recordkeeping at issues.apache.org, and http://httpd.apache.org/cli/ home page.
-
-
-I would like to especially thank Ian for his extraordinary help, simply navigating the particularities with the incubator's infrastructure, and all of the interested users and developers who have stepped up to this effort. A number of individuals are using this in production, for their own development, and are coming up with exciting challenges to overcome in the future.
-
-
-My appologies for taking so long to close the incubator pages, and thank you to the incubation committee for helping promote this work.
-
-
-Will Rowe
-
-
-# Project Setup {#Project+Setup}
-
-## Identify the codebase {#Identify+the+codebase}
-
-| date | item |
-|-------|-------|
-| 2004-07-19 | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-02-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-02-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2004-07-19 | Check that all active committers have a signed CLA on record. |
-| 2004-07-19 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
-| 2004-07-19 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2004-07-19 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Has the receiving PMC voted to accept it?
-
-The Apache httpd project voted and it was adopted on 16 December, 2004.
-
diff --git a/content/httpd-mod_domain-clearance.md b/content/httpd-mod_domain-clearance.md
new file mode 100644
index 0000000..3371144
--- /dev/null
+++ b/content/httpd-mod_domain-clearance.md
@@ -0,0 +1,16 @@
+Title: httpd mod_domain (nee mod_dns) IP clearance
+
+
+Apache HTTP Server's mod_domain is a module for httpd that enables the server framework to provide Domain Name Services (DNS). It was originally called mod_dns, but the name has been changed to avoid confusion with a different third-party module called mod_dns.
+
+
+| item | record |
+|------|--------|
+| Date | 2008-04-18 |
+| Contribution | mod_dns |
+| Contributor(s) | Netmask (El-Mar) Internet Technologies Ltd.,<br></br>Issac Goldstand |
+| Software Grant(s) | grants/netmask.tif |
+| Corporate CLA(s) | cclas/netmask-el-mar.pdf |
+| Individual CLA(s) | Issac Goldstand (issac) |
+| Location of import |  [httpd/sandbox/mod_domain/](http://svn.apache.org/repos/asf/httpd/sandbox/mod_domain/)  |
+| Destination PMC | Apache HTTP Server (httpd) |
diff --git a/content/httpd-mod_fcgid.md b/content/httpd-mod_fcgid.md
new file mode 100644
index 0000000..06c01af
--- /dev/null
+++ b/content/httpd-mod_fcgid.md
@@ -0,0 +1,85 @@
+Title: Apache HTTP Server mod_fcgid Intellectual Property (IP) Clearance Status
+
+
+Apache HTTP Server's mod_fcgid is a module for httpd that enables the server framework to provide FastCGI services using a clean-room implementation of the FastCGI 1.0 specification ( [http://www.fastcgi.com/devkit/doc/fcgi-spec.html](http://www.fastcgi.com/devkit/doc/fcgi-spec.html) ).
+
+
+
+- Which PMC will be responsible for the code: Apache HTTP Server
+
+
+- Into which existing project/module: Apache HTTP Server
+
+
+- Officer or member managing donation: Roy T. Fielding
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-01-26 | SourceForge CVS Repository mod-fcgid.cvs.sourceforge.net:/cvsroot/mod-fcgid checked out, relicensed, and packaged as mod_fcgid-asf-20090126.tar.gz, available at [http://people.apache.org/~chrisd/donations/mod_fcgid/](http://people.apache.org/~chrisd/donations/mod_fcgid/)  |
+
+MD5 sum for donated software: 398260d989e2aad1df80c404d9fbaf4d (OpenSSL 0.9.8h 28 May 2008).
+
+
+SHA1 sum for donated software: 7bd43bf09d441da095af28459ad51aae680c8c6f (OpenSSL 0.9.8h 28 May 2008).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-01-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-01-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: mod_fcgid
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Ryan Pan (Pan Qingfeng, 潘庆峰) (sole original developer)
+
+- Paul Querna (patch contributions)
+
+- Nick Kew (patch contributions)
+
+- Chris Darroch (patch contributions)
+
+| date | item |
+|------|------|
+| 2009-01-26 | Check that all active committers have a signed CLA on record. |
+| 2009-01-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-12-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-12-12 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+On 2008-12-12 on the dev@httpd.apache.org mailing list Ryan Pan [confirmed that mod_fcgid was an original project](http://mail-archives.apache.org/mod_mbox/httpd-dev/200812.mbox/%3c02c801c95bfd$5d08a170$9caba8c0@mailtech.cn%3e) developed solely by himself.
+
+
+On 2008-12-19 on the dev@httpd.apache.org mailing list Ryan Pan also [provided a list of contributors](http://mail-archives.apache.org/mod_mbox/httpd-dev/200812.mbox/%3c067f01c96185$65f8f950$9caba8c0@mailtech.cn%3e) of minor and major patches to the project.
+
+
+The two of these contributors who are not ASF members were contacted to ensure that they considered their contributions to be minor repairs which did not require a signed CLA or Software Grant in order to be transferred to the ASF as part of mod_fcgid.
+
+
+| date | item |
+|------|------|
+| 2009-01-02 | Piotr Gackiewicz [confirmed agreement](http://mail-archives.apache.org/mod_mbox/httpd-dev/200901.mbox/%3cPine.LNX.4.64.0901020811550.21770@gacek.intertele.pl%3e) on the dev@httpd.apache.org mailing list. |
+| 2009-01-08 | Tim Jensen [confirmed agreement](http://mail-archives.apache.org/mod_mbox/httpd-dev/200901.mbox/%3c4966404C.2040000@rtsports.com%3e) on the dev@httpd.apache.org mailing list. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The vote on the dev@httpd.apache.org mailing list to accept mod_fcgid into the Apache HTTP Server project [passed](http://mail-archives.apache.org/mod_mbox/httpd-dev/200901.mbox/%3c4976322A.8030505@rowe-clan.net%3e) on 2009-01-20.
diff --git a/content/httpd-mod_h2-clearance.md b/content/httpd-mod_h2-clearance.md
new file mode 100644
index 0000000..56c9e66
--- /dev/null
+++ b/content/httpd-mod_h2-clearance.md
@@ -0,0 +1,62 @@
+Title: mod_h2 HTTP/2 module Intellectual Property (IP) Clearance Status
+
+
+mod_h2 is a module designed for Apache httpd 2.4+ to implement HTTP/2
+
+
+
+- Apache HTTP Server PMC will be responsible for the code
+
+
+- Apache HTTP Server trunk and 2.4 branch
+
+
+- Jim Jagielski managing donation
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-06-30 | https://github.com/icing/mod_h2/commit/11905f474e82122dc224b0226c9148c6e62adf29 |
+
+MD5 or SHA1 sum for donated software: ( _11905f474e82122dc224b0226c9148c6e62adf29_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-06-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Copyright (C) 2015 greenbytes GmbH_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Copyright (C) 2015 greenbytes GmbH_ 
+
+| date | item |
+|------|------|
+| 2015-06-30 | Check that all active committers have a signed CLA on record. |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. _TODO_  |
+| 2015-06-30 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. _TODO_  |
+| 2015-06-30 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _https://mail-search.apache.org/members/private-arch/httpd-private/201506.mbox/%3c0576AD11-5F92-4E64-8712-473DA3FC423A@jaguNET.com%3e_ 
diff --git a/content/httpd-mod_macro.md b/content/httpd-mod_macro.md
new file mode 100644
index 0000000..e0d11e9
--- /dev/null
+++ b/content/httpd-mod_macro.md
@@ -0,0 +1,71 @@
+Title: Apache HTTP Server mod_macro Intellectual Property (IP) Clearance Status
+
+
+Apache HTTP Server's mod_macro allows the definition and use of macros (configuration templates) within apache runtime configuration files.
+
+
+
+- Which PMC will be responsible for the code: Apache HTTP Server
+
+
+- Into which existing project/module: Apache HTTP Server
+
+
+- Officer or member managing donation: Eric Covener
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-01-13 | Release 1.3.0 of mod_macro: [http://people.apache.org/~fabien/mod_macro/mod_macro-1.3.0.tar.gz](http://people.apache.org/~fabien/mod_macro/mod_macro-1.3.0.tar.gz)  |
+
+MD5 sum for donated software: ef2d521b2ff9375d764fcca0f86e7145 (OpenSSL 1.0.1c 10 May 2012).
+
+
+SHA1 sum for donated software: a0678e9504b3b681f52bbf2ac93092da401d724c (OpenSSL 1.0.1c 10 May 2012).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| TBD | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: "Macro module for Apache HTTP server" (r39324 grants.txt)
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Fabien COELHO
+
+| date | item |
+|------|------|
+| 2013-01-02 | Check that all active committers have a signed CLA on record. |
+| 2012-12-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2012-12-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2012-12-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+On 2012-12-23 on the dev@httpd.apache.org mailing list Fabien COELHO [confirmed that the only contributions beyond his own are minor repairs and bug reports from a handful of contributors.](http://mail-archives.apache.org/mod_mbox/httpd-dev/201212.mbox/%3Calpine.DEB.2.02.1212231724430.2496@andorre%3E) 
+
+
+* 6 of 9 "minor repair" contributors acknowledged their contributions as such (including two HTTP committers). * The others were not reachable but were re-confirmed by Fabien as a bug report and a compiler fix (two users)
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The vote on the dev@httpd.apache.org mailing list to accept mod_fcgid into the Apache HTTP Server project [passed](http://mail-archives.apache.org/mod_mbox/httpd-dev/201301.mbox/%3CCALK=YjPB=ti0gaJP_4Pg2JgM908NvZWD6ZpGKFCkTHx-pK0F1w@mail.gmail.com%3E) on 2013-01-14.
diff --git a/content/httpd-wombat.md b/content/httpd-wombat.md
new file mode 100644
index 0000000..acd1596
--- /dev/null
+++ b/content/httpd-wombat.md
@@ -0,0 +1,66 @@
+Title: Wombat Codebase Intellectual Property (IP) Clearance Status
+
+
+Wombat is a module for the HTTPD Project which allows for Lua based modules and configuration of the server,
+
+
+
+- The HTTPD PMC will be responsible for this code.
+
+
+- The code will be imported into HTTPD
+
+
+- Brian McCallister is managing the donation.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2006-12-08 | http://svn.i-want-a-pony.com/repos/wombat/trunk/ |
+| 2006-12-19 | http://people.apache.org/~brianm/wombat |
+| Apache Wombat | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+| SHA1 sum of http://people.apache.org/~brianm/wombat/wombat.tar.gz | SHA1 (wombat.tar.gz) = c1c2cb43c62d855e9d546471e7e788a79a820ba3 |
+| MD5 sum of http://people.apache.org/~brianm/wombat/wombat.tar.gz | MD5 (wombat.tar.gz) = 6733f0e674d19dd0fa4a259da5a8b781 |
+
+We will be importing the subversion repository.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-02-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-12-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _mod_wombat_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- It is presently distributed under the Apache License, Version 2.0. _Everyone_ not in violation of that license has distribution rights.
+
+- Contributions have been made by brianm, pquerna, rooneg, and Martin Traverso
+
+| date | item |
+|------|------|
+| 2006-12-19 | Check that all active committers have a signed CLA on record. |
+| 2006-12-19 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-12-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-12-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _ [vote on httpd-dev](http://marc.theaimsgroup.com/?l=apache-httpd-dev&amp;m=116525513728295&amp;w=2) _ 
diff --git a/content/hudi.md b/content/hudi.md
deleted file mode 100644
index e9ef9ac..0000000
--- a/content/hudi.md
+++ /dev/null
@@ -1,181 +0,0 @@
-:Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Hudi project graduated on 2020-05-20</span>
-
-
-Hudi provides atomic upserts and incremental data streams on big data.
-
-
-
-- 2019-01-17 Project enters incubation.
-
-- 2019-10-24 0.5.0 Release
-
-- 2020-01-31 0.5.1 Release
-
-- 2020-03-26 0.5.2 Release
-
-- 2020-05-20 Project Graduated to TLP
-
-
-- Project Website: https://hudi.incubator.apache.org/
-
-
-- Resources: https://hudi.incubator.apache.org/community.html
-
-
-- Contributing: https://hudi.incubator.apache.org/contributing.html
-
-
-- Committers: https://projects.apache.org/project.html?incubator-hudi
-
-the project website and code repository are setup
-
-
-The PPMC consists of all the committers and mentors listed here.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://hudi.incubator.apache.org/](https://hudi.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/HUDI](https://cwiki.apache.org/confluence/display/HUDI)  |
-| Mailing list | dev |  `dev`  `@`  `hudi.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `hudi.incubator.apache.org`  |
-| Bug tracking | . |  [Hudi JIRA](https://issues.apache.org/jira/browse/Hudi/)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-hudi.git](https://gitbox.apache.org/repos/asf/incubator-hudi.git)  |
-| Mentors | thw | Thomas Weise |
-| . | kishoreg | Kishore Gopalakrishnan |
-| . | lresende | Luciano Resende |
-| . | smarthi | Suneel Marthi |
-| Committers | vinoth | Vinoth Chandar |
-| . | nagarwal | Nishith Agarwal |
-| . | vbalaji | Balaji Varadarajan |
-| . | prasanna | Prasanna Rajaperumal |
-| . | anchee | Anbu Cheeralan |
-| . | zqureshi | Zeeshan Qureshi |
-| . | bhavanisudha | Bhavani Sudha Saktheeswaran |
-| . | leesf | Shaofeng Li |
-| . | vinoyang | Vino Yang |
-| . | sivabalan | Sivabalan Narayanan |
-| . | lamberken | Xie Lei |
-
-
-- Jan 2019: https://cwiki.apache.org/confluence/display/INCUBATOR/January2019
-
-- Feb 2019: https://cwiki.apache.org/confluence/display/INCUBATOR/February2019
-
-- Mar 2019: https://cwiki.apache.org/confluence/display/INCUBATOR/March2019
-
-- Apr 2019: https://cwiki.apache.org/confluence/display/INCUBATOR/April2019
-
-- Jul 2019: https://cwiki.apache.org/confluence/display/INCUBATOR/July2019
-
-- Oct 2019: https://cwiki.apache.org/confluence/display/INCUBATOR/October2019
-
-- Jan 2020: https://cwiki.apache.org/confluence/display/INCUBATOR/January2020
-
-- Apr 2020: https://cwiki.apache.org/confluence/display/INCUBATOR/April2020
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-01-17 | Ask infrastructure to set up DNS and archive mailing lists. |
-| 2019-01-19 | Mailing lists have been setup |
-| 2019-01-20 | JIRA has been setup for the project |
-| 2019-03-04 | All Github issues migrated over to Apache Jira |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2019-01-19 | Subscribe all Mentors on the pmc and general lists. |
-| 2019-01-22 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2019-01-18 | Tell Mentors to track progress in the file 'incubator/projects/hudi.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2019-03-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2019-08-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2019-08-08 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2019-08-08 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-01-19 | Check that all active committers have submitted a contributors agreement. |
-| 2019-01-21 | Add all active committers in the relevant section above. |
-| 2019-01-20 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **DONE** . Committers list maintained here https://hudi.apache.org/community.html#the-committers
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **DONE** . Committers are spread across 5+ organizations.
-
-- Are project decisions being made in public by the committers? **DONE.** See project maturity matrix https://cwiki.apache.org/confluence/display/HUDI/Apache+Hudi+Maturity+Matrix
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **DONE** . See https://cwiki.apache.org/confluence/display/HUDI/Apache+Hudi+Maturity+Matrix
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **DONE.** 0.5.2 release removed WIP disclaimer and passed IPMC vote.
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? N/A
-
-- If graduating to a new PMC, has the board voted to accept it? YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-- Yes
diff --git a/content/ibatis.md b/content/ibatis.md
deleted file mode 100644
index 5d11025..0000000
--- a/content/ibatis.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: ibatis
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The iBATIS project graduated on 2005-04-27</span>
-
-
-The iBATIS Data Mapper framework makes it easier to use a database with Java and .NET applications. iBATIS couples objects with stored procedures or SQL statements using a XML descriptor.
-
-
-Simplicity is the biggest advantage of the iBATIS Data Mapper over object relational mapping tools. To use iBATIS Data Mapper you rely on your own objects, XML, and SQL. There is little to learn that you don't already know.
-
-
-With iBATIS Data Mapper you have the full power of both SQL and stored procedures at your fingertips
-
-
-
-- Proposal accepted by Incubator PMC on 16 August 2004
-
-
-- (2004-10-17) All needed CLAs are on file. Code grants are in transit. Accounts for the committers are created. Mailing lists are created. Committers are subscribing. The Jira setup for the project is being finalized. The project incubator page is created. Committers are preparing the SourceForge CVS and third-party SVN for import to Apache.
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www | . |
-| . | wiki | . |
-| Mailing list | dev | ibatis-dev incubator.apache.org |
-| . | user | ibatis-user-java incubator.apache.org |
-| . | user | ibatis-user-cs incubator.apache.org |
-| Issue tracking | Jira | . |
-| Source code | Subversion | incubator/ibatis |
-| Mentors | husted | Ted Husted |
-| Committers | cbegin | Clinton Begin |
-| . | gbayon | Gilles Bayon |
-| . | bgoodin | Brandon Goodin |
-| . | lmeadors | Larry Meadors |
-| . | roberto | Roberto Rabe |
-
-
-- Websites for prior SourceForge projects: [(Java)](http://ibatis.com/)  [(.NET)](http://ibatisnet.sf.net/) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| status | item |
-|---------|-------|
-| DONE | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| DONE | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| status | item |
-|---------|-------|
-| DONE | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc and general lists. |
-| DONE | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| DONE | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| status | item |
-|---------|-------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| status | item |
-|---------|-------|
-| DONE | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- DONE - Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- DONE - Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- DONE - Are project decisions being made in public by the committers?
-
-- DONE - Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- DONE - Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/iceberg.md b/content/iceberg.md
deleted file mode 100644
index 7e148fd..0000000
--- a/content/iceberg.md
+++ /dev/null
@@ -1,191 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Iceberg project graduated on 2020-05-20</span>
-
-
-Iceberg is a table format for large, slow-moving tabular data.
-
-
-
-- 2018-11-16 Project enters incubation.
-
-- 2018-12-10 Software grant agreement filed by secretary.
-
-- 2019-03-21 New PPMC member: Dan Weeks added to the PPMC.
-
-- 2019-03-21 New PPMC member: Parth Brahmbhatt added to the PPMC.
-
-- 2019-06-23 Migrated Iceberg specification to git and ASF site.
-
-- 2019-06-26 Major update to Apache site with user documentation.
-
-- 2019-07-19 New Committer: Anton Okolnychyi added the PPMC.
-
-- 2019-08-12 Completed licensing review and LICENSE and NOTICE for a release.
-
-- 2019-09-28 Trademark grant agreement signed by VP brand.
-
-- 2019-10-08 Started monthly community sync discussions, attended by people from 8 organizations.
-
-- 2019-10-25 Released 0.7.0-incubating, with source and convenience binaries.
-
-- 2020-02-07 New Committer: Ratandeep Ratti added the PPMC.
-
-- 2020-05-07 Released 0.8.0-incubating, with source and convenience binaries.
-
-- 2020-05-20 Graduated from the incubator.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-The PPMC consists of all the committers and mentors listed here.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://iceberg.incubator.apache.org/](http://iceberg.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `iceberg.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `iceberg.incubator.apache.org`  |
-| Bug tracking | . |  [Iceberg Issues](https://github.com/apache/incubator-iceberg/issues)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-iceberg.git](https://gitbox.apache.org/repos/asf/incubator-iceberg.git)  |
-| Mentors | blue | Ryan Blue |
-| . | julien | Julien Le Dem |
-| . | omalley | Owen O'Malley |
-| . | jamestaylor | James Taylor |
-| . | cws | Carl Steinbach |
-| Committers | parth | Parth Brahmbhatt |
-| . | dweeks | Daniel Weeks |
-| . | aokolnychyi | Anton Okolnychyi |
-| . | rdsr | Ratandeep Ratti |
-
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/December2018
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/January2019
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/February2019
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/March2019
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/July2019#iceberg
-
-- https://cwiki.apache.org/confluence/display/INCUBATOR/September2019#iceberg
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-11-16 | Make sure that the requested project name does not already exist. |
-| 2018-11-16 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2018-11-16 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-11-19 | Ask infrastructure to set up and archive mailing lists. |
-| 2018-11-19 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2018-11-19 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2019-01-31 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| 2018-11-19 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2019-10-28 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-12-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2018-11-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-11-19 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-11-19 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2018-11-16 | Check that all active committers have submitted a contributors agreement. |
-| 2018-11-16 | Add all active committers in the relevant section above. |
-| 2018-11-16 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ignite.md b/content/ignite.md
deleted file mode 100644
index 6e56d10..0000000
--- a/content/ignite.md
+++ /dev/null
@@ -1,204 +0,0 @@
-Title: Ignite Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Ignite project graduated on 2015-09-18</span>
-
-
-The IGNITE project provides a unified In-Memory Data Fabric providing high-performance, distributed in-memory data management software layer between various data sources and user applications.
-
-
-
-- 2014-10-01 Project enters incubation.
-
-- 2015-01-22 New committer: Alexey Kuznetsov.
-
-- 2015-01-22 New committer: Andrey Novikov.
-
-- 2015-01-22 New committer: Sergey Evdokimov.
-
-- 2015-03-24 First incubating release, 1.0.0-rc3.
-
-- 2015-04-04 Released 1.0.0 (incubating).
-
-- 2015-05-29 Released 1.1.0 (incubating).
-
-- 2015-06-05 New committer: Irina Vasilinets.
-
-- 2015-06-05 New committer: Evans Ye.
-
-- 2015-06-05 New committer: Ognen Duzlevski.
-
-- 2015-06-05 New committer: Gianfranco Murador.
-
-- 2015-06-05 New committer: Nikolay Tikhonov.
-
-- 2015-06-05 New committer: Anton Vinogradov.
-
-- 2015-09-18 Project graduated from incubation.
-
-
--  [ignite.apache.org](http://ignite.apache.org) 
-
-
--  [How to Contribute](https://ignite.apache.org/community/contribute.html#contribute) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://ignite.incubator.apache.org/](http://ignite.incubator.apache.org/)  |
-| . | wiki | none yet |
-| Mailing list | dev |  `dev`  `@`  `ignite.incubator.apache.org`  |
-| . | users |  `users`  `@`  `ignite.incubator.apache.org`  |
-| . | issues (Jira) |  `issues`  `@`  `ignite.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `ignite.incubator.apache.org`  |
-| . | private |  `private`  `@`  `ignite.incubator.apache.org`  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/ignite](http://issues.apache.org/jira/browse/ignite)  |
-| Repository | git |  [http://gitbox.apache.org/repos/asf/incubator-ignite.git](http://gitbox.apache.org/repos/asf/incubator-ignite.git)  |
-| Mentors | . | . |
-| . | brane | Branko Čibej |
-| . | cos | Konstantin Boudnik |
-| . | rvs | Roman Shaposhnik |
-| . | stack | Michael Stack |
-| Committers | . | . |
-| . | dsetrakyan | Dmitriy Setrakyan |
-| . | yzhdanov | Yakov Zhdanov |
-| . | agoncharuk | Alexey Goncharuk |
-| . | svladykin | Sergey Vladykin |
-| . | vkulichenko | Valentin Kulichenko |
-| . | sboikov | Semyon Boikov |
-| . | vozerov | Vladimir Ozerov |
-| . | nivanov30 | Nikita Ivanov |
-| . | skh | Sergey Khisamov |
-| . | isterin | Ilya Sterin |
-| . | rawson | Ryan Rawson |
-| . | cos | Konstantin Boudnik |
-| . | rvs | Roman Shaposhnik |
-| . | brane | Branko Čibej |
-| . | akuznetsov | Alexey Kuznetsov |
-| . | anovikov | Andrey Novikov |
-| . | sevdokimov | Sergey Evdokimov |
-| . | ivasilinets | Irina Vasilinets |
-| . | evansye | Evans Ye |
-| . | maketo | Ognen Duzlevski |
-| . | murador | Gianfranco Murador |
-| . | ntikhonov | Nikolay Tikhonov |
-| . | av | Anton Vinogradov |
-
-
--  [November 2014](https://wiki.apache.org/incubator/November2014) 
-
--  [December 2014](https://wiki.apache.org/incubator/December2014) 
-
--  [January 2015](https://wiki.apache.org/incubator/January2015) 
-
--  [March 2015](https://wiki.apache.org/incubator/March2015) 
-
--  [June 2015](https://wiki.apache.org/incubator/June2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-10-11 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-10-11 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-10-11 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-10-11 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2014-12-04 | Migrate the project to our infrastructure. |
-| 2015-03-16 | Ask infrastructure to set up wiki (Confluence). |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-10-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-10-11 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-10-19 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-01-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-03-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-04-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-04-04 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-10-18 | Check that all active committers have submitted a contributors agreement. |
-| 2014-10-18 | Add all active committers in the STATUS file. |
-| 2014-10-22 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- All of the active long-term volunteers been identified and acknowledged as committers on the project
-
-- There are three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Project decisions being made in public by the committers
-
-- The decision-making guidelines published and agreed to by all of the committers
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- All licensing, trademark, credit issues being taken care of and acknowledged by all committers
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Board has voted to accept graduation resolution on 18 Sep 2015
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- IPMC has voted to graduate Apache Ignite as a new TLP
diff --git a/content/impala.md b/content/impala.md
deleted file mode 100644
index a7743fc..0000000
--- a/content/impala.md
+++ /dev/null
@@ -1,217 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Impala project graduated on 2017-11-15</span>
-
-
-Impala is a high-performance C++ and Java SQL query engine for data stored in Apache Hadoop-based clusters.
-
-
-
-- 2017-09-29 Added two new committers.
-
-- 2017-09-26 Added new PPMC member.
-
-- 2017-09-20 Added another committer elected by the PPMC.
-
-- 2017-07-17 Added new PPMC member.
-
-- 2017-07-03 Added new PPMC member.
-
-- 2017-04-29 Added another committer elected by the PPMC.
-
-- 2017-03-24 Added another committer elected by the PPMC.
-
-- 2017-03-13 Completed infrastructure transfer to ASF resources.
-
-- 2017-03-06 Added another committer elected by the PPMC.
-
-- 2017-02-23 Added another committer elected by the PPMC.
-
-- 2017-02-16 Added another committer elected by the PPMC.
-
-- 2017-01-18 Added first PPMC member elected by the PPMC.
-
-- 2016-10-05 First Apache Impala (incubating) release, 2.7.0.
-
-- 2016-09-11 Changed code review emails to go to reviews@.
-
-- 2016-08-18 Added first committer elected by the PPMC.
-
-- 2016-08-15 Added final initial committer accounts.
-
-- 2016-07-01 Added another initial committer account.
-
-- 2016-02-11 Added more initial committer accounts.
-
-- 2015-12-17 Added some initial committer accounts.
-
-- 2015-12-04 Mailing lists and git repo created.
-
-- 2015-12-01 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://impala.incubator.apache.org/](http://impala.incubator.apache.org/)  |
-| . | wiki |  [cwiki.apache.org](https://cwiki.apache.org/confluence/display/IMPALA/Impala+Home)  |
-| Mailing list | dev |  `dev`  `@`  `impala.incubator.apache.org`  |
-| . | user |  `user`  `@`  `impala.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `impala.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `impala.incubator.apache.org`  |
-| . | code reviews |  `reviews`  `@`  `impala.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/IMPALA](https://issues.apache.org/jira/browse/IMPALA)  |
-| Source code | git |  [incubator-impala.git](https://gitbox.apache.org/repos/asf?p=incubator-impala.git;a=summary)  |
-| Mentors | tomwhite | Tom White |
-| . | todd | Todd Lipcon |
-| . | cws | Carl Steinbach |
-| . | brock | Brock Noland |
-| PPMC Members | jbapple | Jim Apple |
-| . | tarmstrong | Tim Armstrong |
-| . | abehm | Alex Behm |
-| . | tarasbob | Taras Bobrovytsky |
-| . | mikeb | Michael Brown |
-| . | casey | Casey Ching |
-| . | mgrund | Martin Grund |
-| . | dhecht | Daniel Hecht |
-| . | kwho | Michael Ho |
-| . | mjacobs | Matthew Jacobs |
-| . | ishaan | Ishaan Joshi |
-| . | lskuff | Lenni Kuff |
-| . | marcel | Marcel Kornacker |
-| . | sailesh | Sailesh Mukil |
-| . | henry | Henry Robinson |
-| . | jrussell | John Russell |
-| . | dtsirogiannis | Dimitris Tsirogiannis |
-| . | bharathv | Bharath Vissapragada |
-| . | lv | Lars Volker |
-| . | skye | Skye Wanderman-Milne |
-| . | jyu | Juan Yu |
-| Committers | tmarshall | Thomas Tauber-Marshall |
-| . | dknupp | David Knupp |
-| . | mmokhtar | Mostafa Mokhtar |
-| . | joemcdonnell | Joe McDonnell |
-| . | zamsden | Zach Amsden |
-| . | bikram | Bikramjeet Vig |
-| Extra | . | . |
-
-
--  [February 2017](http://wiki.apache.org/incubator/February2017) 
-
--  [November 2016](http://wiki.apache.org/incubator/November2016) 
-
--  [August 2016](http://wiki.apache.org/incubator/August2016) 
-
--  [April 2016](http://wiki.apache.org/incubator/April2016) 
-
--  [March 2016](http://wiki.apache.org/incubator/March2016) 
-
--  [January 2016](http://wiki.apache.org/incubator/January2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-06-09 ( [PODLINGNAMESEARCH-96](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-96) ) | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2015-12-04 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-12-04 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-12-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-12-04 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-12-04 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2017-03-13 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-07-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-07-13 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-12-04 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-06-23 (private e-mail from Cloudera legal) | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-08-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. ( [in this commit](https://git1-us-west.apache.org/repos/asf/incubator-impala/repo?p=incubator-impala.git;a=commit;h=ffa7829b70933932d1ba5dfad9b6dc18d04e10e0) ) |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-09-14 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-09-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-08-18 | Check that all active committers have submitted a contributors agreement. |
-| 2016-08-18 | Add all active committers in the STATUS file. |
-| 2016-08-18 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/imperius.md b/content/imperius.md
deleted file mode 100644
index 8669268..0000000
--- a/content/imperius.md
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Apache Imperius Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Imperius project retired on 2011-05-14</span>
-
-
-Imperius (Simple Policy Language) or SPL - Is a simple standards based object-oriented policy language that allows expression of management policies using condition-action rules. Imperius provides an extensible set of over 100 operations for expressing conditions and actions. Imperius is a generalization of the CIM-SPL language. Conversely, CIM-SPL can be thought of as Imperius with CIM binding. Imperius can be extended to create similar bindings for other environments. JavaSPL (Imperius with Java binding) is another such example.
-
-
-
-- 2011-05-14 Retired
-
-- 2008-01-18 New committer: Erik Bengtson
-
-- 2007-12-22 First code drop
-
-
--  [link to the main website](http://incubator.apache.org/imperius) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/imperius/](http://incubator.apache.org/imperius/)  |
-| . | wiki | . |
-| Mailing list | dev |  `imperius-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `imperius-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/browse/imperius](http://issues.apache.org/jira/browse/imperius)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/imperius](http://svn.apache.org/repos/asf/incubator/imperius)  |
-| Mentors | stoddard | Bill Stoddard |
-| . | clr | Craig Russell |
-| . | fhanik | Filip Hanik |
-| . | kevan | Kevan Miller |
-| Committers | . | . |
-|  | jneeraj | Neeraj Joshi |
-|  |  | Prashant Baliga |
-|  | macsun | Mark Carlson |
-|  | michaelknunez | Mike Nunez |
-|  | ebengston | Erik Bengston |
-| Extra | . | . |
-
-
--  [December 2007](http://svn.apache.org/viewvc/incubator/imperius/board/2007-12.txt?view=markup) 
-
--  [January 2008](http://svn.apache.org/viewvc/incubator/imperius/board/2008-01.txt?view=markup) 
-
--  [April 2008](http://svn.apache.org/viewvc/incubator/imperius/board/2008-04.txt?view=markup) 
-
--  [July 2008](http://svn.apache.org/viewvc/incubator/imperius/board/2008-07.txt?view=markup) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date(YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007-11-10 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2007-11-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2007-11-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2007-11-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2007-11-10 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2007-11-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2007-10-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2007-12-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2007-12-08 | Check and make sure that for all code included with the distribution that is not under the Apache license have the right to combine with Apache-licensed code and redistribute. |
-| 2007-12-08 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-12-08 | Check that all active committers have submitted a contributors agreement. |
-| 2007-12-08 | Add all active committers in the STATUS file. |
-| 2007-11-08 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-12-08 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-12-08 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-12-08 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| N/A | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/incubation-status-template.md b/content/incubation-status-template.md
deleted file mode 100644
index 90b0452..0000000
--- a/content/incubation-status-template.md
+++ /dev/null
@@ -1,178 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
- `-----8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;----` 
-This document is the template for project incubation status.
-
-
-What to do to set it up:
-
-
-
-- copy this file and name it &lt;projectname&gt;.xml
-
-- add a section in incubator/content/podlings.xml
-
-For this file:
-
-
-
-- substitute the XYZ project name with the real one
-
-- fill in the "Description". See [Project Naming And Descriptions](http://www.apache.org/foundation/marks/pmcs.html#markdesc) 
-
-- edit "Project info" to contain only effective resources
-
-- start doing "Incubation work items"
-
-When an "Incubation work item" is done, place the date in the supplied space, and if necessary update "Project info" to reflect changes in resources.
-
-
-There are also sections where to place project news and incubation status reports.
-
-
- _On the first edit of this file, please delete this entire section._ 
-
- `-----8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;----` 
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The XYZ Project is a wonderful project that does things and goes places.
-
-
-
-- YYYY-MM-DD Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://XYZ.incubator.apache.org/](http://XYZ.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `PROJECT.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `PROJECT.incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/XYZ/](https://svn.apache.org/repos/asf/incubator/XYZ/)  |
-| Roster | Whimsy |  [XYZ Roster](https://whimsy.apache.org/roster/ppmc/XYZ)  |
-
-
--  [XYZ Board Reports](https://whimsy.apache.org/board/minutes/XYZ.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/index.md b/content/index.md
new file mode 100644
index 0000000..85a3bbc
--- /dev/null
+++ b/content/index.md
@@ -0,0 +1,258 @@
+Title: Intellectual property clearance
+
+
+One of the Incubator's roles is to ensure that proper attention is paid to intellectual property. From time to time, an external codebase is brought into the ASF that is not a separate [incubating project](../projects/) but still represents a substantial contribution that was not developed within the ASF's source control system and on our public mailing lists. This is a short form of the Incubation checklist, designed to allow code to be imported with alacrity while still providing for oversight.
+
+
+>  **This form is not for new projects.** 
+This is for projects and PMCs that have already been created and are receiving a code donation into an existing codebase. Any code that was developed outside of the ASF SVN repository and our public mailing lists must be processed like this, even if the external developer is already an ASF committer.
+
+Incubating projects should follow the procedure described in [the incubator mentor guide](http://incubator.apache.org/guides/mentor.html) and report status via [STATUS tracking](http://incubator.apache.org/incubation/Incubation_Policy.html#Setting+Up+a+New+Podling) .
+
+The intent is to simply help to ensure, and record, that due diligence (Software Grant, CLA, Corp CLA, license and dependencies) has been paid to the incoming code, so that it can be merged into an existing project/module. These legal documents are available on the [ASF Licenses](http://www.apache.org/licenses/#clas) page.
+
+
+The receiving PMC is responsible for doing the work. The Incubator is simply the repository of the needed information. Once a PMC directly checks-in a filled-out short form, the Incubator PMC will need to approve the paper work after which point the receiving PMC is free to import the code. **Note** that only lazy consensus is required. The [IP clearance template](ip-clearance-template.html) contains more details of this process.
+
+
+For new IP clearance forms, start with our XML [IP clearance template](http://svn.apache.org/repos/asf/incubator/public/trunk/content/ip-clearance/ip-clearance-template.xml) and follow its instructions. Here is the more readable [HTML version](ip-clearance-template.html) .
+
+
+| Clearance document | Receiving PMC | Date recorded |
+|--------------------|---------------|---------------|
+|  [AsterixDB JDBC Driver](asterixdb-jdbc-driver)  | Apache AsterixDB | 2021-07-27 |
+|  [CloudStack Terraform Provider](cloudstack-terraform.html)  | Apache CloudStack | 2021-07-20 |
+|  [CloudStack Go SDK](cloudstack-go-sdk.html)  | Apache CloudStack | 2021-07-20 |
+|  [Apache Avro Rust Library](avro-rust-library.html)  | Apache Avro | 2021-05-24 |
+|  [Apache Tika tika-helm](tika-tika-helm.html)  | Apache Tika | 2021-04-13 |
+|  [Apache Arrow Rust Ballista](arrow-rust-ballista.html)  | Apache Arrow | 2021-04-02 |
+|  [Apache Dubbo-go pixiu](dubbo-go-pixiu.html)  | Apache Dubbo | 2021-03-19 |
+|  [OpenWhisk VSCode Extension](openwhisk-vscode-extension.html)  | Apache OpenWhisk | 2020-12-28 |
+|  [OpenWhisk Intellij Plugin](openwhisk-intellij-plugin.html)  | Apache OpenWhisk | 2020-12-28 |
+|  [Apache APISIX ingress controller](apisix-ingress-controller.html)  | Apache APISIX | 2020-11-22 |
+|  [Apache Arrow Julia Library](arrow-julia-library.html)  | Apache Arrow | 2020-11-04 |
+|  [Apache TinkerPop - gremlint](tinkerpop-gremlint.html)  | Apache TinkerPop | 2020-09-15 |
+|  [Apache Casssandra - Harry](apache-cassandra-harry.html)  | Apache Cassandra - Harry | 2020-09-05 |
+|  [Apache MXNet MShadow](mxnet-mshadow.html)  | Apache MXNet | 2020-08-05 |
+|  [Apache Dubbo Getty](dubbo-getty.html)  | Apache Dubbo | 2020-07-24 |
+|  [ShardingSphere ElasticJob](shardingsphere-elasticjob.html)  | Apache ShardingSphere | 2020-05-30 |
+|  [OpenWhisk wskdebug](openwhisk-wskdebug.html)  | Apache OpenWhisk | 2020-02-20 |
+|  [Felix Atomos](felix-atomos.html)  | Apache Felix | 2020-02-07 |
+|  [Weex UI](weex_ui.html)  | Apache Weex (Incubating) | 2019-11-06 |
+|  [oas validator](servicecomb-oas-validator.html)  | Apache ServiceComb | 2019-10- |
+|  [DukeScript presenters](netbeans-dukescript-presenters.html)  | Apache NetBeans | 2019-10-01 |
+|  [Weex Loader](weex_loader.html)  | Apache Weex (Incubating) | 2019-09-30 |
+|  [Weex CLI (i.e. Weex Toolkit)](weex_cli.html)  | Apache Weex (Incubating) | 2019-09-27 |
+|  [Airflow on K8s Operator](airflow-on-k8s-operator.html)  | Apache Airflow | 2019-09-26 |
+|  [Pulsar Manager](pulsar-manager.html)  | Apache Pulsar | 2019-09-09 |
+|  [Milagro Decentralized Trust Authority](milagro-dta.html)  | Apache Milagro | 2019-08-27 |
+|  [Celix websocket pubsub admin](celix-pubsub-admin-websocket.html)  | Apache Celix | 2019-08-19 |
+|  [Beam ZetaSQL Translator](beam-zetasql-translator.html)  | Apache Beam | 2019-08-13 |
+|  [Celix TCP pubsub admin](celix-pubsub-admin-tcp.html)  | Apache Celix | 2019-07-24 |
+|  [Apache Dubbo go-hessian2](dubbo-go-hessian2.html)  | Apache Dubbo | 2019-07-18 |
+|  [Celix HTTP admin](celix-http-admin.html)  | Apache Celix | 2019-07-11 |
+|  [Apache ServiceComb Mesher](servicecomb-mesher.html)  | Apache ServiceComb | 2019-07-10 |
+|  [Apache ServiceComb Toolkit](servicecomb-toolkit.html)  | Apache ServiceComb | 2019-06-18 |
+|  [Apache SkyWalking RocketBot UI](skywalking-rocketbot-ui.html)  | Apache SkyWalking | 2019-04-25 |
+|  [Apache Sling Journal-based Content Distribution](sling-distribution-journal.html)  | Apache Sling | 2019-04-02 |
+|  [Apache Arrow Rust DataFusion](arrow-rust-datafusion.html)  | Apache Arrow | 2019-01-31 |
+|  [Apache Arrow Parquet Rust Library](arrow-parquet-rust.html)  | Apache Arrow | 2018-12-13 |
+|  [Apache OpenWhisk Composer Python](openwhisk-composer-python.html)  | Apache OpenWhisk (Incubator) | 2018-11-26 |
+|  [Apache Arrow Parquet Ruby Library](arrow-parquet-ruby.html)  | Apache Arrow | 2018-10-25 |
+|  [Apache Arrow C# Library](arrow-csharp-library.html)  | Apache Arrow | 2018-10-21 |
+|  [Apache Beam Euphoria API](beam-euphoria.html)  | Apache Beam | 2018-10-10 |
+|  [Apache OpenWhisk Composer](openwhisk-composer.html)  | Apache OpenWhisk (Incubator) | 2018-10-09 |
+|  [Apache Beam Dataflow Java Worker](beam-dataflow-java-worker.html)  | Apache Beam | 2018-10-03 |
+|  [Mojohaus Maven Utilities for Apache NetBeans](netbeans-mojohaus-utilities.html)  | Apache NetBeans | 2018-10-02 |
+|  [Arrow Parquet GLib Bindings](arrow-parquet-glib.html)  | Apache Arrow | 2018-09-28 |
+|  [Arrow Gandiva](arrow-gandiva.html)  | Apache Arrow | 2018-09-21 |
+|  [Brooklyn UI in Angular/JS](brooklyn-ui-angular.html)  | Apache Brooklyn | 2018-07-20 |
+|  [Apache Directory SCIMple](directory-scimple.html)  | Apache Directory | 2018-07-18 |
+|  [Apache Beam Go SDK](beam-go-sdk.html)  | Apache Beam | 2018-05-29 |
+|  [Apache Arrow Ruby Library](arrow-ruby-library.html)  | Apache Arrow | 2018-05-20 |
+|  [Dubbox documentation](dubbo-dubbox.html)  | Apache Dubbo (incubating) | 2018-05-15 |
+|  [Apache Felix System Readiness Framework](felix-system-readiness.html)  | Apache Felix | 2018-05-03 |
+|  [Apache Felix Logback integration with OSGi Log 1.4](felix-logback-integration.html)  | Apache Felix | 2018-05-03 |
+|  [Fluo contributions from Astralway](fluo-astralway-code-repos.html)  | Apache Fluo | 2018-04-23 |
+|  [Fineract CN](fineract-cn.html)  | Fineract CN | 2018-04-09 |
+|  [Python PhoenixDB](phoenix-phoenixdb.html)  | Apache Phoenix | 2018-03-19 |
+|  [Arrow Go Library](arrow-go-library.html)  | Apache Arrow | 2018-03-10 |
+|  [Genetic Algorithms Grid](ga-grid-ignite.html)  | Apache Ignite | 2018-02-22 |
+|  [DeltaSpike Interdyn](deltaspike-interdyn.html)  | Apache DeltaSpike | 2018-02-13 |
+|  [RocketMQ CPP SDK](rocketmq-cpp-sdk.html)  | Apache RocketMQ | 2018-01-12 |
+|  [Apache Felix Bundle Archive File Install Extension](felix-bar-file-install-extension.html)  | Apache Felix | 2017-12-12 |
+|  [Jackabit Filevault Package Maven Plugin](jackrabbit-filevault-package-plugin.html)  | Apache Jackrabbit | 2017-09-12 |
+|  [JBig2 ImageIO Plugin](pdfbox-jbig2.html)  | Apache PDFBox | 2017-08-28 |
+|  [Apache Arrow Plasma Object Store](arrow-plasma-object-store.html)  | Apache Arrow | 2017-07-27 |
+|  [Apache Calcite Avatica Go Client](calcite-avatica-go.html)  | Apache Calcite | 2017-07-27 |
+|  [Apache Brooklyn / Container Service](brooklyn-container-service.html)  | Apache Brooklyn | 2017-06-08 |
+|  [Apache Ignite / Persistent Store](persistent-distributed-store-ignite.html)  | Apache Ignite | 2017-05-12 |
+|  [Apache Ratis](ratis.html)  | Apache Ratis (Incubator) | 2017-01-31 |
+|  [Apache Celix / Publish Subscribe](celix-publish-subscribe.html)  | Apache Celix | 2017-01-27 |
+|  [Cassandra dtest / Distributed Testing Suite](cassandra-dtest.html)  | Apache Cassandra | 2017-01-04 |
+|  [Maven Aether / Artifact Resolver](maven-aether.html)  | Apache Maven | 2016-10-01 |
+|  [Storm JMS Integration](storm-jms.html)  | Apache Storm | 2016-09-29 |
+|  [Storm SQE](storm-sqe.html)  | Apache Storm | 2016-09-21 |
+|  [Sling Dynamic Includes](sling-dynamic-includes.html)  | Apache Sling | 2016-03-30 |
+|  [Brooklyn CLI](brooklyn-cli.html)  | Apache Brooklyn | 2016-02-26 |
+|  [Apache Slider "KOYA" - Kafka on YARN App-Package](slider-koya.html)  | Apache Slider (Incubator) | 2016-01-19 |
+|  [JMeter Dashboard / Report](jmeter-dashboard-report.html)  | Apache JMeter | 2015-12-03 |
+|  [Sling Pipes](sling-pipes.html)  | Apache Sling | 2015-12-01 |
+|  [Alibaba JStorm](storm-jstorm.html)  | Apache Storm | 2015-10-22 |
+|  [POI Visio / XDGF](poi-visio.html)  | Apache POI | 2015-09-20 |
+|  [Apache Aurora Twitter Commons Java Library](aurora-twitter-commons.html)  | Apache Aurora | 2015-08-10 |
+|  [Apache ORC C++ module](orc-cpp-clearance.html)  | Apache ORC | 2015-07-15 |
+|  [Apache httpd mod_h2 module](httpd-mod_h2-clearance.html)  | Apache HTTP Server | 2015-06-30 |
+|  [Sling HApi Tools](sling-hapi.html)  | Apache Sling | 2015-06-05 |
+|  [Myriad](myriad.html)  | Apache Myriad (Incubator) | 2015-06-04 |
+|  [Apache Storm Azure Eventhubs Integration](storm-azure-eventhubs.html)  | Apache Storm | 2015-04-20 |
+|  [Flex Documentation](flex-doc.html)  | Apache Flex | 2015-04-16 |
+|  [AWS EC2 API wrapper to CloudStack API](cloudstack-ec2stack.html)  | Apache CloudStack | 2015-04-13 |
+|  [Google GCE API wrapper to CloudStack API](cloudstack-gstack.html)  | Apache CloudStack | 2015-04-13 |
+|  [CouchDB Mango](couchdb-mango.html)  | Apache CouchDB | 2015-01-26 |
+|  [Fortress](fortress.html)  | Apache Fortress | 2014-11-25 |
+|  [HTrace](htrace.html)  | Apache HTrace | 2014-11-11 |
+|  [Sightly and XSS modules for Sling](sling-sightly-xss.html)  | Apache Sling | 2014-11-03 |
+|  [Sling Resource Editor](sling-resource-editor.html)  | Apache Sling | 2014-10-13 |
+|  [FlatSpark](flex-flatspark.html)  | Apache Flex | 2014-09-26 |
+|  [Radii8](flex-radii8.html)  | Apache Flex | 2014-08-20 |
+|  [Quest Data Connector for Sqoop](sqoop-quest-data-connector.html)  | Apache Sqoop | 2014-08-12 |
+|  [Commons RDF](commons-rdf.html)  | Apache Commons | 2014-07-21 |
+|  [BigCouch Update](couchdb-bigcouch2.html)  | BigCouch Update | 2014-07-17 |
+|  [Sling Query](sling-query.html)  | Sling Query | 2014-07-17 |
+|  [Brooklyn CAMP Server](brooklyn-camp-server.html)  | Apache Incubator - Apache Brooklyn Podling | 2014-07-10 |
+|  [HornetQ](hornetq.html)  | HornetQ | 2014-07-10 |
+|  [We-Amp Ats_speed: PageSpeed optimization plugin for Apache Traffic Server](ats-ats_speed.html)  | Apache Traffic Server | 2014-07-04 |
+|  [Adobe Developer Connection, PMD, FDB, Squiggly, Tour de Flex, etc for Apache Flex](flex-adc-pmd-squiggly-fdb-tdf.html)  | Apache Flex | 2014-04-18 |
+|  [Adobe BlazeDS for Apache Flex](flex-blazeds.html)  | Apache Flex | 2014-04-18 |
+|  [Hadoop RDF Tools for Jena](jena-hadoop-rdf-tools.html)  | Apache Jena | 2014-04-01 |
+|  [PojoSR for Felix](felix-pojosr.html)  | Apache Felix | 2014-03-05 |
+|  [Apache Phoenix](phoenix.html)  | Apache Phoenix | 2014-02-06 |
+|  [Celix shared memory RSA](celix-shared-memory-rsa.html)  | Apache Celix (incubating) | 2013-12-10 |
+|  [Sling Replication](sling-replication.html)  | Apache Sling | 2013-11-27 |
+|  [UIMA DUCC](uima-ducc.html)  | Apache UIMA | 2013-11-21 |
+|  [RDP Client for CloudStack](cloudstack-rdp-client.html)  | Apache CloudStack | 2013-11-04 |
+|  [Contrail Plugin for CloudStack](cloudstack-contrail-plugin.html)  | Apache CloudStack | 2013-10-04 |
+|  [Wicket Free Guide](wicket-andrea-del-bene-wicket-guide.html)  | Apache Wicket | 2013-08-18 |
+|  [jackrabbit-filevault](jackrabbit-filevault.html)  | Apache Jackrabbit | 2013-07-08 |
+|  [CouchDB BigCouch](couchdb-bigcouch.html)  | Apache CouchDB | 2013-05-30 |
+|  [WS-Eventing Service for CXF](cxf-wseventing.html)  | Apache CXF | 2013-05-28 |
+|  [XKMS Service for CXF](cxf-xkms.html)  | Apache CXF | 2013-05-17 |
+|  [Korean Analyzer](lucene-korean-analyzer.html)  | Apache Lucene | 2013-05-10 |
+|  [LevenshteinAutomaton/MDAG](lucene-levenshtein-automaton-mdag.html)  | Apache Lucene | WIP |
+|  [CloudStack Marvin Test Suite](cloudstack-marvin-test-suite.html)  | Apache CloudStack | 2013-05-06 |
+|  [CloudStack support for Juniper SRX/F5 BigIP inline mode](cloudstack-srx-f5-inline-mode.html)  | Apache CloudStack (incubating) | 2013-01-27 |
+|  [CloudStack user-initiated SSH key reset](cloudstack-reset-ssh-key.html)  | Apache CloudStack (incubating) | 2013-01-27 |
+|  [CloudStack Public IP assignment for EIP in a basic network](cloudstack-optional-public-ip-assignment-for-EIP-with-basic-zone.html)  | Apache CloudStack (incubating) | 2013-01-27 |
+|  [CloudStack L4-L7 Network Services Enablement](cloudstack-network-services-in-shared-networks.html)  | Apache CloudStack (incubating) | 2013-01-27 |
+|  [CloudStack Enhanced Baremetal Provisioning](cloudstack-enahnced-baremetal-provisioning.html)  | Apache CloudStack (incubating) | 2013-01-25 |
+|  [CloudStack Egress Firewall Rules](cloudstack-egress-firewall-rules.html)  | Apache CloudStack (incubating) | 2013-01-25 |
+|  [CloudStack Documentation](cloudstack-documentation-for-various-features.html)  | Apache CloudStack (incubating) | 2013-01-25 |
+|  [mod_macro](httpd-mod_macro.html)  | Apache HTTP Server | 2013-01-14 |
+|  [uimaFIT](uimafit.html)  | Apache UIMA | 2012-12-10 |
+|  [DeviceMap OpenDDR](devicemap-openddr.html)  | Apache DeviceMap (incubating) | 2012-09-20 |
+|  [CouchDB Docs](couchdb-docs.html)  | Apache CouchDB | 2012-09-12 |
+|  [Felix UserAdmin (2nd implementation)](felix-user-admin-2.html)  | Apache Felix | 2012-09-04 |
+|  [Celix Device Access](celix-device-access.html)  | Apache Celix (incubating) | 2012-05-16 |
+|  [Redback](redback.html)  | Apache Archiva | 2012-04-03 |
+|  [Geronimo 2.2 Dependency Updates](geronimo-dependency-upgrades.html)  | Apache Geronimo | 2011-11-28 |
+|  [Felix Service Diagnostics](felix-service-diagnostics.html)  | Apache Felix | 2011-10-18 |
+|  [Felix Lightweight HttpService](felix-lightweight-httpservice.html)  | Apache Felix | 2011-09-30 |
+|  [Streaming WS-Security Implementation for Apache WebServices/WSS4J](ws-swssf.html)  | Apache WebServices | 2011-08-23 |
+|  [Tomcat Maven Plugin](tomcat-maven-plugin.html)  | Apache Tomcat | 2011-08-08 |
+|  [PaDaF](pdfbox-padaf.html)  | Apache PDFBox | 2011-07-13 |
+|  [NPanday](npanday.html)  | Incubator | 2011-03-04 |
+|  [Leeloo](amber-leeloo.html)  | Apache Amber (incubating) | 2010-12-20 |
+|  [Bushel](bushel.html)  | Apache Ant | 2010-11-15 |
+|  [CMIS PHP Client](chemistry-cmis-php-client.html)  | Apache Chemistry (incubating) | 2010-06-03 |
+|  [Felix UPNP Web Console Plugin](felix-upnp-console-plugin.html)  | Apache Felix | 2010-04-03 |
+|  [Maven Indexer](maven-indexer.html)  | Apache Maven | 2010-03-03 |
+|  [AlchemyAPI Annotator](uima-alchemyapi-annotator.html)  | Apache UIMA (incubating) | 2010-02-26 |
+|  [LCF connectors-metacarta](connectors-metacarta.html)  | Lucene Connector Framework (Incubating) | 2010-02-13 |
+|  [OpenCMIS](chemistry-opencmis.html)  | Apache Chemistry (incubating) | 2010-02-11 |
+|  [cmislib](chemistry-cmislib.html)  | Apache Chemistry (incubating) | 2010-02-07 |
+|  [DB Torque generator](db-torque-generator.html)  | Apache DB | 2010-02-04 |
+|  [XWork](struts2-xwork.html)  | Apache Struts | 2009-12-29 |
+|  [Ant Groovy Front](ant-groovy-front.html)  | Apache Ant | 2009-12-18 |
+|  [User Admin](felix-user-admin.html)  | Apache Felix | 2009-12-01 |
+|  [Improved HttpService](felix-httpservice.html)  | Apache Felix | 2009-09-04 |
+|  [Sigil](felix-sigil.html)  | Apache Felix | 2009-07-03 |
+|  [OSGi Shell](felix-osgi-shell.html)  | Apache Felix | 2009-05-26 |
+|  [mod_fcgid](httpd-mod_fcgid.html)  | Apache HTTP Server | 2009-02-03 |
+|  [OpenXML4J](openxml4j.html)  | Apache POI | 2008-11-11 |
+|  [velocity-tiles](velocity-tiles.html)  | Apache Tiles | 2008-10-31 |
+|  [local-lucene](local-lucene-solr.html)  | Apache Lucene | 2008-09-15 |
+|  [commons-flatfile](commons-flatfile.html)  | Apache Commons | 2008-09-04 |
+|  [felix-remote-shell](felix-remote-shell.html)  | Apache Felix | 2008-08-11 |
+|  [Zookeeper](zookeeper.html)  | Apache Hadoop | 2008-07-15 |
+|  [Pax Logging](felix-pax-logging.html)  | Apache Felix | 2008-06-02 |
+|  [harmony-1680-contribution-javap-kononov](harmony-1680-contribution-javap-kononov.html)  | Apache Harmony | 2008-05-22 |
+|  [OSGi Console](felix-osgi-console.html)  | Apache Felix | 2008-05-13 |
+|  [Kitten Auth](kitten-auth.html)  | Apache Wicket | 2008-05-10 |
+|  [harmony-5742-contribution-microemu-teodorczyk](harmony-5742-contribution-microemu-teodorczyk.html)  | Apache Harmony | 2008-04-25 |
+|  [UIMA-AS](uima-as.html)  | Apache Incubator | 2008-04-23 |
+|  [mod_domain](httpd-mod_domain-clearance.html)  | Apache HTTP Server | 2008-04-18 |
+|  [maven-archiva-webdav](maven-archiva-webdav.html)  | Apache Maven | 2008-03-13 |
+|  [File Install](felix-file-install.html)  | Apache Felix | 2008-02-06 |
+|  [Deployment Admin](felix-deployment-admin.html)  | Apache Felix | 2008-01-09 |
+|  [xmlgraphics-batik-xmleditor-component](xmlgraphics-batik-xmleditor-component.html)  | Apache XML Graphics | 2007-11-28 |
+|  [trinidad-translations](trinidad-translations.html)  | Apache MyFaces | 2007-11-27 |
+|  [torque-village-contribution](torque-village-contribution.html)  | Apache DB | 2007-10-22 |
+|  [maven-shade-plugin](maven-shade-plugin.html)  | Apache Maven | 2007-09-10 |
+|  [jsr-301-ri](jsr-301-ri.html)  | Apache MyFaces | 2007-09-04 |
+|  [maven-archetypeng](maven-archetypeng.html)  | Apache Maven | 2007-08-29 |
+|  [Apache CXF Wsdl2JS Tool](cxf-wsdl2js.html)  | Apache CXF (Incubator) | 2007-07-30 |
+|  [Shale Clay Plugin for Eclipse](shale-444-clay-plugin-for-eclipse.html)  | Apache Shale | 2007-07-11 |
+|  [maven-patch-plugin](maven-patch-plugin.html)  | Apache Maven | 2007-07-05 |
+|  [Cactus](jakarta-cactus-tahchiev.html)  | Apache Jakarta | 2007-03-24 |
+|  [jackrabbit-bundle-persistence](jackrabbit-bundle-persistence.html)  | Apache Jackrabbit | 2007-03-07 |
+|  [derby-2248-contribution-tests-ibm](derby-2248-contribution-tests-ibm.html)  | Apache DB | 2007-02-26 |
+|  [xmlgraphics-commons-postscript-dsc-parser](xmlgraphics-commons-postscript-dsc-parser.html)  | Apache XML Graphics | 2007-02-26 |
+|  [geronimo-2743-ibm-covalent-j2g](geronimo-2743-ibm-covalent-j2g.html)  | Apache Geronimo | 2007-02-19 |
+|  [TRIPLES-1: mod_sparql](triplesoup-1-contribution-mod_sparql.html)  | Incubator | 2007-02-18 |
+|  [TRIPLES-2: libb](triplesoup-2-contribution-libb.html)  | Incubator | 2007-02-18 |
+|  [TRIPLES-3: RDFStore](triplesoup-3-contribution-RDFStore.html)  | Incubator | 2007-02-18 |
+|  [Apache::Reload](perl-apache_reload.html)  | Apache-Perl | 2007-02-08 |
+|  [derby-2134-contribution-tests-ibm](derby-2134-contribution-tests-ibm.html)  | Apache DB | 2007-01-10 |
+|  [Wombat](httpd-wombat.html)  | Apache HTTP Server | 2006-12-06 |
+|  [directory-triplesec](directory-triplesec.html)  | Apache Directory | 2006-10-18 |
+|  [directory-mitosis](directory-mitosis.html)  | Apache Directory | 2006-10-18 |
+|  [harmony-438-contribution-drlvm-intel](harmony-438-contribution-drlvm-intel.html)  | Apache Harmony / Incubator | 2006-05-31 |
+|  [Jakarta Commons CSV](jakarta-commons-csv.html)  | Apache Jakarta | 2006-04-21 |
+|  [xmlgraphics-fop-afp-renderer](xmlgraphics-fop-afp-renderer.html)  | Apache XML Graphics | 2006-04-20 |
+|  [activemq](activemq.html)  | Apache Geronimo | 2006-04-18 |
+|  [servicemix](servicemix.html)  | Apache Geronimo | 2006-04-18 |
+|  [jakarta-commons-composite-pool](jakarta-commons-composite-pool.html)  | Apache Jakarta | 2006-03-19 |
+|  [ode-2-intalio-pxe](ode-2-intalio-pxe.html)  | Apache Ode / Incubator | 2006-03-13 |
+|  [harmony-127-contribution-plugin-ibm](harmony-127-contribution-plugin-ibm.html)  | Apache Harmony / Incubator | 2006-03-01 |
+|  [harmony-88-contribution-tests-ibm](harmony-88-contribution-tests-ibm.html)  | Apache Harmony / Incubator | 2006-03-01 |
+|  [harmony-57-contribution-tests-ibm](harmony-57-contribution-tests-ibm.html)  | Apache Harmony / Incubator | 2006-03-01 |
+|  [ode-1-sybase-bpe](ode-1-sybase-bpe.html)  | Apache Ode / Incubator | 2006-02-21 |
+|  [geronimo-1478-xbean](geronimo-1478-xbean.html)  | Apache Geronimo | 2006-02-13 |
+|  [harmony-16-contribution-classlib-intel](harmony-16-contribution-classlib-intel.html)  | Apache Harmony / Incubator | 2005-12-20 |
+|  [myfaces-tobago](myfaces-tobago.html)  | Apache MyFaces | 2005-12-20 |
+|  [harmony-14-contribution-classlib-ibm](harmony-14-contribution-classlib-ibm.html)  | Apache Harmony / Incubator | 2005-11-24 |
+|  [maven-surefire](maven-surefire.html)  | Apache Maven | 2005-11-07 |
+|  [maven-doxia](maven-doxia.html)  | Apache Maven | 2005-11-07 |
+|  [geronimo-1111-trifork-initial](geronimo-1111-trifork-initial.html)  | Apache Geronimo | 2005-10-27 |
+|  [harmony-6-contribution-jvm-daniel-lydick](harmony-6-contribution-jvm-daniel-lydick.html)  | Apache Harmony / Incubator | 2005-10-08 |
+|  [harmony-3-ccontribution-jcvm-archie-cobbs](harmony-3-ccontribution-jcvm-archie-cobbs.html)  | Apache Harmony / Incubator | 2005-10-04 |
+|  [harmony-5-component-poc-david-tanzer](harmony-5-component-poc-david-tanzer.html)  | Apache Harmony / Incubator | 2005-09-28 |
+|  [geronimo-1016-ibm-daytrader](geronimo-1016-ibm-daytrader.html)  | Apache Geronimo | 2005-09-20 |
+|  [geronimo-875-ibm-eclipse](geronimo-875-ibm-eclipse.html)  | Apache Geronimo | 2005-08-16 |
+|  [geronimo-762-ibm-console](geronimo-762-ibm-console.html)  | Apache Geronimo | 2005-07-14 |
+|  [geronimo-iiop](geronimo-iiop.html)  | Apache Geronimo | 2005-01-15 |
+|  [apr-jlibtool](apr-jlibtool.html)  | Apache Portable Runtime (APR) | 2004-07-08 |
+|  [portals-gluecode-jetspeed](portals-gluecode-jetspeed.html)  | Apache Portals | 2004-06-27 |
+|  [ws-sandesha](ws-sandesha.html)  | Apache Web Services | 2004-05-02 |
+|  [ws-wss4j](ws-wss4j.html)  | Apache Web Services | 2004-02-24 |
+
+# Additional notes {#notes}
+
+The software grant requires that "Licensor owns or has sufficient rights to contribute the software source code...". In the case where there are multiple entities involved that only together have sufficient rights (for example in the case of an existing external project with multiple contributors), there are basically two possibilities to continue:
+
+
+
+1. All entities sign the same software grant together and submit one software grant form. This is preferred but obviously can complicate the process considerably.
+
+1. The alternative is that each party sign its own software grant while everyone references the same contribution (designated by a URL and an MD5 hash over the ZIP file representing the contribution). It is recommended that the software grant form is modified in order to have a line for each party so the completeness of the paperwork can be verified upon receipt.
diff --git a/content/iota.md b/content/iota.md
deleted file mode 100644
index 2baa065..0000000
--- a/content/iota.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The iota project retired on 2018-02-15</span>
-
-
-Open source system that enables the orchestration of IoT devices.
-
-
-
-- 2016-01-20 Project entered incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://iota.incubator.apache.org](http://iota.incubator.apache.org)  |
-| . | apache |  [http://iota.incubator.apache.orghttp://iota.incubator.apache.org](http://iota.incubator.apache.org)  |
-| . | documentation |  [http://iota.incubator.apache.org](http://iota.incubator.apache.org)  |
-| . | contributing |  [TBD](http://iota.incubator.apache.org)  |
-| Mailing list | dev |  `dev`  `@`  `iota.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `iota.incubator.apache.org`  |
-| . | private |  `private`  `@`  `iota.incubator.apache.org`  |
-| . | user |  `user`  `@`  `iota.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/IOTA/](https://issues.apache.org/jira/browse/IOTA/)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-iota.git](https://gitbox.apache.org/repos/asf?p=incubator-iota.git)  |
-| . | Mirror |  [https://github.com/apache/incubator-iota.git](https://github.com/apache/incubator-iota.git)  |
-| Mentors | humbedooh | Daniel Gruno |
-| . | sterling | Sterling Hughes |
-| . | jmclean | Justin Mclean |
-| . | hadrian | Hadrian Zbarcea |
-| Committers |  | Rutvij Clerk |
-| . |  | Miron Costant |
-| . |  | Tony Faustini |
-| . |  | Reza Hajebi |
-| . |  | Amirhossein Jabbari |
-| . |  | Shahin Mowzoon |
-| . |  | Scott Noteboom |
-| . |  | Sydney Noteboom |
-| . |  | Omkar Prabhu |
-| . |  | Don Shields |
-
-
--  [February 2016](https://wiki.apache.org/incubator/February2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-01-20 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-01-31 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-01-31 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-01-31 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-01-31 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| TBD | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| TBD | Subscribe all Mentors on the pmc and general lists. |
-| TBD | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| TBD | Tell project to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| TBD | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| TBD | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| TBD | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| TBD | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| TBD | Check that all active committers have submitted a contributors agreement. |
-| TBD | Add all active committers in the STATUS file. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/iotdb.md b/content/iotdb.md
deleted file mode 100644
index 1c7a423..0000000
--- a/content/iotdb.md
+++ /dev/null
@@ -1,188 +0,0 @@
-Title: Apache IoTDB Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The IoTDB project graduated on 2020-09-18</span>
-
-
-IoTDB is a data store for managing large amounts of time series data such as timestamped data from IoT sensors in industrial applications.
-
-
-
-- 2018-11-18 Project enters incubation.
-
-
-- IoTDB Website - http://iotdb.incubator.apache.org
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://iotdb.incubator.apache.org/](http://iotdb.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `iotdb.apache.org`  |
-| . | private |  `private`  `@`  `iotdb.apache.org`  |
-| . | commits |  `commits`  `@`  `iotdb.incubator.apache.org`  |
-| . | reviews |  `reviews`  `@`  `iotdb.apache.org`  |
-| . | jira notifications |  `notifications`  `@`  `iotdb.apache.org`  |
-| Source code | . | . |
-| . | incubator-iotdb | https://github.com/apache/incubator-iotdb.git |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/IOTDB |
-| Wiki | Confluence | https://cwiki.apache.org/confluence/display/IOTDB |
-| Wiki | Documents | https://github.com/apache/incubator-iotdb/tree/master/docs |
-| Twitter | twitter | https://twitter.com/ApacheIotdb/ |
-| Roster | Whimsy |  [IoTDB Roster](https://whimsy.apache.org/roster/ppmc/iotdb)  |
-| Champion | kmcgrail | Kevin A. McGrail |
-| Mentors |  | . |
-| . | jmclean | Justin Mclean |
-| . | cdutz | Christofer Dutz |
-| . | ningjiang | Willem Ning Jiang |
-| . | kmcgrail | Kevin A. McGrail |
-| Committers |  | . |
-| . | caogaofei | Gaofei Cao |
-| . | dope | Yi Xu |
-| . | east | Dongfang Mao |
-| . | geniuspig | Boris Zhu |
-| . | haonan | Haonan Hou |
-| . | hxd | Xiangdong Huang |
-| . | jackietien | Yuan Tian |
-| . | jfeinauer | Julian Feinauer |
-| . | jiangtian | Tian Jiang |
-| . | jimwang | Jianmin Wang |
-| . | jincheng | Jincheng Sun |
-| . | kangrong | Rong Kang |
-| . | leirui | Lei Rui |
-| . | liudw | Dawei Liu |
-| . | liukun | Kun Liu |
-| . | liurui | Rui Liu |
-| . | lta | Tianan Li |
-| . | qiaojialin | Jialin Qiao |
-| . | shuozhang | Shuo Zhang |
-| . | sunzesong | Zesong Sun |
-| . | suyue | Yue Su |
-| . | tsaitsunghan | Zonghan Cai |
-| . | wangchen | Chen Wang |
-| . | xingtanzjr | Jinrui Zhang |
-| . | xuekaifeng | Kaifeng Xue |
-| . | yuanjun | Jun Yuan |
-| . | zhaoxinyi | Stefanie Zhao |
-
-
--  [IoTDB Board Reports](https://whimsy.apache.org/board/minutes/iotdb.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-11-24 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-11-24 | Request DNS (first step after creating podling status page) |
-| 2018-11-24 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2018-11-24 | Request [git repositories](https://github.com/apache/incubator-iotdb)  |
-| 2018-12-21 | Request [Website](https://iotdb.apache.org/)  |
-| 2019-01-14 | Ask infrastructure to set up issue tracker ( [JIRA](https://issues.apache.org/jira/projects/IOTDB/issues) ). |
-| 2018-12-24 | Ask infrastructure to set up wiki ( [Confluence](https://cwiki.apache.org/confluence/display/IOTDB) ). |
-| 2019-01-19 | Migrate the project to our infrastructure. |
-| 2019-07-25 | Ask infrastructure to add permission of ( [Nexus](https://issues.apache.org/jira/browse/INFRA-18788) ). |
-| 2019-01-21 | Ask infrastructure to set up ( [Travis-CI](https://issues.apache.org/jira/browse/INFRA-17693) ). |
-| 2019-12-06 | Ask infrastructure to set up ( [SonarCloud](https://issues.apache.org/jira/browse/INFRA-19507) ). |
-| 2019-12-08 | Ask infrastructure to add permission of ( [DockerHub](https://issues.apache.org/jira/browse/INFRA-19459) ). |
-| 2019-12-21 | Ask infrastructure to add permission of ( [Coveralls](https://issues.apache.org/jira/browse/INFRA-19612) ). |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. (done) | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. (done) | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. (done) | Tell Mentors to track progress in the file 'incubator/projects/iotdb.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-12-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2019-01-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2019-08-26 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2019-08-26 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-01-16 | Check that all active committers have submitted a contributors agreement. |
-| 2020-01-16 | Add all active committers in the relevant section above. |
-| 2018-11-24 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ip-clearance-template.md b/content/ip-clearance-template.md
new file mode 100644
index 0000000..614b571
--- /dev/null
+++ b/content/ip-clearance-template.md
@@ -0,0 +1,136 @@
+Title: XYZ Codebase Intellectual Property (IP) Clearance Status
+
+ `-----8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;---- cut here-------8-&lt;----` 
+# Preamble {#premable}
+
+This document (or rather the source of it) is the template for recording IP clearance on new codebases. Please store the completed document in this Incubator repository using a filename that reflects your project.
+
+
+One of the Incubator's roles is to ensure that proper attention is paid to intellectual property. From time to time, an external codebase is brought into the ASF that is not a separate project, but still represents a substantial contribution that was not developed within the ASF's source control system. This is a short form of the Incubation checklist, designed to allow code to be imported with alacrity while still providing for oversight.
+
+
+This form is not for new projects. The intent is to simply help to ensure, and record, that due diligence (Software Grant, Individual CLA, Corporate CLA, license and dependencies) has been paid to the incoming code, so that it can be merged into an existing project/module.
+
+
+Either an Individual CLA or Corporate CLA is preferred to a Software Grant. All authors must sign an Individual CLA; or all owners of IP must sign one of the three documents and send to secretary (reference [ASF Licenses](http://www.apache.org/licenses/#clas) ).
+
+
+The receiving PMC is responsible for doing the work. The Incubator is simply the repository of the needed information. Once a PMC directly checks-in a filled-out short form, everything is done.
+
+
+All PMCs must handle incoming code in this way. Any code that was developed outside of the ASF SVN repository must be processed like this, even if the external developer is an ASF committer.
+
+
+# Process {#process}
+
+
+1. IP Clearance processing must be executed either by an Officer or a Member of the ASF. _If you are not an Officer or a Member, please contact your project chair who will find an appropriate volunteer._ Incubator karma is also required. Please request karma from the incubator pmc if you do not have it.
+
+1. (Optional) _Commit an outline [form](#form-filling) , filling those parts which can be (at this stage)_ .
+
+1. A software grant must be provided to the ASF. This grant can either be done by the ASF Corporate CLA (via Schedule B) or the Software Grant Agreement. The completed and signed grant must be emailed to secretary@apache.org
+
+1. Receipt of the software grant form **must** be acknowledged by an Officer of the ASF by recording in the correct file ( _grants.txt_ for a License Grant or _cclas.txt_ for a Corporate CLA). In most normal circumstances, the officer should be the ASF Secretary, who must be provided a copy of the grant or CCLA in any case (if not originally sent or Emailed to him).
+
+1.  **Note:** the grant form **must** be acknowledged before continuing. If the source is referenced by checksum in the grant, commit the canonical tarball for the donated code into the incubator drop area (/repos/asf/incubator/donations) together with a checksum and a detached signature. This will ensure that apache has a legal record of the grant.
+
+1. Complete and commit the [completed form](#form-filling) .
+
+1. Post a message to general@incubator prefixed [IP CLEARANCE] asking for clearance to be checked. Sign off is by lazy consensus so wait at least 72 hours for a -1.
+
+1. Post a [RESULT] to close the thread and let the project know that the code has been cleared for import.
+
+# Filling The Form {#form-filling}
+
+What to do to set it up:
+
+
+
+- copy this file and re-name it according to incubator/public/trunk/content/ip-clearance/${project-codebase}.xml
+
+- add a row to the table at incubator/public/trunk/content/ip-clearance/index.xml
+
+- make a snapshot of the source code available for review
+
+The snapshot should not last long in place before it is moved to the successful incubation area. The sole purpose is to ensure that IP is cleared so that the codebase can be merged into the ASF SVN.
+
+
+For this file:
+
+
+
+- substitute the XYZ name with the real one
+
+- fill in the description
+
+- fill in the work items
+
+- remove this notice
+
+- set a proper "title" element for the html page
+
+When a work item is done, place the date in the supplied space.
+
+
+ _On the first edit of this file, please delete this notice._ 
+
+ `-----8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;---- cut here-------8-&lt;----` 
+Describe the incoming codebase, including whether it is a large set of patches, new functional modules, etc.
+
+
+
+- Which PMC will be responsible for the code
+
+
+- Into which existing project/module
+
+
+- Officer or member managing donation:
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| ....-..-.. | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| ....-..-.. | Check that all active committers have a signed CLA on record. |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/isis.md b/content/isis.md
deleted file mode 100644
index 10e2dd0..0000000
--- a/content/isis.md
+++ /dev/null
@@ -1,180 +0,0 @@
-Title: Isis Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Isis project graduated on 2012-10-17</span>
-
-
-The Isis project will be an extensible standards-based framework to rapidly develop and enterprise level deploy domain-driven (DDD) applications.
-
-
-
-- 2012-10-17 Isis graduates from the incubator
-
-- 2012-09-24 New committer: Jeroen van der Wal
-
-- 2012-02-20 Released version 0.2.0-incubating
-
-- 2011-07-14 Released version 0.1.2-incubating
-
-- 2010-09-07 Isis has been accepted to enter incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://isis.apache.org/](http://isis.apache.org/) <br></br>previously: [http://incubator.apache.org/isis/](http://incubator.apache.org/isis/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/Isis/](http://cwiki.apache.org/confluence/display/Isis/)  |
-| Mailing list | dev |  `dev`  `@`  `isis.apache.org` <br></br>previously: `isis-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | users |  `users`  `@`  `isis.apache.org` <br></br>previously: `isis-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `isis.apache.org` <br></br>previously: `isis-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/ISIS](https://issues.apache.org/jira/browse/ISIS)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/isis.git](https://gitbox.apache.org/repos/asf/isis.git) <br></br>previously: [https://svn.apache.org/repos/asf/incubator/isis/](https://svn.apache.org/repos/asf/incubator/isis/)  |
-| People | . | See below |
-
-The project team consists of:
-
-
-| apache id | name | mentor? | ppmc? | committer? | alumni? |
-|-----------|------|---------|-------|------------|---------|
-| struberg | Mark Struberg | Y | Y | Y | . |
-| bimargulies | Benson Margulies | Y | Y | Y | . |
-| sgoeschl | Siegfried Goeschl | Y | Y | Y | . |
-| mnour | Mohammad Nour El-Din | Y | Y | Y | . |
-| danhaywood | Daniel Keir Haywood | . | Y | Y | . |
-| kevin | Kevin Meyer | . | Y | Y | . |
-| rmatthews | Robert Charles Matthews | . | Y | Y | . |
-| dslaughter | David Slaughter | . | Y | Y | . |
-| themalkolm | Alexander Krasnukhin | . | Y | Y | . |
-| jcvanderwal | Jeroen van der Wal | . | Y | Y | . |
-| uli | Ulrich Stärk | . | . | Y | . |
-
-
--  [September 2012](http://wiki.apache.org/incubator/September2012#Isis) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012#Isis) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012#Isis) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011#Isis) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011#Isis) 
-
--  [June 2011](http://wiki.apache.org/incubator/June2011#Isis) 
-
--  [March 2011](http://wiki.apache.org/incubator/March2011#Isis) 
-
--  [December 2010](http://wiki.apache.org/incubator/December2010#Isis) 
-
--  [November 2010](http://wiki.apache.org/incubator/November2010#Isis) 
-
--  [October 2010](http://wiki.apache.org/incubator/October2010#Isis) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-09-21 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.<br></br> **STATUS: Done** . Made sure that both **Isis** and **Apache Isis** are not used. |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names<br></br> **STATUS: not applicable** . |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.<br></br> **STATUS: not applicable** . |
-| 2010-09-07 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted.<br></br> **STATUS: not applicable** ; see [mailing list thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201009.mbox/%3C4C85C4FE.4050104@gmail.com%3E)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-09-28 | Ask infrastructure to create source repository modules and grant the committers karma.<br></br>(see [INFRA-2996](http://issues.apache.org/jira/browse/INFRA-2996) and [INFRA-3000](http://issues.apache.org/jira/browse/INFRA-3000) ) |
-| 2010-09-09 | Ask infrastructure to set up and archive mailing lists.<br></br>(see [INFRA-2971](http://issues.apache.org/jira/browse/INFRA-2971) ) |
-| 2010-09-21 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla).<br></br>(see [INFRA-2997](http://issues.apache.org/jira/browse/INFRA-2997) ) |
-| 2010-09-21 | Ask infrastructure to set up wiki (Confluence, Moin).<br></br>(see [INFRA-3001](http://issues.apache.org/jira/browse/INFRA-3001) ) |
-| 2010-10-20 | Migrate the project to our infrastructure.<br></br>(see [INFRA-2972)](https://issues.apache.org/jira/browse/INFRA-2972) umbrella ticket and in particular the [INFRA-3066](https://issues.apache.org/jira/browse/INFRA-3066) ticket to import code) |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-09-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors.<br></br>(see [Vote thread](http://markmail.org/message/5bjv6lt64km7sgys) ) |
-| 2010-09-09 | Subscribe all Mentors on the pmc and general lists.<br></br>(see [INFRA-2971](http://issues.apache.org/jira/browse/INFRA-2971) ) |
-| 2010-09-28 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-09-21 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html'<br></br>(see [Notification e-mail](http://markmail.org/message/3ygombjswzmhrdwi) ) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-09-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-03-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright.<br></br>(see [ISIS-1](http://issues.apache.org/jira/browse/ISIS-1) ). |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-03-18 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br>Done as part of voting on first release, 0.1.2-incubating. |
-| 2010-07-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br>Done as part of [voting](http://mail-archives.apache.org/mod_mbox/incubator-isis-dev/201107.mbox/%3C4E116A0F.8040606%40gmail.com%3E) on first release, 0.1.2-incubating |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-09-26 | Check that all active committers have submitted a contributors agreement.<br></br>(see [Notification e-mail](http://markmail.org/message/pzgwdwwdkpirus7x) , [Confirmation e-mail](http://markmail.org/message/ce2juvqaoodd7rou) for Alexander Krasnukhin, [Confirmation e-mail](http://markmail.org/message/3xmotalfldq63mis) for David Slaughter) |
-| 2010-10-18 | Add all active committers in the STATUS file.<br></br>(see [ISIS-2](http://issues.apache.org/jira/browse/ISIS-2) ) |
-| 2010-10-05 | Ask root for the creation of committers' accounts on people.apache.org.<br></br>(see [INFRA-3000](http://issues.apache.org/jira/browse/INFRA-3000) ) |
-
-## Project specific {#Project+specific}
-
- _(none)_ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?<br></br> **YES** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)<br></br> **YES** 
-
-- Are project decisions being made in public by the committers?<br></br> **YES** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?<br></br> **YES** 
-
-## Project Specific {#Project+Specific}
-
- _(none)._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?<br></br> **n/a** 
-
-- If graduating to a new PMC, has the board voted to accept it?<br></br> **YES** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?<br></br> **YES** 
diff --git a/content/ivy.md b/content/ivy.md
deleted file mode 100644
index ea351fa..0000000
--- a/content/ivy.md
+++ /dev/null
@@ -1,157 +0,0 @@
-Title: Ivy Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-The Apache Ivy project has completed incubation, more information is available from the Ant website.
-
-
-<span class="graduated">The Ivy project graduated on 2007-10-11</span>
-
-
-Ivy is a tool for managing (recording, tracking, resolving and reporting) project dependencies. It is characterized by the following:
-
-
-1. flexibility and configurability - Ivy is essentially process agnostic and is not tied to any methodology or structure. Instead it provides the necessary flexibility and configurability to be adapted to a broad range of dependency management and build processes.
-
-
-2. tight integration with Apache Ant - while available as a standalone tool, Ivy works particularly well with Apache Ant providing a number of powerful Ant tasks ranging from dependency resolution to dependency reporting and publication.
-
-
-
-- 2007-10-11 Ivy graduated as a subproject of Ant
-
-- 2007-10-08 Ant accepted Ivy as a subproject once graduated
-
-- 2007-09-26 The Ivy community voted to graduate as a subproject of Ant
-
-- 2007-04-26 Ivy 2.0.0-alpha1-incubating Released
-
-- 2007-01-05 Web site created
-
-- 2006-11-07 Software grant received by the ASF
-
-- 2006-10-23 Project proposal [announced](http://marc.theaimsgroup.com/?l=incubator-general&amp;m=116163023627073&amp;w=2) publicly.
-
-| Item | Type | Reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ivy/](http://incubator.apache.org/ivy/)  |
-| Website | wiki |  [http://wiki.apache.org/ivy/](http://wiki.apache.org/ivy/)  |
-| Mailing list | private (for the members of the ppmc) |  [ivy-private@incubator.apache.org](mailto:ivy-private@incubator.apache.org)  |
-| Mailing list | dev |  [ivy-dev@incubator.apache.org](mailto:ivy-dev@incubator.apache.org) [ [Subscribe](mailto:ivy-dev-subscribe@incubator.apache.org) | [Unsubscribe](mailto:ivy-dev-unsubscribe@incubator.apache.org) ] |
-| Mailing list | user |  [ivy-user@incubator.apache.org](mailto:ivy-user@incubator.apache.org) [ [Subscribe](mailto:ivy-user-subscribe@incubator.apache.org) | [Unsubscribe](mailto:ivy-user-unsubscribe@incubator.apache.org) ] |
-| Mailing list | commits |  [ivy-commits@incubator.apache.org](mailto:ivy-commits@incubator.apache.org) [ [Subscribe](mailto:ivy-commits-subscribe@incubator.apache.org) | [Unsubscribe](mailto:ivy-commits-unsubscribe@incubator.apache.org) ] |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/IVY](https://issues.apache.org/jira/browse/IVY)  |
-| Source code | svn |  [https://svn.apache.org/repos/asf/incubator/ivy/](https://svn.apache.org/repos/asf/incubator/ivy/)  |
-
-
-
-
-| Role | Apache Id | Name (Given Surname) |
-|------|-----------|----------------------|
-| Champion | antoine | Antoine Levy-Lambert |
-| Champion | sylvain | Sylvain Wallez |
-| Mentor | antoine | Antoine Levy-Lambert |
-| Mentor | sbailliez | Stephane Bailliez |
-| Mentor | stevel | Steve Loughran |
-| Mentor | bodewig | Stefan Bodewig |
-| Committer | xavier | Xavier Hanin |
-| Committer | maartenc | Maarten Coene |
-| Committer | gscokart | Gilles Scokart |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache. **DONE.** 
-
-
-## Interim responsibility {#Interim+responsibility}
-
-| Date | Item |
-|------|------|
-| 2006-10-26 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-10-26 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-10-26 | Give all Mentors access to all incubator SVN modules. (to be done by PMC chair) |
-| 2006-10-26 | Tell Mentors to track progress in the file 'incubator/projects/ivy.html' which is generated from the XML status file. |
-
-## Copyright {#Copyright}
-
-| Date | Item |
-|------|------|
-| 2006-11-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2007-04-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| Date | Item |
-|------|------|
-| 2007-04-20 | Check and make sure that for all code included with the distribution that is not under the Apache license have the right to combine with Apache-licensed code and redistribute. |
-| 2007-04-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| Date | Item |
-|------|------|
-| 2006-11-22 | Check that all active committers have submitted a contributors agreement. |
-| 2006-11-27 | Add all active committers in the STATUS file. |
-| 2006-11-22 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| Date | Item |
-|------|------|
-| 2006-11-09 | Create source repository modules and grant the committers karma. **Done.**  |
-| 2006-10-31 | Ask infrastructure to set up and archive Mailing lists. **Done.**  |
-| 2006-10-31 | Ask infrastructure to setup an issue tracking system (Jira). **Done.**  |
-| 2006-12-08 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?<br></br> **Yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)<br></br> **Ivy started with two committers and added the most active contributor rather quickly. The three of them work for different entities. Upon graduation all Ant committers will become Ivy committers as well since Ant uses a single ACL for all subprojects.** <br></br> **Yes** 
-
-- Are project decisions being made in public by the committers?<br></br> **Yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?<br></br> **Yes** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?<br></br> **Yes** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?<br></br> **Yes** 
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?<br></br> **Yes** 
diff --git a/content/jackrabbit-bundle-persistence.md b/content/jackrabbit-bundle-persistence.md
new file mode 100644
index 0000000..ea75475
--- /dev/null
+++ b/content/jackrabbit-bundle-persistence.md
@@ -0,0 +1,65 @@
+Title: Jackrabbit Bundle Persistence Codebase Intellectual Property (IP) Clearance Status
+
+
+The contribution is a set of "bundle persistence manager" components for Apache Jackrabbit. The contribition will be included as new Java classes and packages in the existing jackrabbit-core component. The contribution also contains minor changes to existing Jackrabbit classes.
+
+
+The contributed code is attached to issue [JCR-755](http://issues.apache.org/jira/browse/JCR-755) with the following description:
+
+
+ _we (day software) offer our set of bundle persistence managers to the jackrabbit project. those pms combine the node and property states into a single bundle and store them together. this improves performance and reduces storage-memory overhead (no exact numbers available). The bundle pms also have a "bundle-cache" that does a memory sensitive caching of the bundles and a negative cache for non-existent bundles. small binary properties are inlined into the bundle rather than stored in the blobstore._ 
+
+
+
+- Which PMC will be responsible for the code: Apache Jackrabbit
+
+
+- Into which existing project/module: jackrabbit-core
+
+
+- Officer or member managing donation: Jukka Zitting
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| NA | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 sum for donated software: a8accf17e35d1dec52f5b4fcc277bb9e (calculated using OpenSSL version 0.9.8d).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-03-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-02-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Set of "bundle persistence manager" components for Apache Jackrabbit
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Day Management AG
+
+
+| date | item |
+|------|------|
+| 2007-02-28 | Check that all active committers have a signed CLA on record. |
+|  [2007-02-28](http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/200702.mbox/%3c510143ac0702280624y5bcd87bn4d109dcb0ead14c7@mail.gmail.com%3e)  | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-02-28 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-02-28 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on dev@jackrabbit.apache.org](http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/200702.mbox/%3c8be731880702230825v34fc0187sbd950248182a1fb3@mail.gmail.com%3e) 
diff --git a/content/jackrabbit-filevault-package-plugin.md b/content/jackrabbit-filevault-package-plugin.md
new file mode 100644
index 0000000..cfe6199
--- /dev/null
+++ b/content/jackrabbit-filevault-package-plugin.md
@@ -0,0 +1,65 @@
+Title: Jackrabbit Filevault Package Maven Plugin Codebase Intellectual Property (IP) Clearance Status
+
+
+The Apache Jackrabbit FileVault package maven plugin is an Apache maven plugin that simplifies the creation of content package maven artifacts. The content packages can later be used to install content into a JCR repository using the Apache Jackrabbit FileVault packaging runtime.
+
+
+The contribution consists of new small maven plugin together with integration tests.
+
+
+
+- Apache Jackrabbit PMC will be responsible for the code
+
+
+- This is a contribution into Apache Jackrabbit
+
+
+- Officer or member managing donation: Tobias Bocanegra (tripod@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-09-12 | tarball provided at: sftp://people.apache.org/home/tripod/contributions/jackrabbit-filevault-package-plugin.tgz |
+
+SHA1: 990a6120fd0470273c097067c22015870172469a ( _OpenSSL 1.0.2g 1 Mar 2016_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-09-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-09-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Adobe Systems Incorporated:Signed Corp CLA_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems Incorporated_ 
+
+| date | item |
+|------|------|
+| 2017-09-12 | Check that all active committers have a signed CLA on record. |
+| 2017-09-12 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA.<br></br> [mail thread.](http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/201709.mbox/%3CetPan.59b740fe.1fec42a5.3e4%40adobe.com%3E)  |
+| 2017-09-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-09-12 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _ [Vote thread.](http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/201709.mbox/%3CetPan.59b74477.1d807fdb.3e4@adobe.com%3E) _ 
diff --git a/content/jackrabbit-filevault.md b/content/jackrabbit-filevault.md
new file mode 100644
index 0000000..0922f0c
--- /dev/null
+++ b/content/jackrabbit-filevault.md
@@ -0,0 +1,65 @@
+Title: Jackrabbit FileVault Codebase Intellectual Property (IP) Clearance Status
+
+
+Jackrabbit FileVault introduces a JCR repository to filesystem mapping. The mapping is exposed by an API and used by the CRX "Content Packaging" that allows to create portable packages of repository content. The Vault Command Line Interface aka "vlt" provides a subversion like utility to work and develop with repository content.
+
+
+This is a rather large contribution of code that was developped over 5 years and consists of 450 Java classes and interfaces.
+
+
+
+- Apache Jackrabbit PMC will be responsible for the code
+
+
+- This is a contribution into Apache Jackrabbit
+
+
+- Officer or member managing donation: Tobias Bocanegra (tripod@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-07-08 | tarball provided at: people.apache.org:/home/tripod/contrib/filevault/filvault-asf-contrib-2013-07-08.tgz<br></br>Detached Signature signed with (RSA Key ID 2E183FB4): people.apache.org:/home/tripod/contrib/filevault/filvault-asf-contrib-2013-07-08.tgz.asc<br></br> |
+
+MD5 or SHA1 sum for donated software: 7bb22077a9ef44a1413d3f226cdc72a33995baf1 (SHA1).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-08-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-07-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems Incorporated_ 
+
+| date | item |
+|------|------|
+| 2013-07-08 | Check that all active committers have a signed CLA on record. |
+|  [2013-08-05](http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/201308.mbox/%3CCAB%2BdfimrAHANM3o%3DYWc1hbG%3DDyqvQJPw%3DxDryMmbPXurtvmneQ%40mail.gmail.com%3E)  | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| .2013-08-05 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-08-05 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on dev@jackrabbit.apache.org](http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/201308.mbox/%3CCAB+dfiknHR3gpNzeee3K867jcC1E5Z7XZt3m0d2fqfbuExiByQ@mail.gmail.com%3E) 
diff --git a/content/jackrabbit.md b/content/jackrabbit.md
deleted file mode 100644
index fd83c1d..0000000
--- a/content/jackrabbit.md
+++ /dev/null
@@ -1,220 +0,0 @@
-Title: jackrabbit
-
-
-Jackrabbit has graduated incubation. For more information, please see the [Apache Jackrabbit](http://jackrabbit.apache.org/) project.
-
-
-<span class="graduated">The Jackrabbit project graduated on 2006-03-15</span>
-
-
-The Jackrabbit podling has been formed to develop an open source implementation of the Content Repository for Java Technology API (JCR), as specified within the Java Community Process as [JSR 170](http://www.jcp.org/en/jsr/detail?id=170) and [JSR 283](http://www.jcp.org/en/jsr/detail?id=283) . [Day Software](http://www.day.com/) , the JCR specification lead, has licensed an initial implementation of the JCR reference implementation for use as seed code for this project. JCR specifies an API for application developers (and application frameworks) to use for interaction with modern content repositories -- content management systems that provide content services such as versioning, transactions, indexing, workflow, etc.
-
-
-Jackrabbit's implementation began as a proposal within the [Jakarta Slide](http://jakarta.apache.org/slide/index.html) project, but has since attracted interest from multiple projects with the [Apache Software Foundation](http://www.apache.org/) , including Slide, Cocoon, Lenya, Graffito, XML Indexing, and Derby. We are also looking at integration with projects such as Maven and Beehive.
-
-
-The purpose of this incubation period is to attract additional contributors from other Apache projects and from the various JSR 170 and 283 expert group companies, learn the Apache way of doing things, and allow the developers to focus on this interface/implementation rather than all of the existing projects that might want to use it. We hope to improve collaboration on the code base by moving all of the active developers and authors to Apache, bring in as many of the Apache veterans as wish to get involved, and open it up to all of the 22 expert group companies. Development of the JCR RI and TCK will occur in this project -- Day Software plans to continue participation in Jackrabbit and use the code in the official RI and TCK releases, allowing developers to beta test against the open source versions as well as the official versions.
-
-
-
-- 2006 Mar 15: Incubator PMC approves graduation to new TLP
-
-- 2006 Mar 15: ASF Board approves new Apache Jackrabbit project
-
-- 2006 Mar 11: Committers vote to request incubator graduation
-
-- 2006 Feb 14: Apache Jackrabbit 0.9 released
-
-- 2004 Aug 28: Proposal accepted by Incubator PMC
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://jackrabbit.apache.org/jackrabbit/](http://jackrabbit.apache.org/jackrabbit/)  |
-|  | wiki |  [http://wiki.apache.org/jackrabbit/](http://wiki.apache.org/jackrabbit/)  |
-| Mailing list | dev | dev jackrabbit.apache.org |
-|  | cvs | commits jackrabbit.apache.org |
-|  | pmc | private jackrabbit.apache.org |
-| Bug tracking | Jira | JCR-* |
-| Source code | Subversion | jackrabbit/ |
-| Committers | tripod | Tobias Bocanegra |
-|  | fielding |  [Roy T. Fielding](http://roy.gbiv.com/) (mentor) |
-|  | stefan | Stefan Guggisberg |
-|  | shuber | Serge Huber |
-|  | fmeschbe | Felix Meschberger |
-|  | bcm | Brian Moseley |
-|  | uncled | David Nuescheler |
-|  | dpfister | Dominique Pfister |
-|  | ppiegaze | Peeter Piegaze |
-|  | edgarpoce | Edgar Poce |
-|  | mreutegg | Marcel Reutegger |
-|  | angela | Angela Schreiber |
-|  | sylvain | Sylvain Wallez |
-|  | jukka | Jukka Zitting |
-| Emeritus | stefano | Stefano Mazzocchi (mentor) |
-|  | gianugo | Gianugo Rabellino |
-|  | prussell | Paul Russell |
-|  | treilly | Tim Reilly |
-|  | asavory | Andrew Savory |
-
-# 2006/03/13 {#Status20060313}
-
-Jackrabbit accomplished its first official incubating release with version 0.9 of the Apache Jackrabbit reference implementation and JCR-RMI tools. Day Software has confirmed that the version 0.9 jars have passed the JCR 1.0 TCK with the current exclude list.
-
-
-We are now getting reorganized for graduation from the Incubator to our own top-level project at the Apache Software Foundation. The Jackrabbit committers voted on March 11, 2006, to request graduation. In addition, we made a call to refresh the list of active committers for an accurate presentation to the board; Stefano Mazzocchi, Gianugo Rabellino, Paul Russell, Tim Reilly, and Andrew Savory have requested emeritus status, meaning that they won't be listed on the initial project management committee but are welcome to come back if they choose to rejoin the project at a later time.
-
-
-# 2006/01/18 {#Status20060118}
-
-Jackrabbit added four new committers to the project this quarter:
-
-
-
-- Serge Huber
-
-- Felix Meschberger
-
-- Brian Moseley
-
-- Angela Schreiber
-
-in recognition of their outstanding and sustained contributions to the project. Jukka Zitting has volunteered to be the RM for our first set of incubating releases. We plan to seek graduation from incubator as soon as we have a track record for a successful release vote.
-
-
-# 2005/10/26 {#Status20051026}
-
-The Apache Jackrabbit podling is slowly recovering from the impact of finalizing JSR 170, initializing JSR 283 (the next JCR specification revision EG), and the summer holiday schedule. We are in the process of reconfiguring our source directories for an eventual 1.0 release and Maven 2 support. No new committers were added this quarter, though we expect more to be added soon.
-
-
-# 2005/07/15 {#Status20050715}
-
-Jackrabbit has attracted public interest from many different projects, both open source and commercial in nature, and has over 250 people reading the developer list. During the past quarter we added one new committer, Edgar Poce, and cleared the minimum threshold of three independent committers.
-
-
-The big news is that JCR, the Content Repository for Java Technology 1.0 API, has been completed by the JSR 170 expert group and received final approval from the J2SE/EE executive committee at the end of May. We are currently working on restructuring the Jackrabbit project directories in preparation of an eagerly anticipated first release candidate and passing the official TCK, at which point we are hoping to graduate from Incubator to TLP status for the 1.0 release.
-
-
-# 2005/04/25 {#Status20050425}
-
-Jackrabbit is doing well as a project and is attracting interest both within other Apache projects (Lenya and Graffito in particular) as well as from new folks in the Java community. We added two new committers, Jukka Zitting and Dominique Pfister, and have received sustained contributions from Serge Huber, Edgar Poce, Angela Schreiber, Felix Meschberger, and others.
-
-
-Jackrabbit's only problem right now is continued reliance on JCP EG private discussions due to the unfinished nature of the JSR 170 Content Repository for Java Technology API. JSR 170 is expected to be submitted for final draft status in early May, after which all of the discussion can be moved to Apache lists. We anticipate graduating from Incubator sometime soon after that.
-
-
-# 2004/11/17 {#Status20041117}
-
-The Jackrabbit project has completed all of the Incubator checklist items in terms of moving to Apache and getting the IP transfer done. With the help of Maven, we have a full website set up at
-
-
- [http://incubator.apache.org/jackrabbit/](http://incubator.apache.org/jackrabbit/) 
-
-
-with a few link bugs due to the svn/viewcvs integration. Our big task from now to graduation is to get the community more involved in development, planning features, integrating with some of the DB projects, and scoping out interesting applications to build on top of the interface.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2004-09-06 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. (fielding) |
-| 2004-08-28 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. (fielding) |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2004-08-28 | Identify all the Mentors for the incubation, by asking all that can be Mentors. (fielding) |
-| 2004-08-28 | Subscribe all Mentors on the pmc and general lists. (fielding) |
-| 2004-08-28 | Give all Mentors access to all incubator CVS modules. (fielding) |
-| 2004-08-28 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' (fielding) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2004-09-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. (fielding) |
-| 2004-09-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. (fielding) |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2004-09-28 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. (fielding) |
-| 2004-09-28 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.(fielding) |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|------|------|
-| 2004-09-13 | Check that all active committers have submitted a contributors agreement. (fielding) |
-| 2004-09-13 | Add all active committers in the STATUS file. (fielding) |
-| 2004-09-13 | Ask root for the creation of committers' accounts on cvs.apache.org. (fielding) |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|------|------|
-| 2004-09-14 | Ask infrastructure to create source repository modules and grant the committers karma. (fielding) |
-| 2004-09-08 | Ask infrastructure to set up and archive Mailing lists. (fielding) |
-| 2004-09-14 | Decide about and then ask infrastructure to setup an issuetracking system (Jira). (fielding) |
-| 2004-09-28 | Migrate the project to our infrastructure. (stefan) |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **Yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **Yes** 
-
-- Are project decisions being made in public by the committers? **Yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **Yes** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **Yes** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here. **None** _ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#acceptance}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? **n/a** 
-
-- If graduating to a new PMC, has the board voted to accept it? **Yes** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? **Yes** 
diff --git a/content/jakarta-cactus-tahchiev.md b/content/jakarta-cactus-tahchiev.md
new file mode 100644
index 0000000..b7e3dc5
--- /dev/null
+++ b/content/jakarta-cactus-tahchiev.md
@@ -0,0 +1,69 @@
+Title: Cactus Codebase Intellectual Property (IP) Clearance Status
+
+
+Cactus is an existing project at Jakarta. It was tempoarily outside the ASF repositiries, but on the sourceforge where we tested the new maven build system:
+
+- maven2 build system: A bunch of pom.xml's that automate the cactus build process.
+
+- maven2 plugin: Initial implementation of the "cactify" and "webxmlmerge" mojos.
+
+- cactus-site: A number of xdoc xml's that are transformed to html's using maven2.
+
+
+
+The contributed code can be found at [https://mamouth.svn.sourceforge.net/svnroot/mamouth/Cactus/](https://mamouth.svn.sourceforge.net/svnroot/mamouth/Cactus/) and will be completely ported back to the current Jakarta Cactus codebase.
+
+
+
+- Which PMC will be responsible for the code: Apache Jakarta
+
+
+- Into which existing project/module: Cactus
+
+
+- Officer or member managing donation: Martin van den Bemt
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| NA | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Complete move from sourceforge to Apache Jakarta Cactus. See [https://mamouth.svn.sourceforge.net/svnroot/mamouth/Cactus/](https://mamouth.svn.sourceforge.net/svnroot/mamouth/Cactus/) 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-03-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-03-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Cactus Maven2 Build System ...
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Petar Tahchiev
+
+
+| date | item |
+|------|------|
+| 2007-03-15 | Check that all active committers have a signed CLA on record. |
+| 2007-03-15 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-03-15 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-03-15 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Acceptance vote of code donation was finalised on 2007-04-22. See [http://www.mail-archive.com/cactus-dev@jakarta.apache.org/msg08612.html](http://www.mail-archive.com/cactus-dev@jakarta.apache.org/msg08612.html) 
diff --git a/content/jakarta-commons-composite-pool.md b/content/jakarta-commons-composite-pool.md
new file mode 100644
index 0000000..ad444f9
--- /dev/null
+++ b/content/jakarta-commons-composite-pool.md
@@ -0,0 +1,65 @@
+Title: Jakarta Composite Pool Intellectual Property (IP) Clearance Status
+
+
+ _Composite implementation of Jakarta Commons Pool_ is an extension to the existing Jakarta Commons Pool component. This codebase factors out common features of object pools and allows users to create pools with exact feature set they want.
+
+
+
+- Which PMC will be responsible for the code: **Jakarta** 
+
+
+- Into which existing project/module: **Jakarta Commons** 
+
+
+- Officer or member managing donation: Robert Burrell Donkin (rdonkin@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-02-26 | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+MD5 sum for donated software: **aaa5ffe2c1413ed1ece266663a4764f8** (OpenSSL 0.9.7d).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-02-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-03-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant:
+
+<quote> `
+William A. McArthur, Jr. / Representing Self
+    "Composite implementation of Jakarta Commons Pool:
+      http://sandy.mcarthur.org/pool/grant/macarthur-composite-pool.tar"
+` </quote>
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- William A. McArthur Jr. _sandymac@apache.org_ 
+
+| date | item |
+|------|------|
+| 2006-02-26 | Check that all active committers have a signed CLA on record. |
+| 2006-02-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-02-26 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-02-26 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it? [Yes](http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/200602.mbox/%3c1140982594.5038.14.camel@knossos.elmet%3e) 
+
+- Subversion URL for official record of initial codebase: [http://svn.apache.org/repos/asf/jakarta/grants/macarthur-composite-pool.tar](http://svn.apache.org/repos/asf/jakarta/grants/) .
diff --git a/content/jakarta-commons-csv.md b/content/jakarta-commons-csv.md
new file mode 100644
index 0000000..018c1aa
--- /dev/null
+++ b/content/jakarta-commons-csv.md
@@ -0,0 +1,68 @@
+Title: Jakarta Commons CSV Intellectual Property (IP) Clearance Status
+
+
+ _Implementation of a CSV (Comma Separated Values) parser in Java._ 
+
+
+
+- Which PMC will be responsible for the code: **Jakarta** 
+
+
+- Into which existing project/module: **Jakarta Commons** 
+
+
+- Officer or member managing donation: Henri Yandell (bayard@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| not applicable | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+MD5 sum for donated software: **aaa5ffe2c1413ed1ece266663a4764f8** (OpenSSL 0.9.7d).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2005-12-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2005-12-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant:
+
+<quote> `
+Netcetera AG / Joachim Hagger, CTO
+   "CSV parsing and printing software including test and build
+    files (all delivered as source code). The file contributed is
+    found at:
+      ftp:ftp.netcetera.ch/pub/csvparser.jar
+    Dated 2005-06-05, 10:42:00, size 42KB"      
+` </quote>
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Netcetera AG. (Our contact: Stefan Rufer ( _stefan.rufer@netcetera.ch_ ))
+
+| date | item |
+|------|------|
+| not applicable | Check that all active committers have a signed CLA on record. |
+| not applicable | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| not applicable | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| not applicable | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it? [Yes](http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/200508.mbox/%3c31cc37360508312212278c97c5@mail.gmail.com%3e) 
+
+- Subversion URL for official record of initial codebase: [(not currently available)](http://svn.apache.org/repos/asf/jakarta/grants/) .
diff --git a/content/jakarta-commons-mantissa.md b/content/jakarta-commons-mantissa.md
new file mode 100644
index 0000000..31a6a75
--- /dev/null
+++ b/content/jakarta-commons-mantissa.md
@@ -0,0 +1,56 @@
+Title: Jakarta Commons Mantissa Clearance Status
+
+
+Mantissa is a Java mathematics library including implementations for various standard numerical analysis and linear algebra algorithms.
+
+
+
+- The Jakarta PMC will be responsible for the code
+
+
+- The Mantissa code will **NOT** constitute a new project under the Jakarta TLP, or a new Jakarta Commons component, but will be incorporated into the existing Jakarta Commons Math code base.
+
+
+- Officer or member managing donation: Phil Steitz
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-10-22 | Mantissa: the name is NOT significant since Mantissa will not become a separate product but will be integrated directly into Jakarta Commons Math |
+
+MD5 hash for donated software: f9ecc079d79d2e0009a7b97e95d1e8de mantissa-for-commons-math.zip
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| Needs update | Software grant filed with Secretary, needs update to reflect MD5, mods |
+| Verification in progress | New ASF copyright has been assigned in file headers. |
+
+Identify name recorded for software grant: Pending
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2006-10-22 | Check that all active committers have a signed CLA on record. |
+| 2006-10-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-10-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-10-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://www.mail-archive.com/commons-dev@jakarta.apache.org/msg85445.html
diff --git a/content/jaxme.md b/content/jaxme.md
deleted file mode 100644
index 7a71bf0..0000000
--- a/content/jaxme.md
+++ /dev/null
@@ -1,209 +0,0 @@
-Title: jaxme
-
-
-This page tracks the project status, incubator-wise. Items marked **DONE** have been completed.
-
-
-<span class="graduated">The JaxMe project graduated on 2004-03</span>
-
-
-The website for JaxMe is at http://ws.apache.org/jaxme/
-
-
-
-- Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
-
-On 20-Dec-2003 we have checked for the name JaxMe on www.nameprotect.com using the free online research form. The domain name search found the following names, none of which seems to be in conflict:
-
-
-jaxmed.com jaxmetro.(com|net) jaxmetals.com jaxmeier.com jaxmerc.com jaxmedicalinjury.com jaxmediator.com jaxmedal.com jaxmetrolive.com jaxmedical.com jaxmedia.com jaxmediaweb.com jaxmenusonline.com jaxmetroforddealers.com jaxmenus.com jaxmedicalpractice.com jaxmetal.com jaxmediaonline.com jaxmetroford.com ajaxmetal.com viajaxmenos.com ajaxmedia.com ajaxmetalstamping.com krackerjaxmedia.com
-
-
-Search for US federal or canadian trademarks found no results.
-
-
-DONE
-
-
-
-- If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names.
-
-See http://marc.theaimsgroup.com/?t=106198386600001&amp;r=1&amp;w=2
-
-
- **DONE** 
-
-
-
-- Who has been identified as the shepherd for the incubation?
-
-Davanum Srinivas, dims@yahoo.com
-
-
- **DONE** 
-
-
-
-- Are they tracking progress?
-
-Progress is tracked in
-
-
-incubator/site/projects/jaxme.cwiki
-
-
- **DONE** 
-
-
-
-- Have the papers that transfer rights to the ASF been received? It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
-
-According to [jaxme/JaxMe2/docs/Design.html](http://cvs.sourceforge.net/viewcvs.py/*checkout*/jaxme/JaxMe2/docs/Design.html?rev=1.6#pastvotes) the ASF is the legal owner of all sources that have been checked in initially. New code and updates are produces by committers only who have signed a CLA.
-
-
- **DONE** 
-
-
-
-- Have the files been updated to reflect the new ASF copyright?
-
-All Java source files have an ASF copyright notice included.
-
-
- **DONE** 
-
-
-Verify distribution rights:
-
-
-
-- For all code included with the distribution that is not under the Apache license, do we have the right to combine with Apache-licensed code and redistribute?
-
-The distribution includes the JaxMe jar files and the following files:
-
-
-ant.jar (Ant) junit.jar (Jakarta JUnit) log4j.jar (Jakarta Log4J) xercesImpl.jar (XML Xerces) xml-apis.jar xmldb-api-*.jar (XML Xindice) hsqldb.jar
-
-
-Proper license files are also included.
-
-
- **DONE** 
-
-
-
-- Is all source code distributed by the project covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms?
-
- **DONE** 
-
-
-
-- Are all active committers in the STATUS file?
-
-Active committers are: Davanum Srinivas, dims@yahoo.com Jochen Wiedmann, joe@ispsoft.de Ias, ias@apache-korea.org Robert Burell Donkin, rdonkin@apache.org
-
-
- **DONE** 
-
-
--*Do they have accounts on cvs.apache.org?
-
-
-Yes
-
-
- **DONE** 
-
-
-
-- Have they submitted a contributors agreement?
-
-Yes
-
-
- **DONE** 
-
-
-
-- CVS modules created and committers added to avail file?
-
-The CVS module is ws-jaxme and in active use.
-
-
- **DONE** 
-
-
-
-- Mailing lists set up and archived?
-
-The mailing list is jaxme-dev@ws.apache.org. It receives notifications from CVS and Bugzilla. Mailing list is archived in Eyebrowse and on marc.theaimsgroup.com.
-
-
- **DONE** 
-
-
-
-- Problem tracking system (Bugzilla)?
-
-Bugzilla is up and running, a project ws-jaxme and associated components have been created.
-
-
- **DONE** 
-
-
-
-- Has the project migrated to our infrastructure?
-
-See above.
-
-
- **DONE** 
-
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-All active committers and contributors of JaxMe 2 (sf.net) are now active committers on ws-jaxme. There are active committers left which are only working on JaxMe 1. It is anticipated, that they migrate at some point, but so far they have expressed no interest.
-
-
- **DONE** 
-
-
-
-- Are there three or more independent committers?
-
-The active committers indicated above are completely independent.
-
-
- **DONE** 
-
-
-
-- Are project decisions being made in public by the committers?
-
-Yes, for example Ias was accepted as a new committer.
-
-
- **DONE** 
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-No special guidelines have been published. The Apache style of development is known to us all and silently accepted.
-
-
- **DONE** 
-
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-Yes. See http://marc.theaimsgroup.com/?t=106198386600001&amp;r=1&amp;w=2
-
-
- **DONE** 
-
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/jclouds.md b/content/jclouds.md
deleted file mode 100644
index aa0249a..0000000
--- a/content/jclouds.md
+++ /dev/null
@@ -1,200 +0,0 @@
-Title: jclouds Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The jclouds project graduated on 2013-10-16</span>
-
-
-The jclouds Project is a cloud agnostic library that enables developers to access a variety of supported cloud providers using one API.
-
-
-
-- 2013-10-16 Graduation resolution [passed unanimously](http://apache.markmail.org/thread/rfhojamhg2grbicp) by the Board. Thanks to everyone at the Incubator for helping us get here!
-
-- 2013-09-20 Incubator [graduation vote](http://apache.markmail.org/thread/33m3csqtonmjlu5z) underway!
-
-- 2013-08-28 1.6.2-incubating [released](http://apache.markmail.org/thread/pls7bnhfxxlgszy6) .
-
-- 2013-08-13 IPMC vote on 1.6.2-incubating RC1 [started](http://apache.markmail.org/thread/az4c4zsczzu327jf) .
-
-- 2013-08-02 1.6.2-incubating release [underway](http://markmail.org/message/36oamsojtjlozh2j) !
-
-- 2013-07-24 Getting ready for the 1.6.2-incubating release according to the jclouds [release cadence](http://apache.markmail.org/thread/i46uasmenb5b53bm) .
-
-- 2013-07-16 Proposal for jclouds [project bylaws](https://wiki.apache.org/jclouds/Bylaws) .
-
-- 2013-06-19 1.6.1-incubating [released](http://apache.markmail.org/thread/dvj6czipkcpxro7n) . First Apache version!
-
-- 2013-06-13 About to prepare RC3 of first release.
-
-- 2013-04-29 jclouds enters incubation.
-
-
-- Main website: [http://jclouds.incubator.apache.org/](http://jclouds.incubator.apache.org/) 
-
-
-- How to participate: [http://jclouds.incubator.apache.org/documentation/devguides/](http://jclouds.incubator.apache.org/documentation/devguides/) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://jclouds.org/](http://jclouds.org/) <br></br> [http://jclouds.incubator.apache.org/](http://jclouds.incubator.apache.org/)  |
-| . | wiki |  [http://wiki.apache.org/jclouds/FrontPage](http://wiki.apache.org/jclouds/FrontPage) <br></br> |
-| Mailing list | dev |  `dev`  `@`  `jclouds.incubator.apache.org`  |
-| . | users |  `user`  `@`  `jclouds.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `jclouds.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `jclouds.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/JCLOUDS](https://issues.apache.org/jira/browse/JCLOUDS)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-jclouds.git](https://gitbox.apache.org/repos/asf/incubator-jclouds.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-cli.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-cli.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds-cli/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-chef.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-chef.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds-chef/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-examples.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-examples.git)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-karaf.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-karaf.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds-karaf/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-labs.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-labs.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds-labs/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-labs-google.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-labs-google.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds-labs-google/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-labs-aws.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-labs-aws.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds-labs-aws/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-labs-openstack.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-labs-openstack.git)  [](https://jclouds.ci.cloudbees.com/job/jclouds-labs-openstack/)  |
-| . | . |  [https://gitbox.apache.org/repos/asf/incubator-jclouds-site.git](https://gitbox.apache.org/repos/asf/incubator-jclouds-site.git)  |
-| Mentors | brianm | Brian McCallister |
-| . | tomwhite | Tom White |
-| . | henning | Henning Schmiedehausen |
-| . | ke4qqq | David Nalley |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | mnour | Mohammad Nour El-Din |
-| . | olamy | Olivier Lamy |
-| . | tomaz | Tomaz Muraus |
-| . | smaru | Suresh Marru |
-| . | carlos | Carlos Sanchez |
-| Committers | nacx | Ignasi Barrera |
-|  | abayer | Andrew Bayer |
-|  | iocanel | Ioannis Canellos |
-|  | adriancole | Adrian Cole |
-|  | gaul | Andrew Gaul |
-|  | mattstep | Matt Stephenson |
-|  | everett | Everett Toews |
-|  | silkysun | Becca Wood |
-|  | andrewp | Andrew Phillips |
-| Extra | CI status |  [https://jclouds.ci.cloudbees.com](https://jclouds.ci.cloudbees.com/)  |
-|  | Javadocs for HEAD |  [http://javadocs.jclouds.cloudbees.net](http://javadocs.jclouds.cloudbees.net/)  |
-|  | Javadocs for labs HEAD |  [http://javadocs-labs.jclouds.cloudbees.net/](http://javadocs-labs.jclouds.cloudbees.net/)  |
-|  | . | . |
-
-
--  [July 2013 Report](http://wiki.apache.org/incubator/July2013) 
-
--  [June 2013 Report](http://wiki.apache.org/incubator/June2013) 
-
--  [May 2013 Report](http://wiki.apache.org/incubator/May2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-04-16 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| NA....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-04-29 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-05-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-04-30 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-05-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-05-28 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-07-09 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-05-06 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-05-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-05-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-05-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-05-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-06-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-06-19 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-06-19 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-06-19 | Check that all active committers have submitted a contributors agreement. |
-| 2013-06-19 | Add all active committers in the STATUS file. |
-| 2013-06-19 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/jdo.md b/content/jdo.md
deleted file mode 100644
index 1c8ee38..0000000
--- a/content/jdo.md
+++ /dev/null
@@ -1,146 +0,0 @@
-Title: Apache JDO Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status related to incubation. For more general project status, look on the project website.
-
-
-<span class="graduated">The JDO project graduated on 2005-12-09</span>
-
-
-The Apache JDO Project plan is to migrate the existing JDO 1.0 code base, including the API, RI, and TCK to Apache. Subsequently, development on JDO 2.0 will commence, using the JDO 1.0 code as a starting point. The API and TCK will be implemented entirely as Apache sub-projects. The licenses will be changed to be Apache licenses.<br></br>
-
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/jdo/](http://incubator.apache.org/jdo/)  |
-| . | wiki |  [http://wiki.apache.org/jdo/](http://wiki.apache.org/jdo/) <br></br> |
-| Mailing list | dev | jdo-dev@db.apache.org |
-| . | svn | jdo-commits@db.apache.org |
-| Bug tracking | JIRA<br></br> | http://issues.apache.org/jira/browse/JDO<br></br> |
-| Source code | svn<br></br> | incubator/jdo<br></br> |
-| Mentors | <br></br> | Geir Magnusson Jr.<br></br> |
-| Committers<br></br> | <br></br> | Craig Russell<br></br> |
-| <br></br> | <br></br> | Dain Sundstrom<br></br> |
-| <br></br> | <br></br> | Erik Bengston<br></br> |
-| <br></br> | <br></br> | Geir Magnusson Jr.<br></br> |
-| <br></br> | <br></br> | Brian McCallister<br></br> |
-| <br></br> | <br></br> | Michael Bouschen<br></br> |
-| <br></br> | <br></br> | Martin Zaun<br></br> |
-| <br></br> | <br></br> | Matthew Adams<br></br> |
-| <br></br> | <br></br> | Michael Watzek<br></br> |
-| <br></br> | <br></br> | Michelle Caisse<br></br> |
-| <br></br> | <br></br> | Patrick Linskey<br></br> |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2004-12-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A<br></br> | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2004-12-02<br></br> | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-12-06 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2005-01-05<br></br> | Subscribe all Mentors on the pmc and general lists. |
-| 2005-01-05<br></br> | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2005-01-05<br></br> | Tell Mentors to track progress in the file 'site-author/projects/jdo.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2005-03-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-12-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2004-12-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2004-12-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2005-03-16 | Check that all active committers have submitted a contributors agreement. |
-| 2005-03-16 | Add all active committers in the STATUS file. |
-| 2005-03-16 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2005-01-03<br></br> | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-01-03<br></br> | Ask infrastructure to set up and archive Mailing lists. |
-| 2005-01-03<br></br> | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2005-03-18<br></br> | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness  {#Licensing+awareness%C2%A0}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/jena-hadoop-rdf-tools.md b/content/jena-hadoop-rdf-tools.md
new file mode 100644
index 0000000..43b1fc3
--- /dev/null
+++ b/content/jena-hadoop-rdf-tools.md
@@ -0,0 +1,58 @@
+Title: Jena Hadoop RDF Tools (IP) Clearance Status
+
+
+Hadoop RDF Tools is a set of new modules for the Apache Jena project which provide the necessary building blocks to make it easy to write Hadoop applications that consume/produce RDF.
+
+
+
+- Which PMC will be responsible for the code: Apache Jena
+
+
+- Into which existing project/module: Apache Jena
+
+
+- Officer or member managing donation: Andy Seaborne
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-04-01 | Attached to [JENA-666](https://issues.apache.org/jira/browse/JENA-666) as **Hadoop-RDF-Tools.patch** which patches the Jena SVN in Experimental area at [svn.apache.org/repos/asf/jena/Experimental/hadoop-rdf/](http://svn.apache.org/repos/asf/jena/Experimental/hadoop-rdf/) where the code will live until it is ready for inclusion in mainline Jena. |
+
+MD5 or SHA1 sum for donated software: SHA1(Hadoop-RDF-Tools.patch)= 5c06123ce4853c1f9674d4e3901f91d1c6331539 - MD5 (Hadoop-RDF-Tools.patch) = b10fd59e6049a5c9d0b3482a55f20240 - Both generated with OpenSSL 1.0.1e 11 Feb 2013
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-04-01 | Code was developed by Rob Vesse (Apache ID rvesse) who is a PMC member on Apache Jena and has an ICLA on file and is being donated by his employer Cray Inc who have a CCLA on file that names him specifically. |
+| 2014-04-08 | All code files now have standard ASF headers, license headers added to other relevant files (POMs, XML etc). RAT report is clean. |
+
+Identify name recorded for software grant: N/A (See [legal-discuss](http://s.apache.org/YPe) thread
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+| date | item |
+|------|------|
+| 2014-04-01 | Single committer Rob Vesse (Apache ID rvesse) has an ICLA on file |
+| 2014-04-01 | Rob Vesse's employer Cray Inc has a CCLA on file that names him and has agreed to donate the code to the Apache Jena under the existing ICLA and CCLA |
+| 2014-04-08 | There is no non-Apache licensed code present in the donated software |
+| 2014-04-08 | All dependencies are other Apache projects or open source projects under the Apache License |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Jena PMC Vote Result](http://s.apache.org/IeP) - Passed with 4 +1s from PMC Members, no -1s
+
+-  [Incuabtor Vote Result](http://s.apache.org/mys) - Passed by Lazy Consensus from Incubator PMC Members, 0 +1s, no -1s
diff --git a/content/jena.md b/content/jena.md
deleted file mode 100644
index 25b07b1..0000000
--- a/content/jena.md
+++ /dev/null
@@ -1,183 +0,0 @@
-Title: Jena Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Jena project graduated on 2012-04-18</span>
-
-
-Jena is a Java framework for building Semantic Web applications. It provides a programmatic environment for RDF, RDFS and OWL, SPARQL and includes a rule-based inference engine.
-
-
-
--  **2012-04-18 Apache Jena has graduated as a Top Level Project** 
-
-- 2012-04-23 Release: Jena LARQ 1.0.0-incubating ( [Announcement](http://mail-archives.apache.org/mod_mbox/incubator-jena-users/201204.mbox/%3C4F95CCFF.4010704%40googlemail.com%3E) )
-
-- 2012-03-23 Release: Jena Fuseki 0.2.1-incubating ( [Announcement](http://mail-archives.apache.org/mod_mbox/incubator-jena-users/201203.mbox/%3C4F6C41FC.2080208%40apache.org%3E) )
-
-- 2012-03-10 Release: Jena TDB 0.9.0-incubating ( [Announcement](http://mail-archives.apache.org/mod_mbox/www-announce/201203.mbox/%3C4F5B954D.7010602%40apache.org%3E) )
-
-- 2012-03-01 New committer and PPMC member: Rob Vesse
-
-- 2011-12-23 Release: Jena 2.7.0-incubating ( [Announcement](http://mail-archives.apache.org/mod_mbox/www-announce/201112.mbox/%3C4EF473C3.4050604%40apache.org%3E) )
-
-- 2011-11-21 New Commiter and PPMC Member: Stephen Allen.
-
-- 2011-05 Initial website live.
-
-- 2010-11-23 Jena enters incubation.
-
-
--  [Jena website](http://incubator.apache.org/jena/) 
-
--  [Getting involved in Apache Jena](http://incubator.apache.org/jena/getting_involved/) 
-
--  [Jena tracker (JIRA)](https://issues.apache.org/jira/browse/JENA) 
-
-- User and support mailing list: `jena-users`  `@`  `incubator.apache.org` 
-
-- Developers mailing list: `jena-dev`  `@`  `incubator.apache.org` 
-
-| item | reference |
-|------|-----------|
-| Website |  [http://incubator.apache.org/jena/](http://incubator.apache.org/jena/)  |
-| wiki |  [JENA @ confluence](https://cwiki.apache.org/confluence/display/JENA/Index)  |
-| Dev mailing list |  `jena-dev`  `@`  `incubator.apache.org`  |
-| User mailing list |  `jena-users`  `@`  `incubator.apache.org`  |
-| Commit mailing list |  `jena-commits`  `@`  `incubator.apache.org`  |
-| PPMC mailing list |  `jena-private`  `@`  `incubator.apache.org`  |
-| Bug tracking |  [JIRA](https://issues.apache.org/jira/browse/jena)  |
-| SVN |  [https://svn.apache.org/repos/asf/incubator/jena/](https://svn.apache.org/repos/asf/incubator/jena/)  |
-| Active codebase |  [ASF Jena2 SVN](https://svn.apache.org/repos/asf/incubator/jena/Jena2/)  |
-| Imported (with sfotware grants) |  [old svn @ sourceforge](https://svn.apache.org/repos/asf/incubator/jena/Import/)  |
-| Proposal |  [JenaProposal](http://wiki.apache.org/incubator/JenaProposal)  |
-| Vote thread |  [on general@incubator](http://mail-archives.apache.org/mod_mbox/incubator-general/201011.mbox/%3C4CE3D42C.3030001@apache.org%3E)  |
-| Committers | (All committers are currently PPMC members as well) |
-|  | Andy Seaborne (andy) |
-|  | Ian Dickinson (ijd) |
-|  | Damian Steer (damian) |
-|  | Dave Reynolds (der) |
-|  | Paolo Castagna (castagna) |
-|  | Stephen Allen (sallen) |
-|  | Rob Vesse (rvesse) |
-|  | Chris Dollin (chrisdollin) |
-| Incubation Mentors |  |
-|  | Leo Simons (leosimons) |
-|  | Benson Margulies (bimargulies) |
-|  | Bertrand Delacretaz (bdelacretaz) |
-|  | Ross Duncan Gardler (rgardler) |
-
-
-- Jena reports Aug/Nov/Feb/May
-
--  [February 2012](http://wiki.apache.org/incubator/February2012) 
-
--  [Nov 2011](http://wiki.apache.org/incubator/November2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| N/A - well-established existing project | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2010-12-02 (from proposal) | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ages ago | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-|  [INFRA-3255](https://issues.apache.org/jira/browse/INFRA-3255)  | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-12-01 | Filed infra jira [INFRA-3255](https://issues.apache.org/jira/browse/INFRA-3255) . |
-| 2011-05-13 |  [Code import from sourceforge](https://svn.apache.org/repos/asf/incubator/jena/Import/)  |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-11-23 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-11-25 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-11-25 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-12-02 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-11-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-11-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-11-20 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-11-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-12-06 | Check that all active committers have submitted a contributors agreement. |
-| 2012-03-08 | Added all active committers in the STATUS file (this page). |
-| 2011-12-06 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/jmeter-dashboard-report.md b/content/jmeter-dashboard-report.md
new file mode 100644
index 0000000..4e3be18
--- /dev/null
+++ b/content/jmeter-dashboard-report.md
@@ -0,0 +1,76 @@
+Title: JMeter Dashboard/ Report Codebase Intellectual Property (IP) Clearance Status
+
+
+JMeter Dashboard/ Report is a new set of classes, HTML, Javascript, CSS and freemarker pages that allow generation of a report for a Load Test at end of Load Test or on an existing CSV result file. It generates a standalone HTML page with dynamic graphs and tables to show response times, APDEX,
+
+
+
+- Which PMC will be responsible for the code : Apache JMeter PMC
+
+
+- Into which existing project/module: Apache JMeter
+
+
+- Officer or member managing donation: Bruno Demion (milamber)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-11-25 | 
+Tag 2.14-preview-ubikloadpack-2.0.0 at https://github.com/ubikloadpack/jmeter
+
+
+Diff from svn trunk r1714327 : http://people.apache.org/~milamber/bug58653/2.14-preview-ubikloadpack-2.0.0.patch.gz
+
+ |
+
+SHA1 sum for donated software (2.14-preview-ubikloadpack-2.0.0.patch.gz): ( _01228d2a63ec954d3f327feda8c07c6825f65b68_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-11-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-11-25 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: in cclas.txt
+
+-  _UBIK-Ingenierie : Signed Corp CLA for Benoit Wiart, Philippe Mouawad, Benoit Vatan, Florent Sabbe for JMeter Dashboard/Report_ 
+
+-  _Decathlon SA : Signed Corp CLA for JMeter Dashboard/Report_ 
+
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _S.A.S. Ubik-Ingenierie_ 
+
+-  _Decathlon SA_ 
+
+| date | item |
+|------|------|
+| 2015-11-25 | Ubik-Ingenierie S.A.S. has signed an initial CCLA. Acknowledged on 30th june 2013. As this CCLA did not contain a Schedule B, they sent a new one on 25th November mentioning this partial sponsoring of the donation and its full development. |
+| 2015-11-27 | Decathlon S.A. has signed CCLA containing a Schedule B mentioning their partial sponsoring of this donation. Acknowledged on 28th november 2015. |
+| 2015-11-25 | All contribution dependencies conform to Apache or Apache compatible license (MIT). |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE [thread](http://mail-archives.apache.org/mod_mbox/jmeter-dev/201511.mbox/%3C5654EC1E.60102%40apache.org%3E) accepting the donation can be found on dev@jmeter.apache.org mailing list or:_  _http://mail-archives.apache.org/mod_mbox/jmeter-dev/201511.mbox/%3C5654EC1E.60102%40apache.org%3E_ 
+
+-  _The IP CLEARANCE - VOTE [thread](http://mail-archives.apache.org/mod_mbox/incubator-general/201512.mbox/%3C56644290.2010307%40apache.org%3E) with the vote results:_  _http://mail-archives.apache.org/mod_mbox/incubator-general/201512.mbox/%3C56644290.2010307%40apache.org%3E_ 
diff --git a/content/johnzon.md b/content/johnzon.md
deleted file mode 100644
index 9baf6fd..0000000
--- a/content/johnzon.md
+++ /dev/null
@@ -1,193 +0,0 @@
-Title: Johnzon Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on [the project website](http://johnzon.incubator.apache.org/) .
-
-
-<span class="graduated">The Johnzon project graduated on 2016-04-20</span>
-
-
-Apache Johnzon is an implementation of JSR-353 (JavaTM API for JSON Processing) and a set of useful extension for this specification like an Object mapper, some JAX-RS providers and websocket (jsr356) integration.
-
-
-
-- 2016-04-20 Resolution to TLP accepted, started graduation process
-
-- 2016-04-12 New committer: Reinhard Sandtner
-
-- 2016-02-17 Apache Johnzon 0.9.3-incubating release
-
-- 2015-09-30 Apache Johnzon 0.9.2-incubating release
-
-- 2015-08-31 Apache Johnzon 0.9.1-incubating release
-
-- 2015-08-17 Apache Johnzon 0.9-incubating release
-
-- 2015-06-12 Apache Johnzon 0.8-incubating release
-
-- 2015-04-09 New PPMC member: Hendrik Saly
-
-- 2015-04-06 Apache Johnzon 0.7-incubating release
-
-- 2015-02-23 Apache Johnzon 0.6-incubating release
-
-- 2015-01-12 Apache Johnzon 0.5-incubating release
-
-- 2014-11-22 Apache Johnzon 0.2-incubating release
-
-- 2014-10-01 Apache Johnzon 0.1-incubating release
-
-- 2014-09-11 Project renamed from fleece to Johnzon
-
-- 2014-08-23 New committer: Hendrik Saly
-
-- 2014-06-09 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://johnzon.incubator.apache.org/](http://johnzon.incubator.apache.org/)  |
-| Releases | source |  [http://www.apache.org/dyn/closer.cgi/incubator/johnzon](http://www.apache.org/dyn/closer.cgi/incubator/johnzon)  |
-| . | bin (via maven) |  [Maven central repository](http://search.maven.org/#browse%7C-1950537353)  |
-| Mailing list | quick subscribe/unsubscribe |  [Quick Subscribe/Unsubscribe](http://johnzon.incubator.apache.org/mail-lists.html)  |
-| . | dev |  `dev`  `@`  `johnzon.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `johnzon.incubator.apache.org`  |
-| . | private |  `private`  `@`  `johnzon.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/JOHNZON](https://issues.apache.org/jira/browse/JOHNZON)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-johnzon.git](https://gitbox.apache.org/repos/asf/incubator-johnzon.git)  |
-| . | github mirror |  [https://github.com/apache/incubator-johnzon](https://github.com/apache/incubator-johnzon)  |
-| Champion | struberg | Mark Struberg |
-| Mentors | jmclean | Justin Mclean |
-| . | dkulp | Daniel Kulp |
-| Committers | rmannibucau | Romain Manni-Bucau |
-| . | grobmeier | Christian Grobmeier |
-| . | jlmonteiro | Jean-Louis Monteiro |
-| . | gpetracek | Gerhard Petracek |
-| . | dblevins | David Blevins |
-| . | sagara | Sagara Gunathunga |
-| . | salyh | Hendrik Saly |
-
-
-- See the project page at [April 2016](http://wiki.apache.org/incubator/April2016) 
-
-- See the project page at [December 2015](http://wiki.apache.org/incubator/December2015) 
-
-- See the project page at [September 2015](http://wiki.apache.org/incubator/September2015) 
-
-- See the project page at [June 2015](http://wiki.apache.org/incubator/June2015) 
-
-- See the project page at [March 2015](http://wiki.apache.org/incubator/March2015) 
-
-- See the project page at [December 2014](http://wiki.apache.org/incubator/December2014) 
-
-- See the project page at [September 2014 (Fleece)](http://wiki.apache.org/incubator/September2014) 
-
-- See the project page at [August 2014 (Fleece)](http://wiki.apache.org/incubator/August2014) 
-
-- See the project page at [July 2014 (Fleece)](http://wiki.apache.org/incubator/July2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-08-30 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) Resolved via [PODLINGNAMESEARCH-53](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-53)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-06-13 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-06-13 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-06-13 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-06-13 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-06-13 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-06-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-06-17 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-06-17 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-06-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-06-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-03-27 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-09-11 | Check that all active committers have submitted a contributors agreement. |
-| 2014-09-11 | Add all active committers in the STATUS file. |
-| done | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-| 2014-09-11 | Project renamed from fleece to Johnzon. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/joshua.md b/content/joshua.md
deleted file mode 100644
index 5b4ce5a..0000000
--- a/content/joshua.md
+++ /dev/null
@@ -1,187 +0,0 @@
-Title: Apache Joshua Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Joshua project graduated on 2018-10-17</span>
-
-
-Joshua is an open-source statistical machine translation toolkit. It includes a Java-based decoder for translating with phrase-based, hierarchical, and syntax-based translation models, a Hadoop-based grammar extractor (Thrax), and an extensive set of tools and scripts for training and evaluating new models from parallel text.
-
-
-
-- 2016-11-16 Michael A. Hedderich (mhedderich) joins the Joshua PPMC + Committership.
-
-- 2016-11-16 Tobias Domhan (tdomhan) joins the Joshua PPMC + Committership.
-
-- 2016-11-02 Max Thomas (mthomas) joins the Joshua PPMC + Committership.
-
-- 2016-09-10 John Hewitt (johnhew) joins the Joshua PPMC + Committership.
-
-- 2016-09-10 Thamme Gowda (thammegowda) joins the Joshua PPMC + Committership.
-
-- 2016-04-11 Felix Hieber (fhieber) joins the Joshua PPMC + Committership.
-
-- 2016-04-11 Kellen Sunderland (kellen) joins the Joshua PPMC + Committership.
-
-- 2016-02-13 Project enters incubation.
-
-
-- Joshua Website - http://joshua.incubator.apache.org
-
-
--  [Community Pages](http://joshua.incubator.apache.org/community/) 
-
--  [Current Documentation](http://joshua.incubator.apache.org/docs/) 
-
--  [Releases](http://joshua.incubator.apache.org/releases/) 
-
--  [Wiki](https://cwiki.apache.org/confluence/display/Joshua) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://joshua.incubator.apache.org](http://joshua.incubator.apache.org)  |
-| . | wiki |  [Wiki](https://cwiki.apache.org/confluence/display/Joshua)  |
-| Mailing list | dev |  `dev`  `@`  `joshua.incubator.apache.org`  |
-| . | user |  `user`  `@`  `joshua.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `joshua.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/joshua |
-| Source code | Git | https://gitbox.apache.org/repos/asf/incubator-joshua.git |
-| Mentors |  | . |
-| . | mattmann | Chris Mattmann |
-| . | pramirez | Paul Ramirez |
-| . | magicaltrout | Tom Barber |
-| . | lewismc | Lewis John Mcgibbney |
-| Committers | . | . |
-| . | mjpost | Matt Post |
-| . | lewismc | Lewis John McGibbney |
-| . | mattmann | Chris Mattmann |
-| . | hsaputra | Henry Saputra |
-| . | tommaso | Tommaso Teofili |
-| . | magicaltrout | Tom Barber |
-| . | kellen | Kellen Sunderland |
-| . | fhieber | Felix Hieber |
-| . | thammegowda | Thamme Gowda |
-| . | johnhew | John Hewitt |
-| . | mthomas | Max Thomas |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/joshua.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-03-24 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2016-02-13 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-02-13 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-02-13 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-02-13 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-02-13 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-03-04 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-02-19 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-02-19 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2016-02-13 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-03-29 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-11-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-11-14 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-11-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-04-11 | Check that all active committers have submitted a contributors agreement. |
-| 2016-11-14 | Add all active committers in the STATUS file. |
-| 2016-11-14 | Ask root for the creation of committers' accounts on home.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-
-
-- 
-
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/jspwiki.md b/content/jspwiki.md
deleted file mode 100644
index 96e6dd5..0000000
--- a/content/jspwiki.md
+++ /dev/null
@@ -1,163 +0,0 @@
-Title: JSPWiki Incubation Status
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The JSPWiki project graduated on 2013-07-19</span>
-
-
-The JSPWiki Project is a modular and user-extensible wiki-engine, based on the open source JSPWiki software.
-
-
-
-- 2013-07-19: Apache JSPWiki graduated as TLP
-
-
-- 2013-05-15: Apache JSPWiki 2.9.1-incubating release is out
-
-
-- 2013-01-04: new committer and PPMC member - Glen Mazza
-
-
-- 2012-12-01: Apache JSPWiki 2.9.0-incubating release is out
-
-
-- 2012-11-01: New mentor - Siegfried Goeschl
-
-
-- 2012-01-23: Targetting 2.9 as first Apache release
-
-
-- 2008-11-28: New committer - Florian Holeczek
-
-
-- 2008-07-19: New committer - Harry Metske
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/jspwiki/](http://incubator.apache.org/jspwiki/)  |
-| . | wiki |  [http://www.jspwiki.org/](http://www.jspwiki.org/)  |
-| Mailing list | dev |  `jspwiki-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `jspwiki-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `jspwiki-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/JSPWIKI](http://issues.apache.org/jira/browse/JSPWIKI)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/jspwiki/](https://svn.apache.org/repos/asf/incubator/jspwiki/)  |
-| Mentors | clr | Craig Russell |
-| . | rubys | Sam Ruby |
-| . | sgoeschl | Siegfried Goeschl |
-| Committers | jalkanen | Janne Jalkanen |
-| . | ajaquith | Andrew Jaquith |
-| . | brushed | Dirk Frederickx |
-| . | csauer | Christoph Sauer |
-| . | juanpablo | Juan Pablo Santos Rodríguez |
-| . | altheim | Murray Altheim |
-| . | metskem | Harry Metske |
-| . | florianh | Florian Holeczek |
-
-
-- See [http://svn.apache.org/repos/asf/incubator/jspwiki/board/](http://svn.apache.org/repos/asf/incubator/jspwiki/board/) .
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-09-28 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2007-09-17 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2007-10-06 | Give all Mentors access to the incubator SVN repository. |
-| 2008-09-28 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-06-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-08-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. [See JSPWIKI-545 for RAT reports.](https://issues.apache.org/jira/browse/JSPWIKI-545)  |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-08-16 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2009-08-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. [See JSPWIKI-545 for RAT reports.](https://issues.apache.org/jira/browse/JSPWIKI-545)  |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-10-15 | Check that all active committers have submitted a contributors agreement. |
-| 2009-08-11 | Add all active committers in the STATUS file. |
-| 2007-10-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-10-06 | Create source repository modules and grant the committers karma. |
-| 2007-10-06 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-10-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-02-12 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-Find the project specific items sorted by status and last update [here](https://issues.apache.org/jira/sr/jira.issueviews:searchrequest-printable/temp/SearchRequest.html?jqlQuery=project+%3D+JSPWIKI+AND+fixVersion+%3D+12313986+order+by+status+asc%2C+updated) .
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/jsr-301-ri.md b/content/jsr-301-ri.md
new file mode 100644
index 0000000..0f83316
--- /dev/null
+++ b/content/jsr-301-ri.md
@@ -0,0 +1,65 @@
+Title: JSR-301 Reference Implementation Codebase Intellectual Property (IP) Clearance Status
+
+
+The codebase is the JSR-301 reference implementation.
+
+
+This codebase will become a subproject of Apache MyFaces.
+
+
+
+- Which PMC will be responsible for the code: Apache MyFaces
+
+
+- Into which existing project/module: Apache MyFaces
+
+
+- Officer or member managing donation: Manfred Geiler
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2007-09-03 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for [donated software](https://issues.apache.org/jira/browse/MYFACES-1664) :<br></br>md5: 861076b6accc3728a3e36d4c240cf28f<br></br>sha1: 9bd74ae4e27c8f41bdea51437a457062960103fb
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-10-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-10-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: javax.portlet.faces, com.oracle.portlet.faces
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Oracle Corporation
+
+| date | item |
+|------|------|
+| 2007-10-11 | Check that all active committers have a signed CLA on record. |
+| 2007-10-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-10-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-10-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The vote was started on dev@myfaces.apache.org on 2007-10-15 and will close on 2007-10-18._ 
diff --git a/content/juddi.md b/content/juddi.md
deleted file mode 100644
index 23253e5..0000000
--- a/content/juddi.md
+++ /dev/null
@@ -1,292 +0,0 @@
-Title: jUDDI
-
-
-jUDDI graduated from the Apache Incubator in March, 2004 and is now a top level project (TLP) at Apache. For the latest information about jUDDI project please visit [http://juddi.apache.org/](http://juddi.apache.org/) 
-
-
- **THIS WEBSITE IS NO LONGER MAINTAINED!** 
-
-
-<span class="graduated">The jUDDI project graduated in 2004-03</span>
-
-
-The website for jUDDI is at [http://juddi.apache.org/](http://juddi.apache.org/) 
-
-
-Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
-
-
-On 22-Dec-2003 we used the free online search form available at www.nameprotect.com. No trademark conflicts were found for the name "jUDDI' in the US or Canada. The domain name 'juddi.org' is currently owned by a jUDDI committer (Steve Viens).
-
-
- **DONE** 
-
-
-If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names.
-
-
-An Apache cvs (now svn) module is in place and the jUDDI source has been imported. Source can be viewed via ViewCVS at the following URL:
-
-
- [http://svn.apache.org/viewcvs.cgi/juddi/](http://svn.apache.org/viewcvs.cgi/juddi/) 
-
-
- **DONE** 
-
-
-The mailing lists dev@juddi.apache.org and user@juddi.apache.org have been created and are being archived at Apache. All history for these lists from when they were hosted on SourceForge.net have been imported into the archives at both Apache.
-
-
-| List | Archive | URL |
-|-------|----------|------|
-| juddi-dev | Apache |  [http://mail-archives.apache.org/mod_mbox/juddi-dev/](http://mail-archives.apache.org/mod_mbox/juddi-dev/)  |
-| juddi-user | Apache |  [http://mail-archives.apache.org/mod_mbox/juddi-user/](http://mail-archives.apache.org/mod_mbox/juddi-user/)  |
-
- **DONE** 
-
-
-If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.
-
-
- **DONE** 
-
-
-Who has been identified as the shepherd for the incubation?
-
-
-Davanum Srinivas, dims@yahoo.com
-
-
-Are they tracking progress?
-
-
-Yes. Progress is tracked here: incubator/site/projects/juddi.cwiki
-
-
-Have the papers that transfer rights to the ASF been received? It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
-
-
-Have the files been updated to reflect the new ASF copyright?
-
-
-All Java source files include the ASF v2.0 copyright notice.
-
-
- **DONE** 
-
-
-Verify distribution rights
-
-
-For all code included with the distribution that is not under the Apache license, do we have the right to combine with Apache-licensed code and redistribute?
-
-
-Yes. See the following thread for more info:
-
-
- [http://marc.theaimsgroup.com/?l=juddi-dev&amp;m=107945391731425&amp;w=2](http://marc.theaimsgroup.com/?l=juddi-dev&amp;m=107945391731425&amp;w=2) 
-
-
- **DONE** 
-
-
-Is all source code distributed by the project covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms?
-
-
-Yes. All source code distributed with jUDDI is covered under the Apache license.
-
-
- **DONE** 
-
-
-Are all active committers in the STATUS file?
-
-
-Yes.
-
-
-Active committers at the time of incubation are:
-
-
-| Committer | Email Address |
-|------------|----------------|
-| Steve Viens | sviens@apache.org |
-| Anou Manavalan | anou_mana@apache.org |
-| Andy Cutright | acutright@apache.org |
-| Anil Saldhana | anilsaldhana@yahoo.com |
-
-Do they have accounts on cvs.apache.org?
-
-
-Yes.
-
-
-Have they submitted a contributors agreement?
-
-
-Yes.
-
-
- **DONE** 
-
-
-CVS modules created and committers added to avail file?
-
-
- **DONE** 
-
-
-Mailing lists set up and archived?
-
-
- **DONE** 
-
-
-Problem tracking system (Jira)?
-
-
-Issue tracking has been set up under Jira.
-
-
- [https://issues.apache.org/jira/browse/JUDDI](https://issues.apache.org/jira/browse/JUDDI) 
-
-
- **DONE** 
-
-
-Has the project migrated to our infrastructure?
-
-
- **DONE** 
-
-
-Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
-There are four jUDDI committers:
-
-
-| Committer | Email Address |
-|------------|----------------|
-| Steve Viens | sviens@apache.org |
-| Anou Manavalan | anou_mana@apache.org |
-| Andy Cutright | acutright@apache.org |
-| Anil Saldhana | anilsaldhana@yahoo.com |
-
-All four individuals are acknowledged jUDDI committers.
-
-
- **DONE** 
-
-
-Are there three or more independent committers?
-
-
-Yes. All four initial jUDDI committers are independent committers.
-
-
- **DONE** 
-
-
-Are project decisions being made in public by the committers?
-
-
-Yes
-
-
- **DONE** 
-
-
-Are the decision-making guidelines published and agreed to by all of the committers?
-
-
-No special guidelines have been published. The Apache style of development is known to us all and silently accepted.
-
-
- **DONE** 
-
-
-# 2004-03-06 jUDDI Status {#2004-03-06+jUDDI+Status}
-
-```
-2004-03-06 jUDDI Status * Is the STATUS file up to date? (also post
-link) Yes. http://incubator.apache.org/projects/juddi.html * Any
-legal, cross-project or personal issues that still need to be
-addressed? No outstanding issues. * What has been done for incubation
-since the last report? All project committers have received
-confirmation that CLA's have been recieved and accepted. The jUDDI
-Web Site has continued to be updated and built out.
-http://ws.apache.org/juddi/ All source files have been modified to
-include the ASF v2.0 copyright notice. The mailing lists
-juddi-user@ws.apache.org and juddi-dev@ws.apache.org are now being
-archived at both Apache and MARC. Past list traffic has been imported
-into the Apache archives. License files have been added for most
-non-Apache libraries that are distributed with jUDDI. * What are the
-project's plans and expectations for the next period? Complete review
-of non-Apache libraries bundled with jUDDI removing any that should
-not be included and adding LICENSE files for any that requires one.
-Assemble a to-do list (roadmap) for future development and publish to
-the jUDDI web site. Upgrade to Axis 1.2beta (Axis 1.1 is currently
-bundled with jUDDI). Refactor CVS to create a areas for the jUDDI
-java source directory, the jUDDI website and locations for addons,
-contributions or prototypes that do not fit well in the jUDDI source
-tree. Right now everything is in the jUDDI source tree. Exit the
-Apache Incubator (hey, it was fun). Produce an 0.8.x or 0.9
-release.of jUDDI. * Any recommendations for how incubation could run
-more smoothly for you? The current process has worked well for us.
-
-```
-
-# 2003-10-19 jUDDI Status {#2003-10-19+jUDDI+Status}
-
-```
-2003-10-19 jUDDI Status * Is the STATUS file up to date? (also post
-link) Yes. http://incubator.apache.org/projects/juddi.html * Any
-legal, cross-project or personal issues that still need to be
-addressed? No outstanding issues. * What has been done for incubation
-since the last report? All four project committers have submitted
-CLA's. We're still waiting on confirmation for one of these A jUDDI
-Web Site has been created at Apache and the original jUDDI web site
-redirects visitors to the new web site. http://ws.apache.org/juddi/
-An cvs module is in place and the jUDDI source has been imported.
-Java packages have been renamed from "org.juddi" to
-"org.apache.juddi" and all source files have been modified to include
-the ASF copyright notice. The mailing lists juddi-user@ws.apache.org
-and juddi-dev@ws.apache.org have been created and are being archived.
-Issue tracking has been setup under Jira. Gump is successfully
-building jUDDI. http://lsd.student.utwente.nl/gump/ws-juddi/ * Plans
-and expectations for the next period? Still need to acquire and check
-in license files for dependent non-Apache libraries that are
-distributed with jUDDI. Waiting to be notified that the fourth
-committer's CLA has been received and his account created and granted
-the appropriate privs. Assemble a to-do list (roadmap) for future
-development and plan the next jUDDI release. We'd like to wrap up the
-few issues that are outstanding and exit incubation before the next
-period comes to a close. * Any recommendations for how incubation
-could run more smoothly for you? I've heard reference to a STATUS
-file as well as the jUDDI cwiki that I've been updating. While I've
-assumed they are one-in-the-same I'm not certain of that (perhaps you
-can enlighten me). If they are not they same thing then I'm confused
-about the need to keep status in two different places. Even this
-status report is more or less a reformatted version the cwiki
-document.
-
-```
-
-If graduating to an existing PMC, has the PMC voted to accept it?
-
-
-The Web Services PMC has voted to Incubate jUDDI.
-
-
- **DONE** 
-
-
-Has the Incubator decided that the project has accomplished all of the above tasks?
-
-
-Yes. The Incubator PMC has voted to graduate jUDDI
-
-
- **DONE** 
-
diff --git a/content/juice.md b/content/juice.md
deleted file mode 100644
index 0798dcb..0000000
--- a/content/juice.md
+++ /dev/null
@@ -1,175 +0,0 @@
-Title: juice
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The JuiCE project retired on 2007-10-18</span>
-
-
-JuiCE is an implementation of a JCE provider based on OpenSSL.
-
-
-
-- 2007-10-18 JuiCE is going into Retired Status due to lack of community interest.
-
-
-- link to the main website
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://xml.apache.org/security/](http://xml.apache.org/security/)  |
-| . | wiki | . |
-| Mailing list | dev | juice-dev@xml.apache.org |
-| . | svn | juice-cvs@xml.apache.org |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/browse/JUICE](http://issues.apache.org/jira/browse/JUICE)  |
-| Source code | SVN | xml/juice |
-| Mentors | id1 | Berin Lautenbach |
-| Committers | wassa | Walter Hoehn &lt;wassa@memphis.edu&gt; |
-| . | nlevitt | Noah Levitt &lt;nlevitt@columbia.edu&gt; |
-| . | kwouters | Karel Wouters &lt;Karel.Wouters@esat.kuleuven.ac.be&gt; |
-| . | amattheu | Axl Mattheus &lt;Axl.Mattheus@Sun.COM&gt; |
-| . | vdkoogh | Erwin van der Koogh &lt;vdkoogh@apache.org&gt; |
-| . | blautenb | Berin Lautenbach &lt;berin@wingsofhermes.org&gt; |
-| . | dims | Davanum Srinivas (dims@yahoo.com) |
-| . | werner | Werner Dittman (werner.dittman@t-online.de) |
-| Extra | . | . |
-
-# 2004-04-20 {#2004-04-20}
-
-```
-Status report for JuiCE for the Incubator JuiCE is just entering
-incubation, and is currently in the process of starting up. We are
-currently waiting on CLAs from core developers to enable us to get
-started. * is the STATUS file up to date? (also post link) Yes -
-http://incubator.apache.org/projects/juice.html * any legal,
-cross-project or personal issues that still need to be addressed? No.
-* what has been done for incubation since the last report? JuiCE has
-only just entered the Incubator. We are currently in the process of
-getting infrastructure up and running, accounts set up and code
-imported. * plans and expectations for the next period? Getting code
-imported, web site setup and development started.
-
-```
-
- **April 2006** 
-
-
-Good activity in the previous quarter. Werner Dittman was voted in as a committer and has been refactoring the initial code into a more long term format. A test build has also been created on a Win32 platform.
-
-
-The team involved in this are all committers on the xml-security project. Over the next quarter we will be looking to promote this from the Incubator into the xml project as a part of xml-security.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2004-04-02 | Project name is used by some other open source software products, but none of them in the cryptography space. These projects were approached and indicated no problems with us using the name JuiCE. |
-| 2004-04-02 | Project has been accepted by the XML projects, and will use xml based names - i.e. juice-dev@xml.apache.org and SVN /xml/juice |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-04-02 | Mentor identified as Berin Lautenbach |
-| 2004-04-02 | Berin subscribed on pmc and juice-dev lists |
-| 2004-04-02 | Mentor already subscribed to incubator CVS modules |
-| 2004-04-19 | Mentor tracking status in 'incubator/projects/juice.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-04-02 | Software grant has been received for NativeJCE (the original code base) from Internet2. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2005-04-27 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| 2005-04-27 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2004-04-18 | SVN repository set up, with access to all developers with submitted CLAs. |
-| 2004-04-02 | All mailing lists set up and archived. |
-| 2004-04-09 | Jira project tracking setup. |
-| 2004-04-09 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/juneau.md b/content/juneau.md
deleted file mode 100644
index f9af826..0000000
--- a/content/juneau.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Title: Incubation Status - Apache Juneau
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Apache Juneau is a toolkit for marshalling POJOs to a wide variety of content types using a common framework, and for creating sophisticated self-documenting REST interfaces and microservices using VERY little code.
-
-
-<span class="graduated">The Juneau project graduated on 2017-10-18</span>
-
-
-
-- 2016-06-24 Project enters incubation.
-
-- 2016-08-08 Website created.
-
-- 2016-10-25 Juneau 6.0.0 released.
-
-- 2017-01-03 Juneau 6.0.1 released.
-
-- 2017-02-25 Juneau 6.1.0 released.
-
-- 2017-04-28 Juneau 6.2.0 released.
-
-- 2017-06-28 Juneau 6.3.0 released.
-
-- 2017-07-25 Two new PPMC members - Raphi D. Lee &amp; Steve Blackmon
-
-- 2017-08-01 Juneau 6.3.1 released.
-
-- 2017-10-18 Juneau graduated as a TLP.
-
-
--  [Project Website](http://juneau.incubator.apache.org) 
-
-
--  [Becoming a contributor](http://juneau.incubator.apache.org/#community.html) 
-
-
--  [Confluence workspace for developers](https://cwiki.apache.org/confluence/display/JUNEAU/Juneau+Home) 
-
-
--  [Juneau Board Reports](https://whimsy.apache.org/board/minutes/Juneau.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ---- | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-06-24 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via reporeq |
-| 2016-06-24 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-06-24 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2016-06-24 | Ask infrastructure to set up wiki (Confluence). |
-| 2016-06-24 | Ask infrastructure to set up git pubsub website. |
-| 2016-06-24 | Migrate the project to our infrastructure. |
-| 2016-06-24 | Set up Jenkins build |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-06-25 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-06-25 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-06-25 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-07-29 | Software Grant Agreement has been received from IBM and filed under documents/grants/ibm-juno.pdf. |
-| 2016-07-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-10-25 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-10-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-10-25 | Check that all active committers have submitted a contributors agreement. This is on going as committers join (you must have an ICLA to be a committer) |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/kabuki.md b/content/kabuki.md
deleted file mode 100644
index fcb9c8c..0000000
--- a/content/kabuki.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: Kabuki Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](http://incubator.apache.org/projects/kabuki.html) .
-
-
-<span class="retired">The Kabuki project retired on 2006-06-24</span>
-
-
-The Kabuki project is a toolkit for building rich browser-based clients using AJAX technology. The framework will consist of user interface widgets as well as infrastructure to enable communication with server-side logic.
-
-
-
-- 2006-06-24 Project requested to be [withdrawn](http://mail-archives.apache.org/mod_mbox/incubator-general/200606.mbox/%3c16110843.4351151186156121.JavaMail.root@dogfood.liquidsys.com%3e) from incubation.
-
-- 2006-01-26 Project [accepted](http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3c43D9037A.8070502@apache.org%3e) for incubation in Apache.
-
-- 2006-01-23 Project proposal updated for final [vote](http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3c43D4DA91.1050502@apache.org%3e) .
-
-- 2006-01-16 Call for [vote](http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3c43CAF9F9.80000@apache.org%3e) .
-
-- 2006-01-11 Project proposal [updated](http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3c23280968.43031136963220404.JavaMail.root@dogfood.liquidsys.com%3e) .
-
-- 2005-12-20 Project [announced](http://mail-archives.apache.org/mod_mbox/incubator-general/200512.mbox/%3cOF92B1242C.603BC2B5-ON852570DD.004C2839-052570DD.004D44F7@us.ibm.com%3e) publicly.
-
-| Item | Type | Reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/kabuki/](http://incubator.apache.org/kabuki/)  _to be created_  |
-| Website | wiki |  _to be created_  |
-| Mailing list | ppmc |  [kabuki-ppmc@incubator.apache.org](mailto:kabuki-ppmc@incubator.apache.org)  |
-| Mailing list | dev |  [kabuki-dev@incubator.apache.org](mailto:kabuki-dev@incubator.apache.org) [ [Subscribe](mailto:kabuki-dev-subscribe@incubator.apache.org) | [Unsubscribe](mailto:kabuki-dev-unsubscribe@incubator.apache.org) ] |
-| Mailing list | user |  [kabuki-user@incubator.apache.org](mailto:kabuki-user@incubator.apache.org) [ [Subscribe](mailto:kabuki-user-subscribe@incubator.apache.org) | [Unsubscribe](mailto:kabuki-user-unsubscribe@incubator.apache.org) ] |
-| Mailing list | commits |  [kabuki-commits@incubator.apache.org](mailto:kabuki-commits@incubator.apache.org) [ [Subscribe](mailto:kabuki-commits-subscribe@incubator.apache.org) | [Unsubscribe](mailto:kabuki-commits-unsubscribe@incubator.apache.org) ] |
-| Bug tracking | bugzilla | KABUKI _to be created_  |
-| Source code | svn |  [https://svn.apache.org/repos/asf/incubator/kabuki/](https://svn.apache.org/repos/asf/incubator/kabuki/)  |
-
-
-
-
-| Role | Apache Id | Name (Given Surname) |
-|------|-----------|----------------------|
-| Champion | rubys | Sam Ruby |
-| Mentor | andyc | Andy Clark |
-| Mentor | rubys | Sam Ruby |
-| Mentor | pzf | Paul Fremantle |
-| Mentor | sanjiva | Sanjiva Weerawarana |
-| Committer | andyc | Andy Clark |
-| Committer |  _tbd_  | Conrad Damon |
-| Committer |  _tbd_  | Ross Dargahi |
-| Committer |  _tbd_  | Roland Schemers |
-| Committer |  _tbd_  | Parag Shah |
-| Committer |  _tbd_  | Greg Solovyev |
-| Committer | mmarinschek | Martin Marinschek |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache. **DONE.** 
-
-
-## Interim responsibility {#Interim+responsibility}
-
-| Date | Item |
-|------|------|
-| 2006-01-26 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to all incubator SVN modules. (to be done by PMC chair) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/kabuki.html' which is generated from the XML status file. |
-
-## Copyright {#Copyright}
-
-| Date | Item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| Date | Item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license have the right to combine with Apache-licensed code and redistribute. |
-| 2006-02-13 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| Date | Item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| Date | Item |
-|------|------|
-| 2006-02-20 | Ask infrastructure to create source repository modules and grant the committers karma. **Done.**  |
-| 2006-02-18 | Ask infrastructure to set up and archive Mailing lists. **Done.**  |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/kafka.md b/content/kafka.md
deleted file mode 100644
index f1b03c9..0000000
--- a/content/kafka.md
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Kafka Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Kafka project graduated on 2012-10-23</span>
-
-
-Kafka provides an extremely high throughput distributed publish/subscribe messaging system. Additionally, it supports relatively long term persistence of messages to support a wide variety of consumers, partitioning of the message stream across servers and consumers, and functionality for loading data into Apache Hadoop for offline, batch processing.
-
-
-
-- 2011-07-04 Project enters incubation.
-
-- 2012-05-07 New committer Joel Koshy
-
-- 2012-05-07 New committer Prashanth Menon
-
-- 2012-05-07 New committer Joe Stein
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website, Mailing lists, Bug tracking, Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/kafka/](http://incubator.apache.org/kafka/)  |
-| . | wiki | . |
-| Mailing list | dev |  `kafka-dev`  `@`  `incubator.apache.org`  |
-| . | users |  `kafka-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `kafka-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/KAFKA |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/kafka/](https://svn.apache.org/repos/asf/incubator/kafka/)  |
-| Mentors | adc | Alan D. Cabrera |
-| . | cdouglas | Chris Douglas |
-| . | geirm | Geir Magnusson Jr. |
-| . | omalley | Owen O'Malley |
-| Committers | jkreps | Jay Kreps |
-| . | junrao | Jun Rao |
-| . | nehanarkhede | Neha Narkhede |
-| . | jghoman | Jakob Homan |
-| . | cburroughs | Chris Burroughs |
-| . | jjkoshy | Joel Koshy |
-| . | prashanthmenon | Prashanth Menon |
-| . | joestein | Joe Stein |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-08-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2011-07-04 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-07-04 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-07-04 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-07-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-07-04 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-07-04 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-08-03 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-07-04 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-07-04 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-07-04 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-07-04 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-08-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-07-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-07-28 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-07-28 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-07-07 | Check that all active committers have submitted a contributors agreement. |
-| 2011-07-04 | Add all active committers in the STATUS file. |
-| 2011-07-07 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/kalumet.md b/content/kalumet.md
deleted file mode 100644
index 029f4e1..0000000
--- a/content/kalumet.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Title: Kalumet Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-<li><span class="retired">The Kalumet podling retired on 2015-11-01</span></li>
-Kalumet a complete environment manager and deployer including J2EE environments (application servers, applications, etc), softwares, and resources.
-
-
-
-- 2013-12-06: First release 0.6-incubating done
-
-- 2011-09-20 Project enters incubation.
-
-- 2011-10-07 Confluence Wiki space created.
-
-- 2011-10-07 JIRA, mailing lists, SVN space created.
-
-| item | type | reference |
-|------|------|-----------|
-| . | wiki |  [https://cwiki.apache.org/confluence/display/KALUMET](https://cwiki.apache.org/confluence/display/KALUMET)  |
-| Mailing list | dev |  `kalumet-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `kalumet-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `kalumet-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/KALUMET](https://issues.apache.org/jira/browse/KALUMET)  |
-| Mentors | jim | Jim Jagielski |
-| . | hgomez | Henri Gomez |
-| . | jbonofre | Jean-Baptiste Onofre |
-| . | olamy | Olivier Lamy |
-| Committers | imod | Dominik Bartholdi |
-| . |  | Mike Duffy |
-| . | iocannel | Ioannis Canellos |
-| . | pieber | Andreas Pieber |
-| . | anierbeck | Achim Nierbeck |
-| . | jgoodyear | Jamie Goodyear |
-| . | rvs | Roman Shaposhnik |
-| . |  | Youhort Ly |
-| . |  | Terri-Lynn Rimmer |
-
-
-- https://cwiki.apache.org/confluence/display/KALUMET/October+2011+Report
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2011-10-08 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2011-10-08 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-10-08 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-10-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-10-07 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-10-07 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-10-07 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-10-14 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-09-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-10-07 | Subscribe all Mentors on the pmc and general lists. |
-|  | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-11-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-10-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-10-10 | Check that all active committers have submitted a contributors agreement. |
-| 2011-10-10 | Add all active committers in the STATUS file. |
-| 2011-10-10 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/kato.md b/content/kato.md
deleted file mode 100644
index e3c198c..0000000
--- a/content/kato.md
+++ /dev/null
@@ -1,174 +0,0 @@
-Title: Kato Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the official project status.
-
-
-Please see the [Kato website](http://incubator.apache.org/kato) for information on the project itself.
-
-
-<span class="retired">The Kato project retired on 2012-08-01</span>
-
-
-JSR 326 is intended to be a Java API specification for standardising how and what can be retrieved from the contents of post-mortem artefacts -- typically process and JVM dumps. Project Kato is intended to be the place where the Specification, Reference implementation (RI) and Technology Compatibility Kit (TCK) are openly created. The intention is that the Specification and RI will be developed in tight unison, guided by a user-story-focused approach to ensure that real-world problems drive the project from the beginning.
-
-
-Unusually for new APIs, this project will endeavour to encompass the old and the new. A diagnostic solution that only works when users move to the latest release does little to improve diagnosability in the short term. This project will consume existing dump artefacts as well as possible while developing an API that can address the emerging trends in JVM and application directions. The most obvious of these trends are the exploitation of very large heaps, alternative languages and, paradoxically for Java, the increased use of native memory through vehicles such as NIO.
-
-
-
-- August 2012: Kato retired.
-
-
--  [Kato website](http://incubator.apache.org/kato) 
-
-
-- TODO: link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- TODO: link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/kato/](http://incubator.apache.org/kato/)  |
-| . | wiki |  [http://cwiki.apache.org/KATO/](http://cwiki.apache.org/KATO/)  |
-| Mailing list | dev |  `kato-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `kato-commits`  `@`  `incubator.apache.org`  |
-| . | spec |  `kato-spec`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/KATO/](http://issues.apache.org/jira/browse/KATO/)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/kato/](https://svn.apache.org/repos/asf/incubator/kato/)  |
-| Mentors | antelder | Ant Elder |
-| . | rdonkin | Robert Burrell Donkin |
-| . | geirm | Geir Magnusson Jr. |
-| Committers | . | . |
-| . | spoole | Steve Poole |
-| . | monteith | Stuart Monteith |
-| . | cristal | Carmine Cristallo |
-| . | riccole | Richard Cole |
-| . | sgoyal | Sonal Goyal |
-| Extra | . | . |
-
-
-- Status reports due on March, June, September, December.
-Status reports are held on the Incubators wiki:
-
--  [June 2009](http://wiki.apache.org/incubator/June2009) 
-
--  [March 2009](http://wiki.apache.org/incubator/March2009) 
-
--  [February 2009](http://wiki.apache.org/incubator/February2009) 
-
--  [January 2009](http://wiki.apache.org/incubator/January2009) 
-
--  [December 2008](http://wiki.apache.org/incubator/December2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-03-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-08-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/kitten-auth.md b/content/kitten-auth.md
new file mode 100644
index 0000000..9b7b27d
--- /dev/null
+++ b/content/kitten-auth.md
@@ -0,0 +1,62 @@
+Title: Kitten Auth Codebase Intellectual Property (IP) Clearance Status
+
+
+Apache Wicket components for generating a captcha test based on the selection of kitten images.
+
+
+
+- The Apache Wicket PMC will be responsible for the code
+
+
+- The code will be imported into https://svn.apache.org/repos/asf/wicket/trunk as part of the Wicket project
+
+
+- Martijn Dashorst is the officer managing the donation
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: 02ff119a2d4d94f1480e3592cf0d430c (available at [WICKET-1610](https://issues.apache.org/jira/browse/WICKET-1610) ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-05-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| n/a | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: The "Kitten Auth" portion of the Thoof Software
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Thoof, Inc
+
+| date | item |
+|------|------|
+| 2008-05-18 | Check that all active committers have a signed CLA on record. |
+| 2008-05-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| n/a | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| n/a | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation: [http://wicket.markmail.org/message/jl7d6sjrvbaxaekx?q=list:org%2Eapache%2Ewicket%2Edev&amp;page=1](http://wicket.markmail.org/message/jl7d6sjrvbaxaekx?q=list:org%2Eapache%2Ewicket%2Edev&amp;page=1) 
diff --git a/content/kitty.md b/content/kitty.md
deleted file mode 100644
index 155ff02..0000000
--- a/content/kitty.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: Kitty Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Kitty project retired on 2012-10-19</span>
-
-
-The Kitty Project is a lightweight, production focused, Java-based application server performance diagnostic and management utility.
-
-
-
-- 2010-10-03 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/kitty/](http://incubator.apache.org/kitty/)  |
-| . | wiki | . |
-| Mailing list | dev |  `kitty-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `kitty-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `kitty-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/kitty/](https://svn.apache.org/repos/asf/incubator/kitty/)  |
-| Mentors | jim | Jim Jagielski |
-| . | kevan | Kevan Miller |
-| Committers | . | Matthew Sacks |
-| . | . | Peary Chiu |
-| . | pidster | Stuart Williams |
-| . | rjung | Rainer Jung |
-| . | senaka | Senaka Fernando |
-| . | . | James Bray |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-10-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-|  | Jim Jagielski and Kevan Miller volunteered as mentors. Mark Thomas was identified as a mentor in the podling proposal. However, he was unaware of this and does not plan on mentoring the project. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| n/a | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/knox.md b/content/knox.md
deleted file mode 100644
index 61f9869..0000000
--- a/content/knox.md
+++ /dev/null
@@ -1,175 +0,0 @@
-Title: Knox Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Knox project graduated on 2014-02-19</span>
-
-
-Knox is a system that provides a single point of secure access for Apache Hadoop clusters.
-
-
-
-- 2013-12-19: Added Vladimir Tkhir as new committer
-
-- 2013-12-19: Added Maksim Kononenko as new committer
-
-- 2013-11-01: Added Dilli Arumugam Dorai as new PPMC member
-
-- 2013-10-23: Released 0.3.0
-
-- 2013-08-19: Added Dilli Arumugam Dorai as new committer
-
-- 2013-04-13: Released 0.2.0
-
-- 2013-04-13: Released 0.2.0
-
-- 2014-02-19: Knox graduated to a TLP
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://knox.incubator.apache.org/](http://knox.incubator.apache.org/)  |
-|  | wiki |  [https://cwiki.apache.org/confluence/display/KNOX/Index](https://cwiki.apache.org/confluence/display/KNOX/Index)  |
-| Mailing list | dev |  `dev`  `@`  `knox.incubator.apache.org`  |
-|  | user |  `user`  `@`  `knox.incubator.apache.org`  |
-|  | commits |  `commits`  `@`  `knox.incubator.apache.org`  |
-| Bug tracking |  |  [https://issues.apache.org/jira/browse/KNOX](https://issues.apache.org/jira/browse/KNOX)  |
-| Site code | SVN |  [https://svn.apache.org/repos/asf/incubator/knox/](https://svn.apache.org/repos/asf/incubator/knox/)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-knox.git](https://gitbox.apache.org/repos/asf?p=incubator-knox.git)  |
-| Mentors | omalley | Owen O’Malley |
-|  | mahadev | Mahadev Konar |
-|  | gates | Alan Gates |
-|  | ddas | Devaraj Das |
-|  | cdouglas | Chris Douglas |
-|  | mattmann | Chris Mattmann |
-|  | tomwhite | Tom White |
-| PPMC (+Mentors) | kminder | Kevin Minder |
-|  | lmccay | Larry McCay |
-|  | dillidorai | Dilli Dorai (Arumugam) |
-| Committers (+PPMC) | vtkhir | Vladimir Tkhir |
-|  | mkononenko | Maksim Kononenko |
-|  | jspeidel | John Speidel |
-|  | tbeerbower | Tom Beerbower |
-|  | smohanty | Sumit Mohanty |
-|  | venkatesh | Venkatesh Seetharam |
-
-
--  [August 2013](http://wiki.apache.org/incubator/August2013) 
-
--  [July 2013](http://wiki.apache.org/incubator/July2013) 
-
--  [June 2013](http://wiki.apache.org/incubator/June2013) 
-
--  [May 2013](http://wiki.apache.org/incubator/May2013) 
-
--  [April 2013](http://wiki.apache.org/incubator/April2013) 
-
--  [March 2013](http://wiki.apache.org/incubator/March2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-02-25 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-02-22 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-03-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-02-27 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-03-01 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-03-07 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-03-14 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-02-22 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-02-27 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-03-14 | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-02-22 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-02-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-02-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-02-28 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-02-28 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-11-04 | Check that all active committers have submitted a contributors agreement. |
-| 2013-02-22 | Add all active committers in the STATUS file. |
-| 2013-03-07 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
--  [Board voted to accept Knox as a TLP](http://www.apache.org/foundation/records/minutes/2014/board_minutes_2014_02_19.txt) 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
--  [Incubator votes to graudate Knox to a TLP](http://mail-archives.apache.org/mod_mbox/incubator-general/201402.mbox/%3CCF28319C.134B9B%25chris.a.mattmann%40jpl.nasa.gov%3E) 
diff --git a/content/kudu.md b/content/kudu.md
deleted file mode 100644
index 1425a3c..0000000
--- a/content/kudu.md
+++ /dev/null
@@ -1,181 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Kudu project graduated on 2016-07-20</span>
-
-
-Kudu is a distributed columnar storage engine built for the Apache Hadoop ecosystem.
-
-
-
-- 2016-07-20 Board resolution passed
-
-- 2016-07-08 IPMC voted to graduate Kudu
-
-- 2016-07-05 PPMC voted to graduate Kudu
-
-- 2016-06-30 Released 0.9.1-incubating
-
-- 2016-06-09 Released 0.9.0-incubating
-
-- 2016-04-10 Released 0.8.0-incubating
-
-- 2016-04-04 New committer: Binglin Chang
-
-- 2016-03-09 Released 0.7.1-incubating
-
-- 2016-02-26 Released 0.7.0-incubating
-
-- 2015-12-01 Project enters incubation.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www | Original: [http://getkudu.io/](http://getkudu.io) Podling: [http://kudu.incubator.apache.org/](http://kudu.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | user |  `user`  `@`  `kudu.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `kudu.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `kudu.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `kudu.incubator.apache.org`  |
-| . | private |  `private`  `@`  `kudu.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/KUDU](https://issues.apache.org/jira/browse/KUDU)  |
-| Source code | git |  [incubator-kudu git](https://git1-us-west.apache.org/repos/asf/incubator-kudu/repo?p=incubator-kudu.git;a=summary)  |
-| Mentors | jfarrell | Jake Farrell |
-| . | brock | Brock Noland |
-| . | stack | Michael Stack |
-| . | jarcec | Jarek Jarcec Cecho |
-| . | mattmann | Chris Mattman |
-| . | julien | Julien Le Dem |
-| . | cws | Carl Steinbach |
-| Committers | . | . |
-| . | adar | Adar Dembo |
-| . | avf | Alex Feinberg |
-| . | wang | Andrew Wang |
-| . | bchang | Binglin Chang |
-| . | danburkert | Dan Burkert |
-| . | dralves | David Alves |
-| . | jdcryans | Jean-Daniel Cryans |
-| . | mpercy | Mike Percy |
-| . | misty | Misty Stanley-Jones |
-| . | todd | Todd Lipcon |
-| Extra | . | . |
-
-
--  [January 2016](https://wiki.apache.org/incubator/January2016) 
-
--  [February 2016](https://wiki.apache.org/incubator/February2016) 
-
--  [March 2016](https://wiki.apache.org/incubator/March2016) 
-
--  [May 2016](https://wiki.apache.org/incubator/May2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-12-01 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  _2016-06-02: Podling name Kudu approved:_  [PODLINGNAMESEARCH-93](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-93)  |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2015-12-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-|  [2015-12-21](https://issues.apache.org/jira/browse/INFRA-10983) (complete) | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-12-04 (complete) | Ask infrastructure to set up and archive mailing lists. |
-|  [2016-02-25](https://issues.apache.org/jira/browse/INFRA-10959) (complete) | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| not needed for now | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-06-22 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-12-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-12-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-12-22 | Tell Mentors to track progress in the file 'incubator/projects/kudu.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-12-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-02-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-02-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-02-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-12-22 | Check that all active committers have submitted a contributors agreement. |
-| 2015-12-02 | Add all active committers in the STATUS file. |
-| 2015-12-21 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? **YES** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/kylin.md b/content/kylin.md
deleted file mode 100644
index 07aeeb6..0000000
--- a/content/kylin.md
+++ /dev/null
@@ -1,189 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Kylin project graduated on 2015-11-18</span>
-
-
-Kylin is a distributed and scalable OLAP engine for extremely large datasets.
-
-
-
-- 2014-11-25 Project enters incubation.
-
-- 2015-04-01 New committers: Shaofeng Shi, Qianhao Zhou, Jason Zhong.
-
-- 2015-06-10 Apache Kylin v0.7.1-incubating released.
-
-- 2015-07-21 Apache Kylin v0.7.2-incubating released.
-
-- 2015-08-18 New committers: Dayue Gao.
-
-- 2015-08-25 New committers: Hua Huang.
-
-- 2015-09-06 Apache Kylin v1.0-incubating released.
-
-- 2015-09-16 Apache Kylin won InfoWorld Bossie Awards 2015 - [The Best Open Source Big Data Tools](http://www.infoworld.com/article/2982429/open-source-tools/bossie-awards-2015-the-best-open-source-big-data-tools.html#slide13) .
-
-- 2015-09-25 New committers: Yerui Sun.
-
-- 2015-10-22 The vote for Apache Kylin to become a top-level project has passed with 27 +1 votes and no 0 or -1 votes.
-
-- 2015-10-25 Apache Kylin v1.1-incubating released.
-
-- 2015-11-04 Apache Kylin v1.1.1-incubating released.
-
-- 2015-11-18 Graduated
-
-
-- Project Website: [http://kylin.incubator.apache.org/](http://kylin.incubator.apache.org/) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://kylin.incubator.apache.org/](http://kylin.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/KYLIN/Apache+Kylin+Home](https://cwiki.apache.org/confluence/display/KYLIN/Apache+Kylin+Home)  |
-| Mailing list | dev |  `dev`  `@`  `kylin.incubator.apache.org`  |
-| . | user |  `user`  `@`  `kylin.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `kylin.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `kylin.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/KYLIN](https://issues.apache.org/jira/browse/KYLIN)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-kylin.git](https://gitbox.apache.org/repos/asf/incubator-kylin.git)  |
-| Mentors | omalley | Owen O'Malley |
-|  | tdunning | Ted Dunning |
-|  | hsaputra | Henry Saputra |
-|  | jhyde | Julian Hyde |
-|  | ptgoetz | P. Taylor Goetz |
-| Committers | jiangxu | Jiang Xu |
-|  | lukehan | Luke Han |
-|  | liyang | Yang Li |
-|  | yisong | George Song |
-|  | mahongbin | Hongbin Ma |
-|  | shaofengshi | Shaofeng Shi |
-|  | qhzhou | Qianhao Zhou |
-|  | zhongjian | Jason Zhong |
-|  | gaodayue | Dayue Gao |
-|  | hhuang | Hua Huang |
-|  | sunyerui | Yerui Sun |
-|  | xduo | Xiaodong Duo |
-|  | abansal | Ankur Bansal |
-
-
--  [January](http://wiki.apache.org/incubator/January2015) 2015
-
--  [February](http://wiki.apache.org/incubator/February2015) 2015
-
--  [March](http://wiki.apache.org/incubator/March2015) 2015
-
--  [May](http://wiki.apache.org/incubator/May2015) 2015
-
--  [August](http://wiki.apache.org/incubator/August2015) 2015
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-11-25 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-|  [2014-12-27](https://issues.apache.org/jira/browse/INFRA-8943)  | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-12-14 | Ask infrastructure to set up and archive mailing lists. |
-|  [2014-12-17](https://issues.apache.org/jira/browse/INFRA-8889)  | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-04-09 | Ask infrastructure to set up wiki (Confluence, Moin). |
-|  [2015-01-15](https://issues.apache.org/jira/browse/KYLIN-4)  | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-12-14 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-01-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-01-19 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-05-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-06-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-06-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-11-27 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| 2014-12-10 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/kyuubi.md b/content/kyuubi.md
deleted file mode 100644
index 3806506..0000000
--- a/content/kyuubi.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Title: Kyuubi Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Kyuubi is a distributed multi-tenant Thrift JDBC/ODBC server for large-scale data management, processing, and analytics, built on top of Apache Spark and designed to support more engines (i.e., Apache Flink).
-
-
-
-- 2021-06-21 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://kyuubi.apache.org/](http://kyuubi.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `kyuubi.apache.org`  |
-| . | commits |  `commits`  `@`  `kyuubi.apache.org`  |
-| . | private |  `private`  `@`  `kyuubi.apache.org`  |
-| Bug tracking | . | using the github issues. |
-| Source code | . | . |
-| incubator-kyuubi |  [https://github.com/apache/incubator-kyuubi](https://github.com/apache/incubator-kyuubi/)  |
-| incubator-kyuubi-website |  [https://github.com/apache/incubator-kyuubi-website](https://github.com/apache/incubator-kyuubi-website)  |
-| Roster | Whimsy |  [Kyuubi Roster](https://whimsy.apache.org/roster/ppmc/kyuubi)  |
-
-
--  [Kyuubi Board Reports](https://whimsy.apache.org/board/minutes/kyuubi.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/lens.md b/content/lens.md
deleted file mode 100644
index 2f7fc2e..0000000
--- a/content/lens.md
+++ /dev/null
@@ -1,188 +0,0 @@
-Title: Lens Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Lens project graduated on 2015-08-19</span>
-
-
-Lens provides an Unified Analytics interface. Lens aims to cut the Data Analytics silos by providing a single view of data across multiple tiered data stores and optimal execution environment for the analytical query. It seamlessly integrates Hadoop with traditional data warehouses to appear like one.
-
-
-
-- 2015-08-19. Apache Lens graduates and becomes TLP
-
-- 2015-07-19. Raju Bairishetti added as committer and PPMC
-
-- 2015-07-18. Yash Sharma added as committer and PPMC
-
-- 2015-07-17. Apache Lens 2.2.0-beta-incubating released
-
-- 2015-05-11. Himanshu Gahlaut added as committer and PPMC
-
-- 2015-05-11. Arshad Matin added as committer and PPMC
-
-- 2015-05-06. Apache Lens 2.1.0-beta-incubating released
-
-- 2015-03-04. Apache Lens 2.0.1-beta-incubating released
-
-- 2014-12-24. Rajat Khandelwal added as committer and PPMC
-
-- 2014-10-10. Apache Lens enters incubation.
-
-
--  [Project website](http://lens.incubator.apache.org/) 
-
-
--  [Lens project information](http://lens.incubator.apache.org/project-info.html) 
-
-
--  [Project Wiki](https://cwiki.apache.org/confluence/display/LENS) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://lens.incubator.apache.org/](http://lens.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/LENS](https://cwiki.apache.org/confluence/display/LENS)  |
-| Mailing list | dev |  `dev`  `@`  `lens.incubator.apache.org`  |  `user`  `@`  `lens.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `lens.incubator.apache.org`  |
-| . | private |  `private`  `@`  `lens.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/LENS](https://issues.apache.org/jira/browse/LENS)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-lens.git](https://gitbox.apache.org/repos/asf/incubator-lens.git)  |
-| Mentors | vinodkv | Vinod Kumar Vavilapalli |
-| . | cdouglas | Chris Douglas |
-| . | jghoman | Jakob Homan |
-| . | jbonofre | Jean Baptiste Onofre |
-| Committers | amareshwari | Amareshwari Sriramadasu |
-| . | arshadmatin | Arshad Matin |
-| . | gunther | Gunther Hagleitner |
-| . | himanshugahlaut | Himanshu Gahlaut |
-| . | jdhok | Jaideep Dhok |
-| . | raghavsingh | Raghavendra Singh |
-| . | prongs | Rajat Khandelwal |
-| . | raju | Raju Bairishetti |
-| . | sharad | Sharad Agarwal |
-| . | sreekanth | Sreekanth Ramakrishnan |
-| . | sriksun | Srikanth Sundarrajan |
-| . | sumasai | Suma Shivaprasad |
-| . | vikram | Vikram Dixit |
-| . | yash | Yash Sharma |
-
-
--  [July, 2015](http://wiki.apache.org/incubator/July2015) 
-
--  [April, 2015](http://wiki.apache.org/incubator/April2015) 
-
--  [February, 2015](http://wiki.apache.org/incubator/February2015) 
-
--  [January, 2015](http://wiki.apache.org/incubator/January2015) 
-
--  [December, 2014](http://wiki.apache.org/incubator/December2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-02-13 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.(PODLINGNAMESEARCH-63)](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-11-11 | Ask infrastructure to create source repository modules and grant the committers karma.(INFRA-8504) |
-| 2014-11-11 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-11-10 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla).(INFRA-8506) |
-| 2014-11-21 | Ask infrastructure to set up wiki (Confluence, Moin).(INFRA-8616) |
-| 2014-11-14 | Ask infrastructure to set up nexus (INFRA-8613) |
-| 2014-11-21 | Ask infrastructure to set up review board (INFRA-8615) |
-| 2015-01-10 | Ask infrastructure to set up setup project website (INFRA-8549) |
-| 2015-01-10 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-11-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-01-12 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-11-30 | Tell Mentors to track progress in the file 'incubator/projects/lens.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-10-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-11-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-01-19 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-01-19 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-10-27 | Check that all active committers have submitted a contributors agreement. |
-| 2014-11-13 | Add all active committers in the STATUS file. |
-| 2014-11-05 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? Yes
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) Yes
-
-- Are project decisions being made in public by the committers? Yes
-
-- Are the decision-making guidelines published and agreed to by all of the committers? Yes
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? Yes
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? Yes
-
-- If graduating to a new PMC, has the board voted to accept it? Yes
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? Yes
diff --git a/content/lenya.md b/content/lenya.md
deleted file mode 100644
index 0b7088b..0000000
--- a/content/lenya.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: lenya
-
-
-This page tracks the project status, incubator-wise. Items marked **DONE** have been completed.
-
-
-<span class="graduated">The Lenya project graduated on 2004-08</span>
-
-
-# 2004-8-17 {#2004-8-17}
-
-
-- The Apache Lenya project has completed it's incubation tasks and is [requesting](http://cvs.apache.org/viewcvs.cgi/cocoon-lenya/proposal.pmc.txt?view=auto) to graduate to a top-level project.
-
-
-- The project has voted in one new commiter, Andreas Kuckartz.
-
-
-- A move to SVN after the graduation was decided.
-
-# 2004-6-11 {#2004-6-11}
-
-
-- The Apache Lenya project has been busy the last few months to get the 1.2 release out.
-
-
-- The project saw an increase in mailing list traffic for both the user and developer lists; the number of sites deploying Lenya is growing. Dale Christ was voted in as a new commiter, while Thorsten Scherler became an active commiter again.
-
-
-- A [public demo site](http://olr.kbs.uni-hannover.de:8080/lenya/) turned out to be a useful resource for users to try out Lenya and for developers to quickly confirm bug reports. A [Sprint](http://wiki.cocoondev.org/Wiki.jsp?page=LenyaSprintZurich20040514) brought developers together for 2 days in Zurich to work on Repository Integration. The sprint was very productive and will be repeated in the future.
-
-# 2004-1-20 {#2004-1-20}
-
-A release candidate for the 1.2 release has been released, 6 bugs remaining. A new commiter (Rolf Kulemann) has been accepted.
-
-
-# 2003-11-15 {#2003-11-15}
-
-Team ramping up to 1.2 release. First independent patches are received, people are starting to use Lenya for live sites.
-
-
-The website for Lenya is at [http://cocoon.apache.org/lenya/](http://cocoon.apache.org/lenya/) 
-
-
-This page tracks the project status, incubator-wise. Items marked **DONE** have been completed.
-
-
- **DONE** Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
-
-
- **DONE** If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names.
-
-
- **DONE** If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.
-
-
- **DONE** If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted.
-
-
- **DONE** Who has been identified as the shepherd for the incubation?
-
-
- **Stefano Mazzocchi**  **Nicola Ken Barozzi** 
-
-
-
-- Are they tracking progress in the file
-
-incubator/projects/{project_name}/STATUS ( _No, we are tracking it in incubator/projects/lenya.cwiki._ )
-
-
- **DONE** Have the papers that transfer rights to the ASF been received? It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
-
-
- **DONE** Have the files been updated to reflect the new ASF copyright?
-
-
-Verify distribution rights:
-
-
- **DONE** For all code included with the distribution that is not under the Apache license, do we have the right to combine with Apache-licensed code and redistribute?
-
-
- **DONE** Is all source code distributed by the project covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms?
-
-
- **DONE** Are all active committers in the STATUS file?
-
-
-
-
-- Andreas Hartmann
-
-- Andreas Kuckartz
-
-- Christian Egli
-
-- Dale Christ
-
-- Edith Chevrier
-
-- Gregor J. Rothfuss
-
-- Michael Wechner
-
-- Rolf Kulemann
-
-- Thorsten Scherler
-
-4 of 9 commiters are independant, which is less than 50%. A recent discussion on the general mailing list deemed this to be sufficient, though.
-
-
- **DONE** Do they have accounts on cvs.apache.org?
-
-
- **DONE** Have they submitted a contributors agreement?
-
-
- **DONE** CVS modules created and committers added to avail file?
-
-
- **DONE** Mailing lists set up and archived?
-
-
- **DONE** Problem tracking system (Bugzilla)?
-
-
- **DONE** Has the project migrated to our infrastructure?
-
-
- **DONE** Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
- **DONE** Are there three or more independent committers?
-
-
-(The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-
- **DONE** Are project decisions being made in public by the committers?
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-
-- If graduating to a new PMC, has the board voted to accept it?
-
- **DONE** 
-
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-# Open incubation tasks {#Open+incubation+tasks}
-
-None.
-
diff --git a/content/libcloud.md b/content/libcloud.md
deleted file mode 100644
index 5965ef1..0000000
--- a/content/libcloud.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: Libcloud Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](http://libcloud.org/) .
-
-
-<span class="graduated">The Libcloud project graduated on 2011-05-19</span>
-
-
-libcloud is a standard client library for many popular cloud providers, written in python
-
-
-
-- 2011-05-19 Libcloud graduates to a TLP and exits incubator.
-
-- 2011-03-22 Ported website to the Apache CMS.
-
-- 2011-01-17 New release: 0.4.2.
-
-- 2011-01-07 New comitter: Tomaz Muraus (tomaz).
-
-- 2010-10-12 New release: 0.4.0.
-
-- 2010-05-10 New release: 0.3.1.
-
-- 2009-11-01 Project enters incubation.
-
-Website: [http://libcloud.org/](http://libcloud.org/) 
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://libcloud.apache.org/](http://libcloud.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `libcloud`  `@`  `incubator.apache.org`  |
-| . | commits |  `libcloud-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/LIBCLOUD](https://issues.apache.org/jira/browse/LIBCLOUD)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/libcloud/](https://svn.apache.org/repos/asf/incubator/libcloud/)  |
-| Mentors | pquenra | Paul Querna (Cloudkick) |
-| . | gmcdonald | Gavin McDonald |
-| . | jfclere | Jean-Frederic Clere |
-| . | antelder | Anthony Elder |
-| . | carlos | Carlos Sanchez |
-| Committers | polvi | Alex Polvi (Cloudkick) |
-| . | dan | Dan Di Spaltro (Cloudkick) |
-| . | imeredith | Ivan Meredith |
-| . | jed | Jedidiah Smith (Linode) |
-| . | oremj | Jeremiah Orem |
-| . | tom | Tom Davis (Independent) |
-| . | jerry | Jerry Chen (Independent) |
-| . | woodser | Eric Woods (IBM) |
-| . | rbogorodskiy | Roman Bogorodskiy |
-| . | tomaz | Tomaz Muraus |
-
-
--  [December 2009](http://wiki.apache.org/incubator/December2009#Libcloud) 
-
--  [January 2010](http://wiki.apache.org/incubator/January2010#Libcloud) 
-
--  [February 2010](http://wiki.apache.org/incubator/February2010#Libcloud) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-11-03 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-11-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-11-03 | Subscribe all Mentors on the pmc and general lists. |
-| 2009-12-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-05-08 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-12-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-12-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-12-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2009-12-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-12-10 | Check that all active committers have submitted a contributors agreement. |
-| 2011-05-10 | Add all active committers in the STATUS file. |
-| 2009-12-10 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-12-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-11-12 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-12-10 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2009-12-10 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Make a release_ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/liminal.md b/content/liminal.md
deleted file mode 100644
index d77c107..0000000
--- a/content/liminal.md
+++ /dev/null
@@ -1,146 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Apache Liminal is an end-to-end platform for data engineers and scientists, allowing them to build, train and deploy machine learning models in a robust and agile way.
-
-
-
-- YYYY-MM-DD Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://liminal.incubator.apache.org/](http://liminal.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `PROJECT.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `PROJECT.incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/liminal/](https://svn.apache.org/repos/asf/incubator/liminal/)  |
-| Roster | Whimsy |  [Liminal Roster](https://whimsy.apache.org/roster/ppmc/liminal)  |
-
-
--  [Liminal Board Reports](https://whimsy.apache.org/board/minutes/liminal.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/livy.md b/content/livy.md
deleted file mode 100644
index bbd8c32..0000000
--- a/content/livy.md
+++ /dev/null
@@ -1,157 +0,0 @@
-Title: Livy Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Livy is web service that exposes a REST interface for managing long running Apache Spark contexts in your cluster. With Livy, new applications can be built on top of Apache Spark that require fine grained interaction with many Spark contexts.
-
-
-
-- 2017-06-05 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://livy.incubator.apache.org/](https://livy.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `livy.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `livy.incubator.apache.org`  |
-| . | user |  `user`  `@`  `livy.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `livy.incubator.apache.org`  |
-| . | reviews |  `reviews`  `@`  `livy.incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | GIT |  |
-| Mentors | bikas | Bikas Saha |
-| . | brock | Brock Noland |
-| . | lresende | Luciano Resende |
-| . | jbonofre | Jean-Baptiste Onofré |
-| Committers | vanzin | Marcelo Vanzin |
-| . | . | Alex Man |
-| . | zjffdu | Jeff Zhang |
-| . | jshao | Saisai Shao |
-| . | . | Kostas Sakellis |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. Done using mlreq. |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up issue tracker and do import if needed (file against INFRA JIRA). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-| date | item |
-|------|------|
-| ....-..-.. | Cloudera currently owns the domain name: http://livy.io/. Once all the documentation has moved over to ASF infrastructure, the main landing page will become livy.incubator.apache.org and the old domain will just act as a redirect. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/local-lucene-solr.md b/content/local-lucene-solr.md
new file mode 100644
index 0000000..e902b13
--- /dev/null
+++ b/content/local-lucene-solr.md
@@ -0,0 +1,62 @@
+Title: Local Lucene Codebase Intellectual Property (IP) Clearance Status
+
+
+Local Lucene is a contrib module for Lucene Java that provides Local search capabilities (i.e. results ranked by location.) It was written at AOL and is licensed under ASL 2.0 and LGPL. The LGPL portions are in process of being removed or externalized.
+
+
+
+- Lucene
+
+
+- Into which existing project/module: TBD
+
+
+- Officer or member managing donation: Grant Ingersoll
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2008-06-25 | Local Lucene as designated at https://locallucene.svn.sourceforge.net/svnroot/locallucene and https://issues.apache.org/jira/browse/INCUBATOR-77 |
+
+MD5 or SHA1 sum for donated software: ab93e18dd2231ff568671111cd8a3bfc locallucene.tgz (coreutils-5.97-12.1.el5).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-06-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-07-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2008-06-25 | Check that all active committers have a signed CLA on record. |
+| 2008-06-25 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-09-03 -- There is a dependency on LPGL code that will be removed before release. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-09-11 -- There is a dependency on LGPL code that will be removed before release | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/log4cxx.md b/content/log4cxx.md
deleted file mode 100644
index 37e84fc..0000000
--- a/content/log4cxx.md
+++ /dev/null
@@ -1,176 +0,0 @@
-Title: log4cxx
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The log4cxx project graduated on 2005-01-11</span>However it has now re-entered the Incubator as [log4cxx2](log4cxx2.html) 
-
-
-On 2004-11-27, the log4cxx project has been voted in by the Logging Services PMC to become part of the Logging Services project. It implements a logging API similar to log4j but in the C++ language.
-
-
-
-- 2013-12-09: Log4cxx returns to the incubator with a new group of committers as [log4cxx2](log4cxx2.html) 
-
-Curt Arnold currently leads the log4cxx effort. He took over from Michael Catanzariti, project founder, who is temporarily absent on a year long trip around the world. The Logging Services PMC found this smooth transition particularly reassuring.
-
-
-Moreover, log4cxx has decided to base its upcoming 0.9.8 "snapshot" on APR which constitutes yet another excellent sign of its integration within the ASF.
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www | http://logging.apache.org/log4cxx |
-| . | wiki | . |
-| Mailing list | dev | log4cxx-dev@logging.apache.org (to be created) |
-| . | cvs | log4cxx-cvs@logging.apache.org (to be created) |
-| Bug tracking | . | http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10550 |
-| Source code | CVS | logging-log4cxx |
-| Mentors | id1 | Ceki Gulcu |
-| Committers | . | Curt Arnorld, Michael Catanzariti, Christophe de Vienne |
-| Extra | . | . |
-
-
-- none
-
-Reports were sent to the Board instead.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2004-01-21 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-01-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2004-01-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2004-01-15 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2004-01-15 | Tell Mentors to track progress in the file 'incubator/projects/log4cxx.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-02-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-06-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2004-11-27 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2004-11-27 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-C. Arnold writes: log4cxx currently depends on libxml2 (LGPL) or MSXML for XML configuration. Migration to Apache Portable Runtime in progress.
-
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2004-02-12 | Check that all active committers have submitted a contributors agreement. |
-| 2004-03-04 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-3 current committers: carnold, cdevienne, mcatan. There are mutually independent and without any known relationship with a single commercial entitiy.
-
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2004-03 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2004-01-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2004-05-21 | A decision has been made to chose JIRA. |
-| 2004-03 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-The project has decided rely on Apache APR. Migration is in progress.
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._ 
-
-
- _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-Curt Arnold currently leads the log4cxx effort. He took over from Michael Catanzariti, project founder, who is temporarily absent on a year long trip around the world. The Logging Services PMC found this smooth transition particularly reassuring.
-
-
-
-- Are there three or more independent committers? (The legaldefinition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-See previous comments.
-
-
-
-- Are project decisions being made in public by the committers?
-
-Voting examples APR: http://nagoya.apache.org/eyebrowse/ReadMsg?listName=log4cxx-dev@loggin .apache.org&amp;msgNo=331
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-0.9.6 and 0.9.7 appeared to be released with no public discussion. 0.9.8 discussion: http://nagoya.apache.org/eyebrowse/ReadMsg?listName=log4cxx-dev@loggin .apache.org&amp;msgNo=338
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-Yes. It has on 2004-11-27.
-
-
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-Yes, it has voted so on 2005-01-11.
-
diff --git a/content/log4cxx2.md b/content/log4cxx2.md
deleted file mode 100644
index 66fb543..0000000
--- a/content/log4cxx2.md
+++ /dev/null
@@ -1,143 +0,0 @@
-Title: log4cxx
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Log4cxx implements a logging API similar to log4j but in C++. On 2013-12-09, the [log4cxx](log4cxx.html) project has decided to return to the incubator with a new group of committers.
-
-
-<span class="graduated">The log4cxx2 project graduated on 2017-03-16</span>
-
-
-
-- 2013-12-09: Log4cxx returns to the incubator with a new group of committers
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [logging.apache.org/log4cxx](http://logging.apache.org/log4cxx)  |
-| Mailing list | dev |  `log4cxx-dev`  `@`  `logging.apache.org`  |
-| . | user |  `log4cxx-user`  `@`  `logging.apache.org`  |
-| Bug tracking | Bugzilla |  [https://issues.apache.org/jira/browse/LOGCXX](https://issues.apache.org/jira/browse/LOGCXX)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/log4cxx/](http://svn.apache.org/repos/asf/incubator/log4cxx/)  |
-| Mentors |
-|  | rgoers | Ralph Goers |
-| Committers | fseydoux | Florian Seydoux |
-|  | chand | chand priyankara |
-|  | nickwilliams | Nick Williams |
-|  | tschoening | Thorsten Schöning |
-|  | rhys | Rhys Ulerich |
-|  | joseph | Joseph Southwell |
-|  | alexz | Alexandru Zbârcea |
-
-
-- tbd
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| N/A | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | <strike>If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names.</strike> |
-| N/A | <strike>If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.</strike> |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-12-12 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-12-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | <strike>Ask infrastructure to set up wiki (Confluence, Moin).</strike> |
-| 2013-12-12 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-12-12 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-12-12 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-12-12 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-12-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-12-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-12-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-12-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-12-12 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| 2013-12-16 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/log4net.md b/content/log4net.md
deleted file mode 100644
index 1c33065..0000000
--- a/content/log4net.md
+++ /dev/null
@@ -1,160 +0,0 @@
-Title: log4net
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The log4net project graduated on 2007-02</span>
-
-
-The Log4net project graduated the incubator on 2007-02-17 and is now part of the Logging Services project. It implements a logging API similar to log4j but in the C# language.
-
-
-
-- The Log4net project graduated the incubator on 2007-02-17 and is now part of the Logging Services project.
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://logging.apache.org/log4net](http://logging.apache.org/log4net)  |
-| . | wiki | . |
-| Mailing list | dev | log4net-dev@logging.apache.org |
-| . | user | log4net-user@logging.apache.org |
-| . | cvs | log4net-cvs@logging.apache.org |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/LOG4NET](http://issues.apache.org/jira/browse/LOG4NET)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/logging/log4net/trunk](https://svn.apache.org/repos/asf/logging/log4net/trunk)  |
-| Mentors | id1 | Mark Womack |
-| Committers | nicko | Nicko Cadell |
-| . | niall | Niall Daley |
-| . | drieseng | Gert Driesen |
-| . | rgrabowski | Rob Grabowski |
-| Extra | . | . |
-
-| Date | Status |
-|------|--------|
-| 2004-05 | Log4net now supports building under the Mono Beta 1 runtime. |
-| 2005-02 | The Logging Services PMC would like to see the log4net project graduate in the coming few months. A new log4net development release is in preparation which the LS PMC has approved. We intend to seek the approval of the Incubator PMC in the coming days. The finalised log4net version 1.2 should be released within the next quarter.<br></br><br></br>log4net is now using a JIRA issue tracker. |
-| 2005-05 | The incubator approved the release of log4net 1.2.9 beta which is the first release of log4net under Apache. The upcoming release goals are to ensure consistent code quality and improve the available end user documentation.<br></br><br></br>The project's ongoing goal is to increase the number of active committers and to graduate from incubation. |
-| 2005-08 | The log4net project is still in incubation, but it is active. The Logging Services PMC is currently voting on a new committer, Rob Grabowski (rgrabowski@apache.org), and the vote seems likely to pass. This would bring the number of active committers to 4, helping meet incubator exit criteria.<br></br><br></br>The log4net committers are working towards the next maintenance release with a focus on code quality and improving the available end user documentation. |
-| 2005-10 | Log4net has elected Rob Grabowski (rgrabowski at apache dot org) as a new committer. This brings the number of active committers to 4, helping meet incubator exit criteria.<br></br><br></br>We have recently migrated from CVS to SVN.<br></br><br></br>We are working towards the next maintenance release with a focus on code quality and improving the available end user documentation. |
-| 2006-01 | The log4net committers are working on compatibility with the .NET 2.0 releases from Microsoft and Mono. |
-| 2007-02-17 | Graduation from Incubator to Logging Services. |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2004-01-15 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2004-01-15 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2004-01-06 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-01-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2004-01-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2004-01-15 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2004-01-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-01-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2005-03-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2005-03-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2005-03-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| 2004-01-23 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| 2004-01-23 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| 2004-01-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2004-01-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2005-02-23 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2004-01-15 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._ 
-
-
- _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-
-- Are project decisions being made in public by the committers?
-
-From the discussions on log4net-dev@logging.apache.org that appears to be the case.
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-Nicko Cadell has promtly responded to IP related concerns raised on the general@incubator and log4net-dev mailing lists.
-
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/log4php.md b/content/log4php.md
deleted file mode 100644
index 60c7652..0000000
--- a/content/log4php.md
+++ /dev/null
@@ -1,174 +0,0 @@
-Title: log4php
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Log4php project graduated on 2010-03-07</span>
-
-
-The Log4php project restarted on 2007-07-04 with a new development team. It implements a logging API similar to log4j but in PHP.
-
-
-
-- 2010-03-07 - Log4PHP graduated to a sub-project of Logging PMC
-
-- 2009-10-08 - New Committer: Christian Hammers
-
-- 2009-04-28 - New Committer: Christian Grobmeier
-
-- 2009-04-28 - New Committer: Gavin McDonald
-
-- 2009-04-28 - New Mentor: Niclas Hedhman
-
-- 2009-04-28 - New Mentor: Gavin McDonald
-
-- 2007-07-04 - The Log4php project reentered incubation with a new development team.
-
-- 2007-02-17 - The Log4php project was retired from incubation due to lack of community momentum.
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://logging.apache.org/log4php/](http://logging.apache.org/log4php/)  |
-| Mailing list | dev |  [log4php-dev@logging.apache.org](mailto:log4php-dev@logging.apache.org) [ [Subscribe](log4php-dev-subscribe@logging.apache.org) | [Unsubscribe](log4php-dev-unsubscribe@logging.apache.org) ] |
-| Mailing list | commits |  `log4php-dev`  `@`  `logging.apache.org`  |
-| Mailing list | user |  [log4php-user@logging.apache.org](mailto:log4php-user@logging.apache.org) [ [Subscribe](log4php-user-subscribe@logging.apache.org) | [Unsubscribe](log4php-user-unsubscribe@logging.apache.org) ] |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/LOG4PHP](https://issues.apache.org/jira/browse/LOG4PHP)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/logging/log4php/trunk](https://svn.apache.org/repos/asf/logging/log4php/trunk)  |
-| Mentor | gmcdonald | Gavin McDonald |
-| Mentor | niclas | Niclas Hedhman |
-| Mentor | jim | Jim Jagielski |
-| Committer | alvero | Alvero Carrasco |
-| Committer | kurdalen | Knut Urdalen |
-| Committer | grobmeier | Christian Grobmeier |
-| Committer | gmcdonald | Gavin McDonald |
-| Committer | chammers | Christian Hammers |
-
-
-- Status Reports due March, June, September, December
-
-Status reports are held on the Incubator Wiki site:
-
-
-
--  [June 2009](http://wiki.apache.org/incubator/June2009) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009) 
-
--  [December 2009](http://wiki.apache.org/incubator/December2009) 
-
--  [March 2010](http://wiki.apache.org/incubator/March2010) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated [done] {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2004-01-15 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2004-01-15 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2004-01-06 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility [done] {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-01-22 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2004-01-22 | Subscribe all Mentors on the pmc and general lists. |
-| 2004-01-22 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2004-01-22 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright [done] {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-02-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-02-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights [done] {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2004-06-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers [done] {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| 2004-01-22 | Check that all active committers have submitted a contributors agreement. |
-| 2004-01-22 | Add all active committers in the STATUS file. |
-| 2004-01-22 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure [done] {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| 2004-01-22 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2004-01-22 | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2004-01-22 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation [done] {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._ 
-
-
- _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-
-- Are project decisions being made in public by the committers?
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit [done] {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/lokahi.md b/content/lokahi.md
deleted file mode 100644
index c40b35d..0000000
--- a/content/lokahi.md
+++ /dev/null
@@ -1,158 +0,0 @@
-Title: Lokahi Project Incubation Status
-
-<div class="section">
-This page tracks the project status, incubator-wise. For broader project information, review the project website [http://incubator.apache.org/lokahi/](http://incubator.apache.org/lokahi/) .
-
-
-<span class="retired">The Lokahi project retired on 2009-08-16</span>
-
-</div><div class="section">
-The Apache Lokahi project presents a web based modular framework written in Java to manage both Apache HTTP Server and Apache Tomcat, scaling to both horizontal and vertical buildout of these services across an enterprise.
-
-
-The project originated as TMCg2 at Merck, and was donated to the ASF to benefit the broader Apache HTTP Server and Apache Tomcat communities. The name Lokahi (Loh-kah-hee) was chosen as it is the Hawaiian word for "harmony and unity"; one primary goal of the project is to invite ASF technologies to participate in a harmonious configuration framework, unifying configuration and deployment of our projects.
-
-</div><div class="section">
-
-- Aug 16 2000; Incubator PMC decided to retire the project as inactive.
-
-- Oct 2 2006; Milestone 1 released.
-
-- Mar 1 2005; the project has just begun provisioning resources.
-
-- See more news in Incubation Work Items section below.
-</div><div class="section">
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/lokahi/](http://incubator.apache.org/lokahi/)  |
-| . | wiki |  [http://wiki.apache.org/lokahi/](http://wiki.apache.org/lokahi/)  |
-| Mailing Lists | dev |  `lokahi-dev`  `incubator.apache.org`  |
-| . | commits |  `lokahi-commits`  `incubator.apache.org`  |
-| . | private |  `lokahi-private`  `incubator.apache.org`  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/lokahi](http://issues.apache.org/jira/browse/lokahi)  |
-| Source Code | svn |  [http://svn.apache.org/repos/asf/incubator/lokahi/](http://svn.apache.org/repos/asf/incubator/lokahi/)  |
-| Sponsor | incubator | Incubator PMC |
-| Mentors | wrowe | William A. Rowe, Jr. |
-| . | yoavs | Yoav Shapira |
-| . | stoddard | Bill Stoddard |
-| Committers | neils | Neil Stein |
-| . | toback | Steve Toback |
-| . | kailass | Kailas Simha |
-</div>
-
--  [November 2006](http://wiki.apache.org/incubator/November2006) : Top items to resolve before graduation, MySQL support.
-
--  [August 2006](http://wiki.apache.org/incubator/August2006) : Preparing for a first milestone release.
-
--  [May 2006](http://wiki.apache.org/incubator/May2006) : After a fairly active April, May was a bit slower.
-
--  [April 2006](http://wiki.apache.org/incubator/April2006) : The Lokahi project is still setting up its infrastructure: Subversion has been set up with proper commit privileges, and the initial code import just took place a couple of days ago. The Lokahi name has been cleared as far as trademark usage goes.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| 2005-12-06 | Submit propsal to general(at)incubator to consider for adoption as a new ASF project.<br></br>Message ID: &lt;FF5CC930B20F6047A645F97065DFED00CB09CE@usctmx1110.merck.com&gt; |
-<td>2006-01-07</td><td>Tally votes to accepted project into incubator;<br></br>+1: mads, jerenkrantz, jimjag, wrowe, geirm<br></br>0: [none]<br></br>-1: [none]</td>| 2006-02-17 | Make sure that the requested project name does not already exist or is trademarked for an existing software product.<br></br>Reservations about TMCg2 inspired a name change, initial choice of Ohana proved troublesome with trademarks.<br></br>Final name, Lokahi acceptable to all. Checked google.com, verified Echo did not adopt, checked uspto.gov's TESS database, no apparent conflicts (wrowe). |
-| 2006-03-17 | Establish SVN repository layout and commit privileges. (wrowe). |
-| 2006-04-16 | Bill Stoddard joined the project as a mentor. |
-| [WIP] | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module name. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|---------------------|---------------------|
-| February 2006 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| February 2006 | Subscribe all Mentors on the pmc and general lists. |
-| March 2006 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/lokahi.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|---------------------|---------------------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|---------------------|---------------------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|---------------------|---------------------|
-| 2006-02-17 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|---------------------|---------------------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Put together a list of things to do and publish it on the project site._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/lucene-korean-analyzer.md b/content/lucene-korean-analyzer.md
new file mode 100644
index 0000000..880cab6
--- /dev/null
+++ b/content/lucene-korean-analyzer.md
@@ -0,0 +1,68 @@
+Title: Lucene Korean Analyzer Intellectual Property (IP) Clearance Status
+
+
+이수명 (SooMyung Lee) is contributing software he wrote to perform Korean text processing in Lucene, including a Korean morphological analyzer, dictionaries, a Korean tokenizer and a Korean filter.
+
+
+The software package has been hosted on SourceForge, at [http://sourceforge.net/projects/lucenekorean](http://sourceforge.net/projects/lucenekorean) .
+
+
+The donation process is being tracked on [LUCENE-4956](https://issues.apache.org/jira/browse/LUCENE-4956) .
+
+
+
+- The Lucene PMC will be responsible for the code.
+
+
+- The code will be included in the Lucene Core project.
+
+
+- Steve Rowe is managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-04-24 | See [LUCENE-4956](https://issues.apache.org/jira/browse/LUCENE-4956)  |
+
+MD5 sum for donated software: see [LUCENE-4956](https://issues.apache.org/jira/browse/LUCENE-4956) .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-04-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-05-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: SooMyung Lee (original developer)
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- SooMyung Lee (original developer)
+
+| date | item |
+|------|------|
+| 2013-04-26 | Check that all active committers have a signed CLA on record. |
+| 2013-04-24 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-05-05 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-05-05 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread on general@incubator.apache.org is here: [http://mail-archives.apache.org/mod_mbox/incubator-general/201305.mbox/%3c7AD4D4E3-530B-41E3-8323-DA3D66A40E7E@apache.org%3e](http://mail-archives.apache.org/mod_mbox/incubator-general/201305.mbox/%3c7AD4D4E3-530B-41E3-8323-DA3D66A40E7E@apache.org%3e) 
diff --git a/content/lucene-kuromoji.md b/content/lucene-kuromoji.md
new file mode 100644
index 0000000..280f8ef
--- /dev/null
+++ b/content/lucene-kuromoji.md
@@ -0,0 +1,70 @@
+Title: Kuromoji Codebase Intellectual Property (IP) Clearance Status
+
+
+The project was started in 2010 since we couldn't find any high-quality, actively maintained and easy-to-use Java-based Japanese morphological analyzers, and these become many of our design goals for Kuromoji. Kuromoji also has a segmentation mode that is particularly useful for search, which we hope will interest Apache Lucene and Solr users. Compound-nouns, such as 関西国際空港 (Kansai International Airport) and 日本経済新聞 (Nikkei Newspaper), are segmented as one token with most analyzers. As a result, a search for 空港 (airport) or 新聞 (newspaper) will not give you a for in these words. Kuromoji can segment these words into 関西 国際 空港 and 日本 経済 新聞, which is generally what you would want for search and you'll get a hit. The target was to make sure the technology has a license that makes it compatible with other Apache Software Foundation software to maximize its usefulness. Kuromoji has an Apache License 2.0 and all code is currently owned by Atilika Inc. The software has been developed by Masaru Hasegawa and Christian Moen.
+
+
+
+- Which PMC will be responsible for the code: Apache Lucene
+
+
+- Into which existing project/module: Apache Lucene Java
+
+
+- Officer or member managing donation: Simon Willnauer
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2011-07-12 | Chistian Moen created https://issues.apache.org/jira/browse/LUCENE-3305, packaged the source with appropriate Apache Headers and uplaoded them to the referenced issue ( kuromoji-solr-0.5.3-asf.tar.gz &amp; kuromoji-0.7.6-asf.tar.gz) |
+
+MD5 sum for donated software:
+MD5 (kuromoji-0.7.6-asf.tar.gz) = a84f016bd5162e57423a1da181c25f36
+
+
+MD5 (kuromoji-solr-0.5.3-asf.tar.gz) = a3e7d5afba64ec0843be6d4dbb95be1c
+
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2011-08-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2011-09-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Kuromoji_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Masaru Hasegawa (original developer)
+
+- Christian Moen (original developer)
+
+| date | item |
+|------|------|
+| 2011-08-02 | Check that all active committers have a signed CLA on record. |
+| 2011-08-02 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2011-08-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2011-09-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. | The terms of the included IPADIC license has been discussed on LEGAL-97. Apache Lucene is free to use the IPADIC Licensed dictionary files by following the terms and conditions in the license. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The vote on the dev@lucene.apache.org mailing list to accept Kuromoji into the Apache Lucene project passed on 2011-08-11.
diff --git a/content/lucene-levenshtein-automaton-mdag.md b/content/lucene-levenshtein-automaton-mdag.md
new file mode 100644
index 0000000..04a5244
--- /dev/null
+++ b/content/lucene-levenshtein-automaton-mdag.md
@@ -0,0 +1,71 @@
+Title: Lucene LevenshteinAutomaton/MDAG Intellectual Property (IP) Clearance Status
+
+
+Kevin Lawson is contributing source code he developed to the Lucene Core project. See [LUCENE-4947](https://issues.apache.org/jira/browse/LUCENE-4947) for more details.
+
+
+LevenshteinAutomaton is a fast and comprehensive Java library capable of performing automaton and non-automaton based Levenshtein distance determination and neighbor calculations. The collection of related utilities affords developers the luxury of choosing the most appropriate edit distance-related procedure for their needs at any given time.
+
+
+MDAG (minimalistic directed acyclic graph) is used by the automaton code to store and step through word sets.
+
+
+The LevenshteinAutomaton and MDAG sources are currently hosted on Github at [https://github.com/klawson88/LevenshteinAutomaton](https://github.com/klawson88/LevenshteinAutomaton) , and [https://github.com/klawson88/MDAG](https://github.com/klawson88/MDAG) .
+
+
+
+- The Lucene PMC will be responsible for the code.
+
+
+- The code will be included in the Lucene Core project.
+
+
+- Steve Rowe is managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-04-24 | See [LUCENE-4947](https://issues.apache.org/jira/browse/LUCENE-4947) . |
+
+MD5 sum for donated software: See [LUCENE-4947](https://issues.apache.org/jira/browse/LUCENE-4947) .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-04-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Kevin Lawson
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Kevin Lawson (original developer)
+
+| date | item |
+|------|------|
+| 2013-04-27 | Check that all active committers have a signed CLA on record. |
+| 2013-04-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/lucene-query-parser.md b/content/lucene-query-parser.md
new file mode 100644
index 0000000..e6221f8
--- /dev/null
+++ b/content/lucene-query-parser.md
@@ -0,0 +1,62 @@
+Title: Lucene Query Parser Intellectual Property (IP) Clearance Status
+
+
+Describe the incoming codebase, including whether it is a large set of patches, new functional modules, etc.
+
+
+
+- Which PMC will be responsible for the code: Lucene
+
+
+- Into which existing project/module: Lucene Java
+
+
+- Officer or member managing donation: Grant Ingersoll, PMC Chair
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-07-10 | Code in https://issues.apache.org/jira/browse/LUCENE-1567. new_query_parser_src.tar |
+
+MD5 or SHA1 sum for donated software: b678596e3dea63e8e66e035d6dc7f45e (md5sum version is included in coreutils 6.10-6ubuntu1 The GNU core utilities OS: Ubuntu Jaunty 2.6.28-13-server i686 GNU/Linux)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-06-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-06-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: extensible Query Parser Framework for Apache Lucene
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2009-06-16 | Check that all active committers have a signed CLA on record. |
+| 2009-06-16 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2009-06-16 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-06-16 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/lucene.net.md b/content/lucene.net.md
deleted file mode 100644
index ae17c56..0000000
--- a/content/lucene.net.md
+++ /dev/null
@@ -1,144 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-<span class="graduated">The Lucene.NET project graduated on 2012-08-15</span>
-
-
-Lucene.Net is a source code, class-per-class, API-per-API and algorithmatic port of the Java Lucene search engine to the C# and .NET platform utilizing Microsoft .NET Framework.
-
-
-
-- 2011-02-05 Project re-enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/lucene.net/](http://incubator.apache.org/lucene.net/)  |
-| . | wiki |  [https://cwiki.apache.org/LUCENENET/](https://cwiki.apache.org/LUCENENET/)  |
-| Mailing list | dev |  `lucene-net-dev`  `@`  `lucene.apache.org`  |
-| . | user |  `lucene-net-user`  `@`  `lucene.apache.org`  |
-| . | commits |  `lucene-net-commits`  `@`  `lucene.apache.org`  |
-| . | ppmc |  `lucene-net-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/LUCENENET](https://issues.apache.org/jira/browse/LUCENENET)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/lucene.net/](https://svn.apache.org/repos/asf/incubator/lucene.net/)  |
-| Mentors | bimargulies | Benson Marguilies |
-| . | bodewig | Stefan Bodewig |
-| . | gianugo | Gianugo Rabellino |
-| Committers | ccurrens | Chris Currens |
-| . | digy | DIGY |
-| . | mherndon | Michael Herndon |
-| . | pnasser | Prescott Nasser |
-| . | sergeymirvoda | Sergey Mirvoda |
-| . | slombard | Scott Lombard |
-| . | thoward | Troy Howard |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-07-12 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-02-05 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-02-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| N/A | Ask infrastructure to set up and archive mailing lists. |
-| N/A | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-02-11 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| N/A | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-01-12 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-02-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-02-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-02-05 | Tell Mentors to track progress in the file 'incubator/projects/lucene.net.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-02-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-02-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-02-05 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-02-05 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-02-07 | Check that all active committers have submitted a contributors agreement. |
-| 2011-02-05 | Add all active committers in the STATUS file. |
-| 2011-02-07 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/lucene4c.md b/content/lucene4c.md
deleted file mode 100644
index 1166e7e..0000000
--- a/content/lucene4c.md
+++ /dev/null
@@ -1,148 +0,0 @@
-Title: Lucene4c Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Lucene4c project retired on 2006-10-15</span>
-
-
-Lucene4c is a port of the [Lucene](http://lucene.apache.org/java/) search engine from Java to C, built on top of the [Apache Portable Runtime](http://apr.apache.org/) .
-
-
-Unlike other Lucene ports, Lucene4c does not simply stick to the API used in the original Java based Lucene, instead it attempts to build an idiomatic APR/C based API that will be familiar to C programmers while making use of the file formats and algorithms created by the original Lucene project.
-
-
-
-- 2006-10-15 - Project closed due to lack of activity
-
-
-- Project Website: [http://electricjellyfish.net/garrett/lucene4c/](http://electricjellyfish.net/garrett/lucene4c/) 
-
-
-- Project Mailing Lists: None yet.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/lucene4c/](http://incubator.apache.org/lucene4c/)  |
-|  | wiki | None, will use Lucene wiki for the time being |
-| Mailing list | dev | lucene4c-dev@incubator.apache.org |
-|  | commits | lucene4c-commits@incubator.apache.org |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/](http://issues.apache.org/jira)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/lucene4c](https://svn.apache.org/repos/asf/incubator/lucene4c)  |
-| Mentors | ehatcher | Erik Hatcher |
-| Committers | rooneg | Garrett Rooney |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/lucy.md b/content/lucy.md
deleted file mode 100644
index 2284e7a..0000000
--- a/content/lucy.md
+++ /dev/null
@@ -1,185 +0,0 @@
-Title: Lucy Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Lucy project graduated on 2012-02-22</span>
-
-
-Lucy is a loose port of the Lucene search engine library, written in C and targeted at dynamic language users.
-
-
-
-- 2010-07-22 Project enters incubation.
-
-- 2011-04-09 New Committer / PPMC member David E. Wheeler.
-
-- 2011-05-12 New Mentor Joe Schaefer.
-
-- 2011-06-02 Version 0.1.0 released.
-
-- 2011-07-24 Version 0.2.0 released.
-
-- 2011-08-14 Version 0.2.1 released.
-
-- 2011-08-26 New Committer Brad C. Harder.
-
-- 2011-11-05 Version 0.2.2 released.
-
-- 2011-11-29 New Committer / PPMC member Nick Wellnhofer
-
-- 2011-12-01 New Committer Logan Bell.
-
-- 2011-12-30 New PPMC member Logan Bell.
-
-- 2012-02-01 New Committer Dan Markham.
-
-- 2012-02-02 Version 0.3.0 released.
-
-- 2012-02-22 Incubator PMC votes to graduate Apache Lucy.
-
-- 2012-03-21 Board approves charter establishing Apache Lucy top-level project.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/lucy/](http://incubator.apache.org/lucy/)  |
-| . | wiki |  [http://wiki.apache.org/lucy/](http://wiki.apache.org/lucy/)  |
-| Mailing list | dev |  `lucy-dev`  `@`  `incubator.apache.org`  |
-| . | users |  `lucy-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `lucy-commits`  `@`  `incubator.apache.org`  |
-| . | issues |  `lucy-issues`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/LUCY](https://issues.apache.org/jira/browse/LUCY)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/lucy/](https://svn.apache.org/repos/asf/incubator/lucy/)  |
-| Mentors | hossman | Chris Hostetter |
-| . | mattmann | Chris Mattmann |
-| . | joes | Joe Schaefer |
-| . | upayavira | Upayavira |
-| Committers | logie | Logan Bell |
-| . | bch | Brad C. Harder |
-| . | marvin | Marvin Humphrey |
-| . | karpet | Peter Karman |
-| . | nate | Nathan Kurz |
-| . | dmarkham | Dan Markham |
-| . | theory | David E. Wheeler |
-| . | nwellnhof | Nick Wellnhofer |
-| . | simonw | Simon Willnauer |
-
-
--  [August 2010](http://wiki.apache.org/incubator/August2010) 
-
--  [September 2010](http://wiki.apache.org/incubator/September2010) 
-
--  [October 2010](http://wiki.apache.org/incubator/October2010) 
-
--  [January 2011](http://wiki.apache.org/incubator/January2011) 
-
--  [April 2011](http://wiki.apache.org/incubator/April2011) 
-
--  [July 2011](http://wiki.apache.org/incubator/July2011) 
-
--  [October 2011](http://wiki.apache.org/incubator/October2011) 
-
--  [January 2012](http://wiki.apache.org/incubator/January2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-10-26 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2010-06-26 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-08-19 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-08-13 | Ask infrastructure to set up and archive mailing lists. |
-| NA/DONE | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| NA/DONE | Ask infrastructure to set up wiki (Confluence, Moin). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-07-17 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-08-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-07-25 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-08-05 | Tell Mentors to track progress in the file 'incubator/projects/lucy.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-10-29 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-10-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| 2011-03-20 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-03-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-07-23 | Check that all active committers have submitted a contributors agreement. |
-| 2010-07-24 | Add all active committers in the STATUS file. |
-| 2010-07-23 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project specific {#Project+specific}
-
- _Make our 0.1.0-incubating release._  **DONE 2011-06-02** 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/madlib.md b/content/madlib.md
deleted file mode 100644
index 6f8a967..0000000
--- a/content/madlib.md
+++ /dev/null
@@ -1,232 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The MADlib project graduated on 2017-07-19</span>
-
-
-Big Data Machine Learning in SQL for Data Scientists
-
-
-
-- 2015-09-15 Project enters incubation.
-
-- 2015-10-27 ApacheMADlib twitter account created and social media guidelines discussed.
-
-- 2015-12-15 Project fully transitions to ASF infrastructure.
-
-- 2015-12-24 The community started to develop consensus on what it means to be a MADlib committer.
-
-- 2016-01-12 Xiaocheng Tang voted in as a new committer.
-
-- 2016-03-11 Our first v1.9alpha-incubating release created.
-
-- 2016-03-21 GSOC application submitted.
-
-- 2016-04-06 Our second v1.9-incubating release created.
-
-- 2016-09-08 Orhan Kislal voted in as a new committer.
-
-- 2016-09-08 Nandish Jayaram voted in as a new committer.
-
-- 2016-09-19 Our third v1.9.1-incubating release created.
-
-- 2016-10-24 Raised a BSD attribution question to our mentors and Apache Legal.
-
-- 2016-11-04 Bob Glithero joins the community contributing to developer documentation and content.
-
-- 2016-11-14 Presentation at ApacheCON EU.
-
-- 2016-11-16 Presentation at PGConf Silicon Valley.
-
-- 2016-11-30 Virtual MADlib community call.
-
-- 2016-12-09 MADlib Principal Component Analysis demo posted to YouTube.
-
-- 2017-02-04 MADlib talk at FOSDEM 2017 on Graph analytics.
-
-- 2017-03-10 Our fourth v1.10.0-incubating release created.
-
-- 2017-03-23 MADlib community call.
-
-- 2017-05-17 Our fifth v1.11.0-incubating release created.
-
-- 2017-05-25 MADlib community call.
-
-- 2017-07-19 MADlib graduated and is now a top level Apache project.
-
-- 2017-08-22 MADlib trademark has been transferred to ASF and PODLINGNAMESEARCH-125 is resolved.
-
-
--  [Apache MADlib (incubating) website](http://madlib.incubator.apache.org) 
-
-
--  [How to contribute to Apache MADlib (incubating)](https://cwiki.apache.org/confluence/display/MADLIB/Contribution+Guidelines) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://madlib.incubator.apache.org/](http://madlib.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/MADLIB](https://cwiki.apache.org/confluence/display/MADLIB)  |
-| Mailing list | dev |  `dev`  `@`  `madlib.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `madlib.incubator.apache.org`  |
-| . | user |  `user`  `@`  `madlib.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `madlib.incubator.apache.org`  |
-| . | private |  `private`  `@`  `madlib.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/MADLIB](https://issues.apache.org/jira/browse/MADLIB)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-madlib.git](https://gitbox.apache.org/repos/asf/incubator-madlib.git)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-madlib](http://github.com/apache/incubator-madlib)  |
-| . | Website content and docs |  [https://svn.apache.org/repos/asf/incubator/madlib](https://svn.apache.org/repos/asf/incubator/madlib)  |
-| Mentors | cos | Konstantin Boudnik |
-| . | tdunning | Ted Dunning |
-| . | rvs | Roman Shaposhnik |
-| Committers | cos | Konstantin Boudnik |
-| . | xctang | Xiaocheng Tang |
-| . | okislal | Orhan Kislal |
-| . | njayaram | Nandish Jayaram |
-| . | gregchase | Gregory Chase |
-| . | saerni | Sarah Joann Aerni |
-| . | cwelton | Caleb Welton |
-| . | fmcquillan | Frank McQuillan |
-| . | keesiong | Kee Siong Ng |
-| . | ihuston | Ian Huston |
-| . | riyer | Rahul Iyer |
-| . | myang | Yu Yang |
-| . | atri | Atri Sharma |
-| . | mnxn | Michael Nixon |
-| . | vatsan | Srivatsan Ramanujam |
-| . | gautamsm | Gautam Muralidhar |
-| . | jacksoncvm | Chloe Jackson |
-| . | vgumashta | Vaibhav Gumashta |
-| . | tdunning | Ted Dunning |
-| . | rvs | Roman Shaposhnik |
-
-
--  [October 2015](http://wiki.apache.org/incubator/October2015) 
-
--  [November 2015](http://wiki.apache.org/incubator/November2015) 
-
--  [December 2015](http://wiki.apache.org/incubator/December2015) 
-
--  [January 2016](http://wiki.apache.org/incubator/January2016) 
-
--  [April 2016](http://wiki.apache.org/incubator/April2016) 
-
--  [July 2016](http://wiki.apache.org/incubator/July2016) 
-
--  [October 2016](http://wiki.apache.org/incubator/October2016) 
-
--  [January 2017](https://wiki.apache.org/incubator/January2017) 
-
--  [April 2017](https://wiki.apache.org/incubator/April2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-09-15 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-09-15 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via [INFRA-10432](https://issues.apache.org/jira/browse/INFRA-10432)  |
-| 2015-09-15 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-09-15 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2015-09-15 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-09-15 | Ask infrastructure to set up svn pubsub website. |
-| 2015-12-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-12-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-12-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-03-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-| 2016-03-11 | The Apache RAT check was added to check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-03-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Check that all active committers have submitted a contributors agreement. |
-| 2015-12-15 | Add all active committers in the podling status file. |
-| 2015-12-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/mahout-taste.md b/content/mahout-taste.md
new file mode 100644
index 0000000..86b87fd
--- /dev/null
+++ b/content/mahout-taste.md
@@ -0,0 +1,65 @@
+Title: Taste Collaborative Filtering Codebase Intellectual Property (IP) Clearance Status
+
+
+The Taste Collaborative Filtering engine is a Java based library for performing collaborative filtering. It was written and maintained by a single committer, Sean Owen, on SourceForge. It is currently licensed under the Apache Software License, 2.0.
+
+
+The contributed code is attached to issue [MAHOUT-37](http://issues.apache.org/jira/browse/MAHOUT-37) and an MD5 hash of db78114f9799905c7d4a5a1907a03e6f.
+
+
+
+- Which PMC will be responsible for the code: Lucene
+
+
+- Into which existing project/module: Mahout
+
+
+- Officer or member managing donation: Grant Ingersoll
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| NA | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: db78114f9799905c7d4a5a1907a03e6f. From Sean Owen: It's /sbin/md5 on Mac OS X 10.4.11, on a PowerPC G5. It doesn't report a version but ssh reports it's using OpenSSL 0.9.7l if that helps.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-05-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-05-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Taste open source project
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Sean Owen
+
+| date | item |
+|------|------|
+| 2008-04-13 | Check that all active committers have a signed CLA on record. Sean Owen is only active committer for Taste and has a CLA on file (srowen) |
+| 2008-04-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-05-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-04-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://mail-archives.apache.org/mod_mbox/incubator-general/200805.mbox/ajax/%3c9EBB5BAC-BAA9-4486-BBAF-FB071F075669@apache.org%3e
diff --git a/content/manifoldcf.md b/content/manifoldcf.md
deleted file mode 100644
index 5b1bf35..0000000
--- a/content/manifoldcf.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: ManifoldCF Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website at [http://incubator.apache.org/connectors](http://incubator.apache.org/connectors) .
-
-
-<span class="graduated">The Manifold Connector Framework (ManifoldCF) project graduated on 2012-05-16</span>
-
-
-The ManifoldCF project (MCF) is an effort to provide build and support an open source framework for connecting to content repositories like Microsoft Sharepoint and EMC Documentum, amongst others via a single API.
-
-
-
-- 2012-05-16 Apache ManifoldCF graduated to a top level project
-
-- 2010-01-10 Project enters incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/connectors/](http://incubator.apache.org/connectors/)  |
-| . | wiki |  [http://cwiki.apache.org/CONNECTORS/](http://cwiki.apache.org/CONNECTORS/)  |
-| Mailing list | dev |  `connectors-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `connectors-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [http://issues.apache.org/jira/browse/CONNECTORS](http://issues.apache.org/jira/browse/CONNECTORS)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/lcf/](http://svn.apache.org/repos/asf/incubator/lcf/)  |
-| Mentors | teofili | Tommaso Teofili |
-| . | jukka | Jukka Zitting |
-| . | gianugo | Gianugo Rabellino |
-| Committers | . | . |
-| . | shinichiro | Shinichiro Abe |
-| . | ridder | Erlend Garåsen |
-| . | piergiorgio | Piergiorio Lucidi |
-| . | hozawa | Hitoshi Ozawa |
-| . | simonw | Simon Willnauer |
-| . | kwright | Karl Wright |
-| . | kwright | Karl Wright |
-| . | tommaso | Tommaso Teofili |
-| . | jukka | Jukka Zitting |
-| Extra | . | . |
-| Developer Resources |  [Developer Resources](http://incubator.apache.org/connectors/en_US/developer-resources.html)  | . |
-
-
-- Filed quarterly (March, June, September, December)
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-01-05 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2009-12-22 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-01-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-01-15 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-01-15 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2010-01-15 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2010-02-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-01-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-01-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-01-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-01-27 | Tell Mentors to track progress in the file 'incubator/projects/lcf.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-07-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-02-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-06-30 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-06-30 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-01-27 | Check that all active committers have submitted a contributors agreement. |
-| 2011-11-16 | Add all active committers in the STATUS file. |
-| 2010-01-various dates | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _N/A_ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _N/A_ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/marmotta.md b/content/marmotta.md
deleted file mode 100644
index 7392af6..0000000
--- a/content/marmotta.md
+++ /dev/null
@@ -1,172 +0,0 @@
-Title: Marmotta Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Marmotta project graduated on 2013-11-20</span>
-
-
-The goal of Apache Marmotta is to provide an open implementation of a Linked Data Platform that can be used, extended, and deployed easily by organizations who want to publish Linked Data or build custom applications on Linked Data.
-
-
-
-- 2013-11-20 Board establishes Apache Marmotta as new TLP.
-
-- 2013-10-03 Project releases 3.1.0-incubating.
-
-- 2013-06-24 Project elects Peter Ansell as a new Committer and PPMC member.
-
-- 2013-05-21 Project elects Raffaele Palmieri as a new Committer and PPMC member.
-
-- 2013-04-26 Project releases 3.0.0-incubating.
-
-- 2012-12-03 Project enters incubation.
-
-
--  [http://marmotta.incubator.apache.org](http://marmotta.incubator.apache.org) 
-
-
--  [http://marmotta.incubator.apache.org/development.html](http://marmotta.incubator.apache.org/development.html) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://marmotta.incubator.apache.org/](http://marmotta.incubator.apache.org)  |
-| . | wiki |  [http://wiki.apache.org/marmotta/](http://wiki.apache.org/marmotta/)  |
-| Mailing list | dev |  `dev`  `@`  `marmotta.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `marmotta.incubator.apache.org`  |
-| . | user |  `users`  `@`  `marmotta.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/MARMOTTA](https://issues.apache.org/jira/browse/MARMOTTA)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-marmotta.git](https://gitbox.apache.org/repos/asf/incubator-marmotta.git)  |
-| Champion | andy | Andy Seaborne |
-| Mentors | fchrist | Fabian Christ |
-|  | nandana | Nandana Mihindukulasooriya |
-|  | andy | Andy Seaborne |
-| Committers | sschaffert | Sebastian Schaffert |
-|  | tkurz | Thomas Kurz |
-|  | jakob | Jakob Frank |
-|  | dglachs | Dietmar Glachs |
-|  | wikier | Sergio Fernández |
-|  | rwesten | Rupert Westenthaler |
-|  | rpalmieri | Raffaele Palmieri |
-|  | ansell | Peter Ansell |
-
-
--  [October 2013](http://wiki.apache.org/incubator/October2013) 
-
--  [July 2013](http://wiki.apache.org/incubator/July2013) 
-
--  [April 2013](http://wiki.apache.org/incubator/April2013) 
-
--  [February 2013](http://wiki.apache.org/incubator/February2013) 
-
--  [January 2013](http://wiki.apache.org/incubator/January2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-10-10 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product ( [PODLINGNAMESEARCH-39](http://issues.apache.org/jira/browse/PODLINGNAMESEARCH-39) ). |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2012-12-03 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-01-02 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-12-06 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-12-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-02-01 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-02-14 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-12-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-12-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-12-03 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-12-06 | Tell Mentors to track progress in the file 'incubator/projects/marmotta.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-01-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-03-23 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-03-23 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-03-23 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-12-31 | Check that all active committers have submitted a contributors agreement. |
-| 2012-12-31 | Add all active committers in the STATUS file. |
-| 2012-12-31 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-Incubator has recommended graduation: [http://s.apache.org/NHO](http://s.apache.org/NHO) 
-
diff --git a/content/marvin.md b/content/marvin.md
deleted file mode 100644
index d38f939..0000000
--- a/content/marvin.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: Marvin-AI Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Marvin-AI is an open-source artificial intelligence (AI) platform that helps data scientists, prototype and productionalize complex solutions with a scalable, low-latency, language-agnostic, and standardized architecture while simplifies the process of exploration and modeling.
-
-
-
-- 2018-08-27 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://marvin.incubator.apache.org/](http://marvin.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `marvin.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `marvin.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `marvin.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `marvin.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/MARVIN](https://issues.apache.org/jira/browse/MARVIN)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-marvin.git](https://gitbox.apache.org/repos/asf/incubator-marvin.git)  |
-| Mentors | colen | William Colen |
-| . | jim | Jim Jagielski |
-| . | lresende | Luciano Resende |
-| Committers | . | Alan Silva |
-| . | . | Brody West |
-| . | . | Bruno Piraja |
-| . | . | Daniel Takabayashi |
-| . | . | Danilo Nunes |
-| . | . | Harrison Wang |
-| . | . | Jeremy Elster |
-| . | . | Lucas Bonatto Miguel |
-| . | . | Rafael Novello |
-| . | . | Willian Leite |
-| . | . | Zhang Yifei |
-| Roster | Whimsy |  [Marvin Roster](https://whimsy.apache.org/roster/ppmc/marvin)  |
-
-
--  [Marvin Board Reports](https://whimsy.apache.org/board/minutes/marvin.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-11-29 | Request DNS (first step after creating podling status page) |
-| 2017-11-28 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2017-12-08 | Request [git repositories](https://reporeq.apache.org/)  |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2017-12-07 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| N/A | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-01-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-01-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-01-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/maven-aether.md b/content/maven-aether.md
new file mode 100644
index 0000000..70f1c88
--- /dev/null
+++ b/content/maven-aether.md
@@ -0,0 +1,71 @@
+Title: Aether Codebase Intellectual Property (IP) Clearance Status
+
+
+Aether is a library for working with artifact repositories. Aether deals with the specification of local repository, remote repository, developer workspaces, artifact transports, and artifact resolution.
+
+
+
+- Apache Maven PMC will be responsible for the code
+
+
+- This contribution will be placed in new components in Apache Maven Git SCM
+
+
+- Officer or member managing donation: Hervé Boutemy
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2016-02-26 | 
+
+-  [https://github.com/eclipse/aether-core](https://github.com/eclipse/aether-core) 4cf5f7a406b516a45d8bf15e7dfe3fb3849cb87b
+
+-  [https://github.com/eclipse/aether-ant](https://github.com/eclipse/aether-ant) b0c44ddfde03150df1f1d1f961214a159a8ada9f
+
+-  [https://github.com/eclipse/aether-demo](https://github.com/eclipse/aether-demo) 322fa556494335faaf3ad3b7dbe8f89aaaf6222d
+ |
+| 2016-09-16 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product: renamed to Apache Maven Artifact Resolver |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2016-04-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2016-05-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Aether
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2016-04-16 | Check that all active committers have a signed CLA on record. |
+| 2016-05-16 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2016-05-16 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on private@maven.apache.org Message-ID : &lt;1625586.g3UgSJMdpL@herve-desktop&gt;
+
+- Vote result on private@maven.apache.org Message-ID : &lt;6333536.pM30VUzVgJ@herve-desktop&gt;
diff --git a/content/maven-archetypeng.md b/content/maven-archetypeng.md
new file mode 100644
index 0000000..8c40a06
--- /dev/null
+++ b/content/maven-archetypeng.md
@@ -0,0 +1,68 @@
+Title: ArchetypeNG Codebase Intellectual Property (IP) Clearance Status
+
+
+ArchetypeNG is a replacement for the existing Archetype code base in the Apache Maven Project.
+
+
+
+- The Maven PMC is responsible for the code.
+
+
+- The code will be imported into http://svn.apache.org/repos/asf/maven/archetype/ as part of the Maven project.
+
+
+- Jason van Zyl is the officer responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2007-08-28 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5: 3724a0c7ac7f72556214e010a9d1128e (http://people.apache.org/~brianf/archetypeng.tar.gz) SH1: 1058874609ed176476934e33419dfe6b7443b66a (http://people.apache.org/~brianf/archetypeng.tar.gz) From (https://svn.codehaus.org/mojo/trunk/sandbox/maven-archetypeng r5135)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-08-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Raphael Pieroni_ 
+
+
+-  _Jason van Zyl_ 
+
+
+-  _Brian E Fox_ 
+
+| date | item |
+|------|------|
+| 2007-08-28 | Check that all active committers have a signed CLA on record. |
+| 2007-08-28 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-08-28 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-08-28 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _http://www.nabble.com/-VOTE--Migrate-ArchetypeNG-to-Apache---commit-privs-for-Raphael-tf3998447s177.html#a11355684_ 
diff --git a/content/maven-archiva-webdav.md b/content/maven-archiva-webdav.md
new file mode 100644
index 0000000..abff47f
--- /dev/null
+++ b/content/maven-archiva-webdav.md
@@ -0,0 +1,58 @@
+Title: archiva-webdav Codebase Intellectual Property (IP) Clearance Status
+
+
+This is code from the plexus-webdav component at Codehaus which is used within Archiva that will now be maintained (and restructured) within the project specific to its own purposes.
+
+
+The library includes a fork of the it.could webdav library (http://could.it/main/a-simple-approach-to-webdav.html). The code is licensed under the Apache License 2.0. It is also written by an Apache CLA holder, Pier Fumagalli, however he is not involved in this fork.
+
+
+
+- Which PMC will be responsible for the code: Apache Maven
+
+
+- Into which existing project/module: Maven (Archiva)
+
+
+- Officer or member managing donation: Brett Porter
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2008-03-13 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-03-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF license. |
+
+Contributed by original authors under the terms of their existing ASF CLA for the component code, and it.could library retains its license as required.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Codehaus.org
+
+| date | item |
+|------|------|
+| 2008-03-13 | Check that all active committers have a signed CLA on record. |
+| 2008-03-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-03-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-03-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Contributed to feature branch by lazy consensus - vote will be undertaken for release.
diff --git a/content/maven-doxia.md b/content/maven-doxia.md
new file mode 100644
index 0000000..85c726f
--- /dev/null
+++ b/content/maven-doxia.md
@@ -0,0 +1,49 @@
+Title: Doxia Codebase Intellectual Property (IP) Clearance Status
+
+
+Simple library for document transformation and site generation.
+
+
+
+- Which PMC will be responsible for the code: Apache Maven
+
+
+- Into which existing project/module: maven/doxia
+
+
+- Officer or member managing donation: Brett Porter
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2005-11-07 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2005-11-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Jason van Zyl
+
+- Codehaus
+
+| date | item |
+|------|------|
+| 2005-11-07 | Check that all active committers have a signed CLA on record. |
+| 2005-11-07 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2005-11-07 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-11-07 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
diff --git a/content/maven-indexer.md b/content/maven-indexer.md
new file mode 100644
index 0000000..85a37da
--- /dev/null
+++ b/content/maven-indexer.md
@@ -0,0 +1,65 @@
+Title: Nexus Indexer Codebase Intellectual Property (IP) Clearance Status
+
+
+The Nexus Indexer is the defacto standard for producing indexes of Maven repositories. The Indexes are produced and consumed by all major tools in the ecosystem.
+
+
+
+- The Maven PMC is responsible for the code.
+
+
+- The donated code is located at http://people.apache.org/~brianf/maven-indexer.zip (signature: http://people.apache.org/~brianf/maven-indexer.zip.asc)
+
+
+- The code will be imported into http://svn.apache.org/repos/asf/maven/index as part of the Maven project.
+
+
+- Brian Fox is the officer responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-03-01 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-04-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-04-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Nexus Indexer_ (see line 343 of cclas.txt)
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Sonatype, Inc_ 
+
+| date | item |
+|------|------|
+| 2010-03-01 | Check that all active committers have a signed CLA on record. |
+| 2010-03-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-03-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 20010-04-19 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _Message-ID: eb0f802d1001090913g7ba980cdg2b5bdfc96a41d6a3@mail.gmail.com_ 
diff --git a/content/maven-patch-plugin.md b/content/maven-patch-plugin.md
new file mode 100644
index 0000000..6ab3395
--- /dev/null
+++ b/content/maven-patch-plugin.md
@@ -0,0 +1,66 @@
+Title: maven-patch-plugin Codebase Intellectual Property (IP) Clearance Status
+
+
+This is a plugin for Maven 2.x that applies patch files to an existing project's source. It currently does this by delegation to an external patch executable.
+
+
+
+- Which PMC will be responsible for the code: Apache Maven
+
+
+- Into which existing project/module: Maven (Plugins)
+
+
+- Officer or member managing donation: Brett Porter
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2007-06-08 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+72a2359b104c37e364ac5c0b573c1999 maven-patch-plugin.zip (md5sum; OS X 10.4.10, build 8R2232)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-07-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF license. |
+
+Contributed by original authors under the terms of their existing ASF CLA.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- John Dennis Casey
+
+- Codehaus
+
+| date | item |
+|------|------|
+| 2007-06-08 | Check that all active committers have a signed CLA on record. |
+| 2007-06-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-06-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-06-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Contributed to sandbox by lazy consensus - vote will be undertaken for promotion and release.
diff --git a/content/maven-shade-plugin.md b/content/maven-shade-plugin.md
new file mode 100644
index 0000000..4eb7158
--- /dev/null
+++ b/content/maven-shade-plugin.md
@@ -0,0 +1,71 @@
+Title: shade-maven-plugin Codebase Intellectual Property (IP) Clearance Status
+
+
+The shade plugin is a tool for creating optimized aggregate JARs for deployment.
+
+
+
+- The Maven PMC is responsible for the code.
+
+
+- The code will be imported into http://svn.apache.org/repos/asf/maven/plugins/trunk as part of the Maven project.
+
+
+- Jason van Zyl is the officer responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2007-09-09 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+http://people.apache.org/~brianf/shade.tar.gz (from: https://svn.codehaus.org/mojo/tags/shade-maven-plugin-move-to-apache rev 5191) MD5 HASH: 79CE2685E3C0A18D41EAE17C4C262C47
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| NA | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Kenney Westerhof_ 
+
+
+-  _Jason van Zyl_ 
+
+
+-  _Mauro Talevi_ 
+
+
+-  _Daniel Diephouse_ 
+
+| date | item |
+|------|------|
+| 2007-09-02 | Check that all active committers have a signed CLA on record. |
+| 2007-09-02 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-09-02 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-09-02 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  __ 
diff --git a/content/maven-surefire.md b/content/maven-surefire.md
new file mode 100644
index 0000000..71c8f37
--- /dev/null
+++ b/content/maven-surefire.md
@@ -0,0 +1,49 @@
+Title: Surefire Codebase Intellectual Property (IP) Clearance Status
+
+
+Library for running test suites.
+
+
+
+- Which PMC will be responsible for the code: Apache Maven
+
+
+- Into which existing project/module: maven/surefire
+
+
+- Officer or member managing donation: Brett Porter
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2005-11-07 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2005-11-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Jason van Zyl
+
+- Codehaus
+
+| date | item |
+|------|------|
+| 2005-11-07 | Check that all active committers have a signed CLA on record. |
+| 2005-11-07 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2005-11-07 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2005-11-07 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
diff --git a/content/maven-wrapper.md b/content/maven-wrapper.md
new file mode 100644
index 0000000..4e9c92e
--- /dev/null
+++ b/content/maven-wrapper.md
@@ -0,0 +1,70 @@
+Title: Maven Wrapper Codebase Intellectual Property (IP) Clearance Status
+
+
+Maven Wrapper is an easy way for users to have a fully encapsulated build setup provided by the project.
+
+
+
+- Apache Maven PMC will be responsible for the code
+
+
+- This contribution will be placed in a new Apache Gitbox repository.
+
+
+- Officer or member managing donation: Robert Scholte
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-12-04 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+
+
+- Donated software is identified as:
+
+  -  [https://github.com/takari/maven-wrapper](https://github.com/takari/maven-wrapper) (git commit: [828bcfa2e371843d120b69aa1c653a2495021f4b](https://github.com/takari/maven-wrapper/commit/828bcfa2e371843d120b69aa1c653a2495021f4b) )
+
+
+- Issue : [https://issues.apache.org/jira/browse/MNG-6565](https://issues.apache.org/jira/browse/MNG-6565) 
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-12-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2020-02-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2019-12-06 | Check that all active committers have a signed CLA on record. |
+| 2019-12-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-01-06 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-01-06 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/merlin-developer.md b/content/merlin-developer.md
deleted file mode 100644
index 1963c63..0000000
--- a/content/merlin-developer.md
+++ /dev/null
@@ -1,141 +0,0 @@
-Title: merlin-developer
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on [http://avalon.apache.org/](http://avalon.apache.org/) 
-
-
-<span class="graduated">The MerlinDeveloper project graduated on 2004-01</span>
-
-
-# Description {#Description}
-
-The MerlinDeveloper Project is a codebase for a merlin eclipse plugin that will be merged with an existing eclipse plugin already in development at avalon.
-
-
-# News {#News}
-
-
-- 18-01-2003: incubation has finished.
-
-- nearly done with incubation.
-
-# Project info {#Project+info}
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/X/](http://incubator.apache.org/X/)  |
-| . | wiki | . |
-| Mailing list | dev | dev@avalon.apache.org |
-| . | cvs | cvs@avalon.apache.org |
-| Bug tracking | . | . |
-| Source code | CVS | avalon-sandbox |
-| Mentors | leosimons | Leo Simons |
-| . | noel | Noel J Bergman |
-| Committers | n/a | Andreas Oberhack |
-| . | n/a | all avalon committers |
-| Extra | . | . |
-
-# Incubation status report {#Incubation+status+report}
-
-## STATUS file {#STATUS+file}
-
-The status file reflects current project status up to the point of graduation. The project graduated on January 18 2003. There was much rejoicing :D
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- all of the active long-term volunteers been identified and acknowledged as committers on the project.
-
-- there are three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- project decisions are being made in public by the committers.
-
-- the decision-making guidelines are published and agreed to by all of the committers.
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- all licensing, trademark, credit issues are being taken care of and acknowleged by all committers.
-
-## Project Specific {#Project+Specific}
-
-N/A
-
-
-# Exit {#Exit}
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- the avalon PMC has voted to accept the project.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- the incubator has signed off on the project.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _All steps completed by Leo Simons between january 1 and january 14 2004._  _Completed tasks are marked "DONE"._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-Merlin-Developer by Andreas Oberhack.
-
-
-| date | item |
-|-------|-------|
-| DONE | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| DONE | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| n/a | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| DONE | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc and general lists. |
-| DONE | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| DONE | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| DONE | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| &lt;&lt;will be handled at later point by avalon pmc&gt;&gt; | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| n/a | Ask infrastructure to create source repository modules and grant the committers karma. |
-| n/a | Ask infrastructure to set up and archive Mailing lists. |
-| n/a | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| &lt;&lt;will be handled at later point by avalon pmc&gt;&gt; | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-N/A
-
diff --git a/content/mesos.md b/content/mesos.md
deleted file mode 100644
index 6573b70..0000000
--- a/content/mesos.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Title: Mesos Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Mesos project graduated on 2013-06-19</span>
-
-
-Mesos is a cluster manager that provides resource sharing and isolation across cluster applications.
-
-
-
-- 2013-06-07 Brenden Matthews (brenden) added as new committer and PPMC member.
-
-- 2013-06-07 Thomas Marshall (tmarshall) added as new committer and PPMC member.
-
-- 2013-06-01 Charles Reiss (woggle) added as new committer and PPMC member.
-
-- 2013-06-01 Mesos-0.11.0-incubating released!
-
-- 2013-03-27 Benjamin Mahler (bmahler) added as new committer and PPMC member.
-
-- 2013-03-07 Mesos-0.10.0-incubating released!
-
-- 2013-02-01 Vinod Kone (vinodkone) added as new committer and PPMC member.
-
-- 2013-02-08 Chris Mattmann volunteers to be Mesos mentor, added to the project.
-
-- 2012-05-08 Mesos-0.9.0-incubating released!
-
-- 2011-11-03 Mesos website migrated to [http://incubator.apache.org/mesos/](http://incubator.apache.org/mesos/) .
-
-- 2011-07-18 Updated committer accounts, copyright items.
-
-- 2010-12-23 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/mesos/](http://incubator.apache.org/mesos/)  |
-| wiki | confluence |  [https://cwiki.apache.org/confluence/display/MESOS/Index](https://cwiki.apache.org/confluence/display/MESOS/Index)  |
-| Mailing list | dev |  `mesos-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `mesos-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `mesos-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/MESOS](https://issues.apache.org/jira/browse/MESOS)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-mesos.git](https://gitbox.apache.org/repos/asf?p=incubator-mesos.git)  |
-| . | SVN (project site only) |  [https://svn.apache.org/repos/asf/incubator/mesos/](https://svn.apache.org/repos/asf/incubator/mesos/)  |
-| Mentors | mattmann | Chris Mattmann |
-| . | brianm | Brian McCallister |
-| . | tomwhite | Tom White |
-| Committers | alig | Ali Ghodsi |
-| . | benh | Benjamin Hindman |
-| . | vinodkone | Vinod Kone |
-| . | andrew | Andy Konwinski |
-| . | bmahler | Benjamin Mahler |
-| . | tmarshall | Thomas Marshall |
-| . | brenden | Brenden Matthews |
-| . | woggle | Charles Reiss |
-| . | matei | Matei Zaharia |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-11-20 | Make sure that the requested project name does not already exist and check to be sure that the name is not already trademarked for an existing software product. Checked http://tess2.uspto.gov/ and the name Mesos is not curently trademarked for a software project. There is a dead trademark for a medical device. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-01-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-01-03 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-01-03 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-01-20 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-06-05 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-01-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-01-03 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-02-08 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-01-03 | Tell Mentors to track progress in the file 'incubator/projects/mesos.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-02-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-07-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-05-08 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-05-08 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-07-18 | Check that all active committers have submitted a contributors agreement. |
-| 2011-07-18 | Add all active committers in the STATUS file. |
-| 2011-07-18 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/metamodel.md b/content/metamodel.md
deleted file mode 100644
index 9f68ae9..0000000
--- a/content/metamodel.md
+++ /dev/null
@@ -1,184 +0,0 @@
-Title: MetaModel Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The MetaModel project graduated on 2014-11-20</span>
-
-
-MetaModel is a data access framework, providing a common interface for exploration and querying of different types of datastores.
-
-
-
-- 2014-11-24 New release 4.3.0-incubating
-
-- 2014-11-20 Graduation resolution accepted
-
-- 2014-10-13 New Committer: Alberto Rodriguez
-
-- 2014-07-28 New release 4.2.0-incubating
-
-- 2014-06-30 New Committer: Tomasz Guzialek
-
-- 2013-06-12 Project enters incubation.
-
-
--  [Main website](http://metamodel.incubator.apache.org/) 
-
-
--  [How to get involved](http://metamodel.incubator.apache.org/#community) 
-
-
--  [Apache Git Repository](https://gitbox.apache.org/repos/asf/incubator-metamodel.git) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://metamodel.incubator.apache.org/](http://metamodel.incubator.apache.org/)  |
-| . | wiki |  [https://wiki.apache.org/metamodel](https://wiki.apache.org/metamodel)  |
-| Mailing list | dev |  `dev`  `@`  `metamodel.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `metamodel.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/METAMODEL](https://issues.apache.org/jira/browse/METAMODEL)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-metamodel.git](https://gitbox.apache.org/repos/asf/incubator-metamodel.git)  |
-| . | SVN (site only) |  [https://svn.apache.org/repos/asf/incubator/metamodel/](https://svn.apache.org/repos/asf/incubator/metamodel/)  |
-| Mentors | hsaputra | Henry Saputra |
-| . | arvind | Arvind Prabhakar |
-| . | mfranklin | Matt Franklin |
-| . | nslater | Noah Slater |
-| Committers | kaspersor | Kasper Sorensen |
-| . | ankitkumar2711 | Ankit Kumar |
-| . | sarora | Sameer Arora |
-| . | hsaputra | Henry Saputra |
-| . | delostilos | Juan Jose van der Linden |
-| . | arvind | Arvind Prabhakar |
-| . | mfranklin | Matt Franklin |
-| . | nslater | Noah Slater |
-| . | tomaszguzialek | Tomasz Guzialek |
-| . | ardlema | Alberto Rodriguez |
-
-
--  [July 2013](http://wiki.apache.org/incubator/July2013) 
-
--  [August 2013](http://wiki.apache.org/incubator/August2013) 
-
--  [September 2013](http://wiki.apache.org/incubator/September2013) 
-
--  [January 2014](http://wiki.apache.org/incubator/January2014) 
-
--  [April 2014](http://wiki.apache.org/incubator/April2014) 
-
--  [July 2014](http://wiki.apache.org/incubator/July2014) 
-
--  [October 2014](http://wiki.apache.org/incubator/October2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-06-14 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| not applicable | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| not applicable | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| not applicable | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-06-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-06-17 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-06-18 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-06-10 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-07-20 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-06-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-06-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-07-11 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-07-17 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-06-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-07-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-09-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-09-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-07-10 | Check that all active committers have submitted a contributors agreement. |
-| 2013-07-17 | Add all active committers in the STATUS file. |
-| 2013-06-10 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? DONE
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) DONE
-
-- Are project decisions being made in public by the committers? DONE
-
-- Are the decision-making guidelines published and agreed to by all of the committers? DONE
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? DONE
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? DONE
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? DONE
diff --git a/content/metron.md b/content/metron.md
deleted file mode 100644
index 96f97ff..0000000
--- a/content/metron.md
+++ /dev/null
@@ -1,224 +0,0 @@
-Title: Metron Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Metron project graduated on 2017-04-19, by Board resolution.
-
-
-<span class="graduated">The Metron project graduated on 2017-04-19</span>
-
-
-Metron integrates a variety of open source big data technologies in order to offer a centralized tool for security monitoring and analysis. Metron provides capabilities for log aggregation, full packet capture indexing, storage, advanced behavioral analytics and data enrichment, while applying the most current threat-intelligence information to security telemetry within a single platform.
-
-
-Metron can be divided into 4 areas:
-
-1. A mechanism to capture, store, and normalize any type of security telemetry at extremely high rates. Because security telemetry is constantly being generated, it requires a method for ingesting the data at high speeds and pushing it to various processing units for advanced computation and analytics.
-
-1. Real time processing and application of enrichments such as threat intelligence, geolocation, and DNS information to telemetry being collected. The immediate application of this information to incoming telemetry provides the context and situational awareness, as well as the “who” and “where” information that is critical for investigation.
-
-1. Efficient information storage based on how the information will be used:
-
-   1. Logs and telemetry are stored such that they can be efficiently mined and analyzed for concise security visibility
-
-   1. The ability to extract and reconstruct full packets helps an analyst answer questions such as who the true attacker was, what data was leaked, and where that data was sent
-
-   1. Long-term storage not only increases visibility over time, but also enables advanced analytics such as machine learning techniques to be used to create models on the information. Incoming data can then be scored against these stored models for advanced anomaly detection.
-
-
-1. An interface that gives a security investigator a centralized view of data and alerts passed through the system. Metron’s interface presents alert summaries with threat intelligence and enrichment data specific to that alert on one single page. Furthermore, advanced search capabilities and full packet extraction tools are presented to the analyst for investigation without the need to pivot into additional tools.
-
-
-
-Big data is a natural fit for powerful security analytics. The Metron framework integrates a number of elements from the Hadoop ecosystem to provide a scalable platform for security analytics, incorporating such functionality as full-packet capture, stream processing, batch processing, real-time search, and telemetry aggregation. With Metron, our goal is to tie big data into security analytics and drive towards an extensible centralized platform to effectively enable rapid detection and rapid response for advanced security threats.
-
-
-
-- 2017-04-19 Board approves graduation resolution.
-
-- 2017-03-14 New Committer: Matt Foley
-
-- 2017-03-14 New Committer: Jon Zeolla
-
-- 2016-11-04 New Committer: Kyle Richardson
-
-- 2016-10-14 New Committer: Otto Fowler
-
-- 2016-09-29 New Committer: Michael Miklavcic.
-
-- 2016-09-29 New Committer: Justin Leet.
-
-- 2016-09-28 New PPMC Member: David Lyle.
-
-- 2016-09-28 New PPMC Member: Nick Allen.
-
-- 2016-03-22 New Committer: David Lyle
-
-- 2016-02-11 New Committer: Nick Allen
-
-- 2016-01-08 New Committer: Debo Dutta.
-
-- 2015-12-06 Project enters incubation.
-
-URIs and email addresses below refer to locations used by the project while in incubation. Now that the project has graduated, please remove "incubator" (and associated delimiters) from all structured names.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://metron.incubator.apache.org/](http://metron.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/METRON/Metron+Wiki](https://cwiki.apache.org/confluence/display/METRON/Metron+Wiki)  |
-| Mailing list | commits |  `commits`  `@`  `metron.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `metron.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `metron.incubator.apache.org`  |
-| . | security |  `security`  `@`  `metron.incubator.apache.org`  |
-| . | user |  `user`  `@`  `metron.incubator.apache.org`  |
-| Bug tracking | . |  [Metron jira](https://issues.apache.org/jira/browse/METRON)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-metron.git](https://gitbox.apache.org/repos/asf/incubator-metron.git)  |
-| Mentors | ptgoetz | P. Taylor Goetz |
-| . | mattmann | Chris Mattmann |
-| . | omalley | Owen O'Malley |
-| . | billie | Billie Rinaldi |
-| . | vinodkv | Vinod Kumar Vavilapalli |
-| PPMC | jimbaker | Jim Baker |
-| . | mbittmann | Mark Bittmann |
-| . | sheetal_dolas | Sheetal Dolas |
-| . | ddutta | Debo Dutta |
-| . | discovery | Discovery Gerdes |
-| . | ptgoetz | P. Taylor Goetz |
-| . | dev_warlord | Andrew Hartnett |
-| . | dbhirko | Dave Hirko |
-| . | reaperhulk | Paul Kehrer |
-| . | bjkolly | Brad Kolarov |
-| . | kirankom | Kiran Komaravolu |
-| . | lmccay | Larry McCay |
-| . | rmerriman | Ryan Merriman |
-| . | . | Michael Perez |
-| . | cporter | Charles Porter |
-| . | prhodes | Phillip Rhodes |
-| . | sirsean | Sean Schulte |
-| . | jsirota | James Sirota |
-| . | cestella | Casey Stella |
-| . | . | Bryan Taylor |
-| . | . | Ray Urciuoli |
-| . | vinodkv | Vinod Kumar Vavilapalli |
-| . | gvetticaden | George Vetticaden |
-| . | smogg | Oskar Zabik |
-| . | lyle | David Lyle |
-| . | nallen | Nick Allen |
-| Committers | Otto Fowler | otto |
-| . | kylerichardson | Kyle Richardson |
-| . | leet | Justin Leet |
-| . | mmiklavcic | Michael Miklavcic |
-| . | jonzeolla | Jon Zeolla |
-| . | mattf | Matt Foley |
-
-
--  [https://whimsy.apache.org/board/minutes/Metron.html](https://whimsy.apache.org/board/minutes/Metron.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-10-24 | Make sure that the requested project name does not already exist. |
-| 2015-10-24 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. Done [here](https://groups.google.com/d/msg/opensoc-support/rFlW2uSSvmU/Sw_cO-T2AAAJ) . |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-12-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-12-07 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-12-15 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-12-15 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-12-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-01-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-12-07 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-12-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-01-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-01-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-11-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-11-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-12-10 | Check that all active committers have submitted a contributors agreement. |
-| 2015-12-10 | Add all active committers in the STATUS file. |
-| 2015-12-10 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? YES
-
-- Are there three or more independent committers? YES (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers? YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/milagro-dta.md b/content/milagro-dta.md
new file mode 100644
index 0000000..6a206d5
--- /dev/null
+++ b/content/milagro-dta.md
@@ -0,0 +1,76 @@
+Title: XYZ Codebase Intellectual Property (IP) Clearance Status
+
+
+A software client called a Decentralized Trust Authority, which is built upon the Apache Milagro Crypto-C library. This software client is part of the evolution of Apache Milagro. The vision is that the D-TA will be the server process that functions as the master key generation server for a) issuing Type-3 pairing/identity based secrets for M-Pin clients and servers (the original D-TA version) and b) safeguard shares of secrets like Bitcoin private keys.
+
+
+
+- Which PMC will be responsible for the code: Apache Milagro PPMC
+
+
+- Into which existing project/module: Apache Milagro
+
+
+- Officer or member managing donation: Jean-Frederic Clere
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-08-27 | Source codebase is from [GitHub commit](https://github.com/apache/incubator-milagro-dta/commit/e1067aef61dc0b2a523348dc9b71eb578983c9ee)  |
+
+Git commit SHA for donated software: e1067aef61dc0b2a523348dc9b71eb578983c9ee
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-08-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-08-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: software-grant-qredo-ltd.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Qredo Ltd _(CCLA on file)_ 
+
+- Brian Spector _(ICLA on file)_ 
+
+- Howard Kitto _(ICLA on file)_ 
+
+- John McCane-Whitney _(ICLA on file)_ 
+
+- Stanislav Mihaylov _(ICLA on file)_ 
+
+- Chris Morris _(ICLA on file)_ 
+
+- Kealan McCusker _(ICLA on file)_ 
+
+| date | item |
+|------|------|
+| 2019-08-27 | Check that all active committers have a signed CLA on record. |
+| 2019-08-27 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-08-27 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-08-27 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [dev@celix VOTE thread](https://lists.apache.org/thread.html/05bf224bbda5b10867f13cdfde27db8b81072a294c25a8c11a2b8ed1@%3Cdev.milagro.apache.org%3E) 
+
+-  [dev@celix RESULT thread](https://lists.apache.org/thread.html/e06b115e3ce941a2a876f5865681df7020e8d5f7a0b65cb6fafaed61@%3Cdev.milagro.apache.org%3E) 
diff --git a/content/milagro.md b/content/milagro.md
deleted file mode 100644
index 77b9ec4..0000000
--- a/content/milagro.md
+++ /dev/null
@@ -1,147 +0,0 @@
-Title: Milagro Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Milagro is open source crypto and core security infrastructure for decentralized networks and systems.
-
-
-
-- 2015-12-21 Project enters incubation
-
-
--  [Project website](http://milagro.incubator.apache.org/) 
-
--  [Project Wiki](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115529045) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://milagro.incubator.apache.org/](http://milagro.incubator.apache.org/)  |
-| Wiki | wiki |  [Confluence Wiki](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115529045)  | Mailing list | dev |  `dev`  `@`  `milagro.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `PROJECT.incubator.apache.org`  |
-| JIRA | JIRA |  [JIRA](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115529045)  |
-| Source code | git |  [GitHub Repos](https://github.com/apache/incubator-milagro)  |
-| Mentors | niq | Nick Kew |
-| . | sterling | Sterling Hughes |
-| . | jawi | Jan Willem Janssen |
-| PPMC | brianspector | Brian Spector |
-| . | go | Go Yamamoto |
-| . | giorgio | Giorgio Zoppi |
-| . | kmccusker | Kealan McCusker |
-| . | pahilt | Patrick Hilt |
-| . | smihaylov | Stanislav Mihaylov |
-| Committers | a_budroni | Alessandro Budroni |
-| . | cmorris | Chris Morris |
-|
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-12-15 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2015-12-21 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-12-21 | Ask infrastructure to set up and archive mailing lists. |
-| 2019-05-28 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2019-05-28 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2019-05-28 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-12-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/milagro.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-03-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-03-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-05-28 | Check that all active committers have submitted a contributors agreement. |
-| 2019-06-01 | Add all active committers in the relevant section above. |
-| 2019-05-28 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
-...
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-Set up Trust Authority for developers. Consider how we might work with Infra to run it operationally for Apache people and projects.
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/mina-asyncweb.md b/content/mina-asyncweb.md
new file mode 100644
index 0000000..a6074a6
--- /dev/null
+++ b/content/mina-asyncweb.md
@@ -0,0 +1,66 @@
+Title: AsyncWeb Software Codebase Intellectual Property (IP) Clearance Status
+
+
+AsyncWeb is a HTTP server implementation based on the Apache MINA network application framework. It provides non-blocking asynchronous implementation of HTTP.
+
+
+
+- The MINA PMC will be responsible for this code.
+
+
+- The code will be imported into MINA
+
+
+- Trustin Lee is managing the donation.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2007-10-17 | https://svn.safehaus.org/repos/asyncweb/trunk/ |
+| 2006-10-17 | http://people.apache.org/~trustin/asyncweb/ |
+| Apache AsyncWeb | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+| SHA1 sum of http://people.apache.org/~trustin/asyncweb/asyncweb.tar.bz2 | SHA1 (asyncweb.tar.bz2) = 27908c7f7bd70a9136583acd3ac5d2fc004234e7 |
+| MD5 sum of http://people.apache.org/~trustin/asyncweb/asyncweb.tar.bz2 | MD5 (asyncweb.tar.bz2) = c26dfb14edb200876ae19f81e9e389ba |
+
+We will be importing the subversion repository.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-10-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _AsyncWeb Software_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- It is presently distributed under the Apache License, Version 2.0. _Everyone_ not in violation of that license has distribution rights.
+
+- Contributions have been made by trustin and dirving
+
+| date | item |
+|------|------|
+| 2007-10-17 | Check that all active committers have a signed CLA on record. |
+| 2007-10-17 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-10-17 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-10-17 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _ [vote on mina-dev](http://www.nabble.com/-VOTE--Import-AsyncWeb-from-Safehaus-to-MINA-tf4525130s16868.html) _ 
diff --git a/content/mina-keepalive.md b/content/mina-keepalive.md
new file mode 100644
index 0000000..89167df
--- /dev/null
+++ b/content/mina-keepalive.md
@@ -0,0 +1,65 @@
+Title: KeepAliveFilters.zip Codebase Intellectual Property (IP) Clearance Status
+
+
+KeepAliveFilters.zip contains just 5 extension classes for Apache MINA that sends keep-alive messages.
+
+
+
+- The MINA PMC will be responsible for this code.
+
+
+- The code will be imported into MINA
+
+
+- Trustin Lee is managing the donation.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2007-10-17 | http://issues.apache.org/jira/secure/attachment/12352063/KeepAliveFilters.zip |
+| Package name: org.apache.mina.filter.keepalive | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+| SHA1 sum of http://issues.apache.org/jira/secure/attachment/12352063/KeepAliveFilters.zip | SHA1 (KeepAliveFilters.zip) = 14fdd3d3a177e04a086214113faf234d90105107 |
+| MD5 sum of http://issues.apache.org/jira/secure/attachment/12352063/KeepAliveFilters.zip | MD5 (KeepAliveFilters.zip) = e6853127e69341fd7e19c4a936174506 |
+
+We will be importing the subversion repository.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-10-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. - **There's no copyright header in the source code. However, the contributor already agreed to license for includion in ASF works by attaching the file to the ASF JIRA.**  |
+
+Identify name recorded for software grant: _KeepAliveFilters.zip_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  **KeepAliveFilters.zip has been attached to [a JIRA issue](http://issues.apache.org/jira/browse/DIRMINA-354) checked with 'Licensed for inclusion in ASF works. Therefore, it effectively means that the author of the code agreed with donation.** Consequently, _everyone_ not in violation of the Apache Software License 2.0 has distribution rights.
+
+- Contributions have been made by Eero Nevalainen
+
+| date | item |
+|------|------|
+| 2007-10-17 | Check that all active committers have a signed CLA on record. |
+| 2007-10-17 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-10-17 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-10-17 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _ [vote on mina-dev](http://www.nabble.com/-VOTE--Import-KeepAlive-functionality-contribution-under-MINA-PMC-tf4525278s16868.html) _ 
diff --git a/content/mnemonic.md b/content/mnemonic.md
deleted file mode 100644
index ada31df..0000000
--- a/content/mnemonic.md
+++ /dev/null
@@ -1,193 +0,0 @@
-Title: Mnemonic Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Mnemonic is an advanced hybrid memory storage oriented library, we've proposed a non-volatile/durable Java object model and durable computing service that bring several advantages to significantly improve the performance of massive real-time data processing/analytics. developers are able to use this library to design their cache-less and SerDe-less high performance applications.
-
-
-<span class="graduated">The Mnemonic project graduated on 2017-11-15</span>
-
-
-
-- 2016-03-03 Project enters incubation.
-
-- 2016-05-24 the first official release.
-
-- 2016-08-02 the second official release.
-
-- 2016-10-21 the third official release.
-
-- 2017-01-24 the fourth official release.
-
-- 2017-03-13 the fifth official release.
-
-- 2017-04-13 the sixth official release.
-
-- 2017-05-04 the seventh official release.
-
-- 2017-06-23 the eighth official release.
-
-- 2017-09-13 the ninth official release.
-
-- 2017-11-15 the tenth official release.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://mnemonic.incubator.apache.org/](http://mnemonic.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/MNEMONIC/Apache+Mnemonic+Home](https://cwiki.apache.org/confluence/display/MNEMONIC/Apache+Mnemonic+Home)  |
-| Mailing list | dev |  `dev`  `@`  `mnemonic.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `mnemonic.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/MNEMONIC](https://issues.apache.org/jira/browse/MNEMONIC)  |
-| Source code | Git |  [https://github.com/apache/incubator-mnemonic](https://github.com/apache/incubator-mnemonic)  |
-| Champion | phunt | Patrick Hunt |
-| Mentors | phunt | Patrick Hunt |
-| . | apurtell | Andrew Purtell |
-| . | jamestaylor | James Taylor |
-| . | hsaputra | Henry Saputra |
-| Committers | yanpingw | Yanping Wang |
-| . | garyw | Gang(Gary) Wang |
-| . | umamahesh | Uma Maheswara Rao G |
-| . | drankye | Kai Zheng |
-| . | rakeshr | Rakesh Radhakrishnan Potty |
-| . | seanzhong | Sean Zhong |
-| . | hsaputra | Henry Saputra |
-| . | chhao01 | Hao Cheng |
-| . | ddutta | Debojyoti Dutta |
-| . | johnu | Johnu George |
-| . | yzhao | Yanhui Zhao |
-| . | peili | PeiLi Shen |
-
-
--  [April, 2016](https://wiki.apache.org/incubator/April2016) 
-
--  [September, 2016](https://wiki.apache.org/incubator/September2016) 
-
--  [December, 2016](https://wiki.apache.org/incubator/December2016) 
-
--  [March, 2017](https://wiki.apache.org/incubator/March2017) 
-
--  [June, 2017](https://wiki.apache.org/incubator/June2017) 
-
--  [September, 2017](https://wiki.apache.org/incubator/September2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-03-17 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) Name Search jira [PODLINGNAMESEARCH-95](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-95)  |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2016-03-24 | SGA was assigned by Intel, and the project was moved into ASF GIT https://gitbox.apache.org/repos/asf?p=incubator-mnemonic.git |
-| 2016-03-11 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-03-11 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-03-31 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-03-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-04-18 | cwiki site setup is completed |
-| 2016-04-04 | Completely migrated the project to Mnemonic infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-04-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-03-12 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-03-11 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-03-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-04-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-04-26 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-05-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-03-31 | Check that all active committers have submitted a contributors agreement. |
-| 2016-03-11 | Add all active committers in the relevant section above. |
-| 2016-03-12 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _NA_ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _NA_ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/mod_ftp.md b/content/mod_ftp.md
deleted file mode 100644
index 904467d..0000000
--- a/content/mod_ftp.md
+++ /dev/null
@@ -1,162 +0,0 @@
-Title: Apache HTTPD mod_ftp Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-mod_ftp has graduated from incubation, effective 15 Feb 2007.
-
-
-See the [Apache Modules](http://httpd.apache.org/modules/) sub-projects page for current links and resources.
-
-
-<span class="graduated">The mod_ftp project graduated on 2007-02</span>
-
-
-The Apache HTTPD mod_ftp Project is a protocol module for Apache 2.x which implements RFs: 959, 1123, 2228, 238, regarding the FTP specifications
-
-
-
-- 2005-07-07: Call for vote in Apache HTTP Server PMC
-
-- 2005-08-06: Vote passes, proposed to Incubator and "accepted"
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/mod_ftp/](http://incubator.apache.org/mod_ftp/)  |
-| . | wiki | . |
-| Mailing list | dev | mod_ftp-dev@incubator.apache.org |
-| . | svn | mod_ftp-commits@incubator.apache.org |
-| Bug tracking | . | . |
-| Source code | svn | http://svn.apache.org/repos/asf/incubator/mod_ftp/ |
-| Mentors | jim | Jim Jagielski |
-|   |   |   |
-| Committers | stas | Stas Bekman |
-|   | jim | Jim Jagielski |
-|   | colm | Colm MacCárthaigh |
-|   | NOTYET | Ryan Morgan |
-|   | noirin | Noirin Plunkett |
-|   | pquerna | Paul Querna |
-|   | wrowe | Bill Rowe |
-|   | sctemme | Sander Temme |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2005-08-12 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2005-08-06 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2005-08-06 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2005-08-06 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2005-08-06 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2005-08-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2005-08-06 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2005-08-22 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2005-08-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2005-09-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2005-09-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2005-09-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| 2005-09-01 | Check that all active committers have submitted a contributors agreement. |
-| 2005-10-06 | Add all active committers in the STATUS file. |
-| 2005-10-06 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| 2005-09-02 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-09-02 | Ask infrastructure to set up and archive Mailing lists. |
-| 2005-09-02 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2005-10-06 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/mrql.md b/content/mrql.md
deleted file mode 100644
index 087bdd2..0000000
--- a/content/mrql.md
+++ /dev/null
@@ -1,162 +0,0 @@
-Title: MRQL Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-MRQL is a query processing and optimization system for large-scale, distributed data analysis, built on top of Apache Hadoop, Hama, and Spark.
-
-
-<span class="retired">The MRQL podling retired on 2017-08-17.</span>
-
-
-
-- 2013-03-13 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://mrql.incubator.apache.org/](http://mrql.incubator.apache.org/)  |
-| . | wiki |  [http://wiki.apache.org/mrql/](http://wiki.apache.org/mrql/)  |
-| Mailing list | dev |  `dev`  `@`  `mrql.incubator.apache.org`  |
-| . | user |  `user`  `@`  `mrql.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/mrql](https://issues.apache.org/jira/browse/mrql)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-mrql.git](https://gitbox.apache.org/repos/asf/incubator-mrql.git)  |
-| Mentors | adc | Alan Cabrera |
-| . | edwardyoon | Edward J. Yoon |
-| . | mnour | Mohammad Nour |
-| Committers | fegaras | Leonidas Fegaras |
-| . | ugupta | Upa Gupta |
-| . | edwardyoon | Edward J. Yoon |
-| . | maqsoodalam | Maqsood Alam |
-| . | johnshope | John S. Hope |
-| . | msw | Mark Wall |
-| . | kmensah | Kuassi Mensah |
-| . | ambreeshkhanna | Ambreesh Khanna |
-| . | kasha | Karthik Kambatla |
-| . | moon | Lee Moon Soo |
-
-
--  [April 2013](http://wiki.apache.org/incubator/April2013) 
-
--  [May 2013](http://wiki.apache.org/incubator/May2013) 
-
--  [June 2013](http://wiki.apache.org/incubator/June2013) 
-
--  [July 2013](http://wiki.apache.org/incubator/July2013) 
-
--  [September 2013](http://wiki.apache.org/incubator/September2013) 
-
--  [December 2013](http://wiki.apache.org/incubator/December2013) 
-
--  [March 2013](http://wiki.apache.org/incubator/March2014) 
-
--  [June 2013](http://wiki.apache.org/incubator/June2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-06-11 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-03-24 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-03-13 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-03-13 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-04-05 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-04-10 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-03-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-03-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-03-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-03-21 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-04-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-09-07 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-09-07 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-03-21 | Check that all active committers have submitted a contributors agreement. |
-| 2013-03-21 | Add all active committers in the STATUS file. |
-| 2013-03-21 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/mrunit.md b/content/mrunit.md
deleted file mode 100644
index c074144..0000000
--- a/content/mrunit.md
+++ /dev/null
@@ -1,177 +0,0 @@
-Title: MRUnit Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The MRUnit project graduated on 2012-05-16</span>
-
-
-MRUnit, a library to support unit testing of Hadoop MapReduce jobs.
-
-
-
-- 2012-05-16 MRUnit graduates from the Incubator to become a TLP
-
-- 2012-05-01 Version 0.9.0-incubating released.
-
-- 2012-04-18 Dave Beech added as a new committer.
-
-- 2012-04-14 Jarek Jarcec Cecho added as a new committer.
-
-- 2012-04-11 New website created using the CMS.
-
-- 2012-03-06 Version 0.8.1-incubating released.
-
-- 2012-03-05 Jim Donofrio added as a new committer.
-
-- 2012-02-02 Version 0.8.0-incubating released.
-
-- 2011-11-27 Version 0.5.0-incubating released.
-
-- 2011-10-21 Brock Noland added as a new committer.
-
-- 2011-03-08 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/mrunit/](http://incubator.apache.org/mrunit/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/MRUNIT](https://cwiki.apache.org/confluence/display/MRUNIT)  |
-| Mailing list | dev |  `mrunit-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `mrunit-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `mrunit-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/MRUNIT](https://issues.apache.org/jira/browse/MRUNIT)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/mrunit/](https://svn.apache.org/repos/asf/incubator/mrunit/)  |
-| Mentors | nigel | Nigel Daley |
-| . | phunt | Patrick Hunt |
-| . | mattmann | Chris Mattmann |
-| Committers | esammer | Eric Sammer |
-| . | kimballa | Aaron Kimball |
-| . | cos | Konstantin Boudnik |
-| . | gwu | Garrett Wu |
-| . | brock | Brock Noland |
-| . | jdonofrio | Jim Donofrio |
-| . | jarcec | Jarek Jarcec Cecho |
-| . | dbeech | Dave Beech |
-
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011) 
-
--  [June 2011](http://wiki.apache.org/incubator/June2011) 
-
--  [May 2011](http://wiki.apache.org/incubator/May2011) 
-
--  [April 2011](http://wiki.apache.org/incubator/April2011) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-03-08 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-03-08 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-03-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-03-09 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-03-25 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-03-09 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-03-27 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-02-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-02-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-02-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-02-21 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| N/A | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| N/A | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-03-25 | Check that all active committers have submitted a contributors agreement. |
-| 2011-03-25 | Add all active committers in the STATUS file. |
-| 2011-03-25 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/muse.md b/content/muse.md
deleted file mode 100644
index 81ed875..0000000
--- a/content/muse.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: muse
-
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Muse project graduated on 2005-06-03</span>
-
-
-A Web Services subproject that provides an implementation of the OASIS Web Services Distributed Management (WSDM) family of specifications.
-
-
-
-- 2005-06-03 - Incubator PMC voted to graduate Muse
-
-- 2004-11-08 - Proposal sent to incubator general mailing list
-
-- 2004-10-14 - Proposal accepted by WS PMC
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/muse/](http://incubator.apache.org/muse/)  |
-| Proposal | wiki |  [http://wiki.apache.org/incubator/MuseProposal](http://wiki.apache.org/incubator/MuseProposal)  |
-| Mailing Lists | dev |  [muse-dev@ws.apache.org](mailto:muse-dev@ws.apache.org)  |
-| . | svn |  [muse-cvs@incubator.apache.org](mailto:muse-cvs@incubator.apache.org)  |
-| Bug Tracking | jira |  [http://nagoya.apache.org/jira/secure/project/ViewProject.jspa?pid=1061](http://nagoya.apache.org/jira/secure/project/ViewProject.jspa?pid=10614)  |
-| Source Code | svn |  [https://svn.apache.org/repos/asf/incubator/muse/](https://svn.apache.org/repos/asf/incubator/muse/)  |
-| Mentors | dims | Davanum Srinivas |
-| Committers | gawor | Jarek Gawor |
-| . | ips | Ian Springer |
-| . | kidz | Kinga Dziembowski |
-| . | meder | Sam Meder |
-| . | scamp | Sal Campana |
-| . | wire | Bill Reichardt |
-
-
-- 2005-06-03 - Incubator PMC voted to graduate Muse
-
-- 2005-05-25 - A 1.0 beta release of Muse was released today. For a description of the features included in this release, see the [release announcement](http://marc.theaimsgroup.com/?l=muse-dev&amp;m=111711591011814&amp;w=2) . This release contains all of the features that are planned for v1.0. The plan is to spend the next 6-8 weeks bolstering documentation and unit test coverage, i18nizing all messages, and fixing any bugs that are reported.
-
-- 2005-04-21 - Kinga Dziembowski was voted in as a committer.
-
-- 2004-12-01 - The community has decided to cut a 0.5 beta release. The release will follow the incubation release rules, which require:
-
-
-1. incubator disclaimer in README and from any download links
-
-1. dist filename to include "incubating"
-
-1. ppmc vote (providing the incubator pmc approval, since all interested incubator pmc members should be on the webservices ppmc mailing list)
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2005-04-18 | Make sure that the requested project name does not already exist and check http://www.nameprotect.com/ to be sure that the name is not already trademarked for an existing software product. |
-| 2004-11-04 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2004-11-04 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2004-11-04 | Subscribe all Mentors on the pmc and general lists. |
-| 2004-11-04 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2004-11-04 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2005-01-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-11-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2005-04-26 | Check and make sure that all code included with the distribution that is not under the Apache license has the right to combine with Apache-licensed code and redistribute. |
-| 2005-04-21 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2004-11-08 | Check that all active committers have submitted a contributors agreement. |
-| 2004-11-08 | Add all active committers in the STATUS file. |
-| 2004-11-08 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2004-11-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2004-11-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2004-11-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2004-11-15 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|-------|-------|
-| 2005-12-15 | Carry over the interfaces used in the Globus WSRF/WSN impl (Subscription, Topic, etc.). |
-| 2005-04-23 | Participate in the OASIS WSDM 1.0 interop. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? ... Yes, though we expect to add new committers in the future. For example. Hitachi will be contributing a couple developers in the near future, and a company called Gestalt has expressed interest in contributing some manpower.
-
-- Are there three or more independent committers? ... Yes - HP (4), Globus (2), and CA (1).
-
-- Are project decisions being made in public by the committers? ... Yes, we vote on all important decisions (for example, cutting a release or changing the project name).
-
-- Are the decision-making guidelines published and agreed to by all of the committers? ... Yes, we use the standard ASF voting procedure.
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? ... Yes, we are only using 3rd-party libs with ASF-compatible licenses, and we are not using any trademarked names without proper acknowledgement.
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Has the PMC voted to accept it? ... Yes, the WebServices PMC has accepted responsibility for the project.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? ... A VOTE was intitiated by dims on 2005-05-27 and incubation was successfully completed on 2005-06-03.
diff --git a/content/mxnet-mshadow.md b/content/mxnet-mshadow.md
new file mode 100644
index 0000000..a913513
--- /dev/null
+++ b/content/mxnet-mshadow.md
@@ -0,0 +1,76 @@
+Title: MXNet MShadow Codebase Intellectual Property (IP) Clearance Status
+
+
+MShadow is a lightweight CPU/GPU Matrix/Tensor Template Library in C++/CUDA.
+
+
+
+- The Apache MXNet PMC will be responsible for the code
+
+
+- Into MXNet project/module
+
+
+- Officer or member managing donation: Sheng Zha
+
+ _Completed tasks are shown by the completion date (2020-08-05)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-08-05 | Souce codebase is from [GitHub commit](https://github.com/dmlc/mshadow/tree/bc49327a44650c3f2b427e953ff95d2c27566c04) Confirmed |
+
+Git commit SHA for donated software: bc49327a44650c3f2b427e953ff95d2c27566c04. MD5 of the Zip file is 86f38803c2b39c262bda67b5efa4a9b7.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-08-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2020-08-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Secretary has confirmed that SGA is received: https://lists.apache.org/thread.html/rd9ff74896d1faca59b74ad45748bcfd417bec73de5ce43e57bd9dc98%40%3Cprivate.mxnet.apache.org%3E
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Bing Xu
+
+- Minjie Wang
+
+- Mu Li
+
+- Junyuan Xie
+
+- Tianqi Chen
+
+- Sheng Zha
+
+| date | item |
+|------|------|
+| 2020-08-05 | Check that all active committers have a signed CLA on record. |
+| 2020-08-05 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-08-05 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-08-05 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- IP Clearance IPMC request:
+
+- IP Clearance IPMC result:
+
+- MXNet PMC acceptance discussion thread: https://lists.apache.org/thread.html/c1ba34330b0eb52ef3a3a30da6d34964a35a01c320e93067e94ed306%40%3Cdev.mxnet.apache.org%3E
diff --git a/content/mxnet.md b/content/mxnet.md
deleted file mode 100644
index 729e85b..0000000
--- a/content/mxnet.md
+++ /dev/null
@@ -1,224 +0,0 @@
-Title: Incubation Status - MXNet
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-
-- edit "Project info" to contain only effective resources
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-MXNet is an open-source deep learning framework that allows you to define, train, and deploy deep neural networks on a wide array of devices, from cloud infrastructure to mobile devices. It is highly scalable, allowing for fast model training, and supports a flexible programming model and multiple languages.
-
-
-
-- 2017-01-23 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://mxnet.incubator.apache.org/](http://mxnet.incubator.apache.org/)  |
-|  | wiki |  [MXNet Wiki](https://cwiki.apache.org/confluence/display/MXNET/MXNet+Home)  |
-| Social Media | Blog |  [MXNet Blog](https://medium.com/apache-mxnet)  |
-|  | YouTube |  [MXNet YouTube channel](https://www.youtube.com/channel/UCQua2ZAkbr_Shsgfk1LCy6A)  |
-|  | Reddit |  [MXNet Reddit](https://www.reddit.com/r/mxnet)  |
-|  | Twitter |  [Twitter @ApacheMXNet](https://twitter.com/ApacheMXNet)  |
-| Mailing list | dev |  `dev`  `@`  `mxnet.incubator.apache.org` ( [archive](https://lists.apache.org/list.html?dev@mxnet.apache.org) ) |
-| . | user |  `user`  `@`  `mxnet.incubator.apache.org` ( [archive](https://lists.apache.org/list.html?user@mxnet.apache.org) ) |
-| . | commits |  `commits`  `@`  `mxnet.incubator.apache.org` ( [archive](https://lists.apache.org/list.html?commits@mxnet.apache.org) ) |
-| . | issues |  `issues`  `@`  `mxnet.incubator.apache.org` ( [archive](https://lists.apache.org/list.html?issues@mxnet.apache.org) ) |
-| Bug tracking | Github |  [https://github.com/apache/incubator-mxnet/issues](https://github.com/apache/incubator-mxnet/issues)  |
-|  | Jira |  [https://issues.apache.org/jira](https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=237%26projectKey=MXNET)  |
-| Source code | Git |  [https://github.com/apache/incubator-mxnet](https://github.com/apache/incubator-mxnet)  |
-| Mentors | bob | Bob Paulin |
-| . | kamaci | Furkan KAMACI |
-| . | jasondai | Jason Dai |
-| . | weimer | Markus Weimer |
-| . | mjwall | Michael Wall |
-| PPMC | anirudh2290 | Anirudh Subramanian |
-| . | bingxu | Bing Xu |
-| . | cmeier | Carin Meier |
-| . | pluskid | Chiyuan Zhang |
-| . | cjolivier01 | Chris Olivier |
-| . | jxie | Eric Xie |
-| . | haibin | Haibin Lin |
-| . | hliu | Hongliang Liu |
-| . | indhub | Indhu Bharathi |
-| . | jianzhangzju | Jian Zhang |
-| . | jspisak | Joe Spisak |
-| . | reminisce | Jun Wu |
-| . | ldpe2g | Liang Depeng |
-| . | lxn2 | Ly Nguyen |
-| . | madjam | Madan Jampani |
-| . | marcoabreu | Marco de Abreu |
-| . | muli | Mu Li |
-| . | codingcat | Nan Zhu |
-| . | nswamy | Naveen Swamy |
-| . | qkou | Qiang Kou |
-| . | lanking | Qing Lan |
-| . | skm | Sandeep Krishnamurthy |
-| . | sergeykolychev | Sergey Kolychev |
-| . | zhasheng | Sheng Zha |
-| . | yajiedesign | Shiwen Hu |
-| . | terrychen | Terry Chen |
-| . | tqchen | Tianqi Chen |
-| . | the | Tong He |
-| . | ozawa | Tsuyoshi Ozawa |
-| . | sxjscience | Xingjian Shi |
-| . | liuyizhi | YiZhi Liu |
-| . | gengyifeng | Yifeng Geng |
-| . | yzhang87 | Yu Zhang |
-| . | terrytangyuan | Yuan Tang |
-| . | hotpxl | Yutian Li |
-| . | zhreshold | Zhi Zhang |
-| . | zihaolucky | Zihao Zheng |
-| . | ziheng | Ziheng Jiang |
-| . | ziyue | Ziyue Huang |
-| Committers | aaronmarkham | Aaron Markham |
-| . | alexzai | Alex Zai |
-| . | astonz | Aston Zhang |
-| . | zhengda | Da Zheng |
-| . | kuoding | Ding Kuo |
-| . | haoj | Hao Jin |
-| . | iblis | Iblis Lin |
-| . | wkcn | Jackie Wu |
-| . | jeremiedb | Jeremie Desgagne-Bouchard |
-| . | arcadiaphy | Jiajun Wang |
-| . | kellen | Kellen Sunderland |
-| . | zhennan | Kevin Qin |
-| . | apeforest | Lin Yuan |
-| . | hellonico | Nicolas Modrzyk |
-| . | patriczhao | Patric Zhao |
-| . | rahul003 | Rahul Huilgol |
-| . | roshrini | Roshani Nagmote |
-| . | srochel | Steffen Rochel |
-| . | taolv | Tao Lv |
-| . | thomasdelteil | Thomas Delteil |
-
-
--  [January 2019](https://wiki.apache.org/incubator/January2019) 
-
--  [October 2018](https://wiki.apache.org/incubator/October2018) 
-
--  [July 2018](https://wiki.apache.org/incubator/July2018) 
-
--  [April 2018](https://wiki.apache.org/incubator/April2018) 
-
--  [January 2018](https://wiki.apache.org/incubator/January2018) 
-
--  [October 2017](https://wiki.apache.org/incubator/October2017) 
-
--  [July 2017](https://wiki.apache.org/incubator/July2017) 
-
--  [May 2017](https://wiki.apache.org/incubator/May2017) 
-
--  [April 2017](https://wiki.apache.org/incubator/April017) 
-
--  [March 2017](https://wiki.apache.org/incubator/March2017) 
-
--  [February 2017](https://wiki.apache.org/incubator/February2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-02-02 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2017-01-23 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-01-24 | Ask infrastructure to set up and archive mailing lists. |
-| 2017-07-28 | Transfer source code to Apache GitHub repository. |
-| 2017-06-23 | Ask infrastructure to set up wiki (Confluence). |
-| 2017-07-28 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-01-24 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-01-24 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2017-01-23 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| n/a | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-02-15 | Check that all active committers have submitted a contributors agreement. |
-| 2017-02-15 | Add all active committers in the relevant section above. |
-| 2017-02-15 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/myfaces-tobago.md b/content/myfaces-tobago.md
new file mode 100644
index 0000000..ecdb9c4
--- /dev/null
+++ b/content/myfaces-tobago.md
@@ -0,0 +1,44 @@
+Title: MyFaces Tobago Codebase Intellectual Property (IP) Clearance Status
+<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
+
+Tobago is a JSF based web development architecture consisting of a well designed set of user interface components that will become part of MyFaces.
+
+
+
+- Which PMC will be responsible for the code: Apache MyFaces PMC
+
+
+- Into which existing project/module: Apache MyFaces
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| DONE | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| DONE-2005-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| DONE-2005-11-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| DONE-2005-10-17 | Check that all active committers have a signed CLA on record. |
+| N/A | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| DONE-2005-11-24 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| DONE-2005-11-24 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+
+- Has the receiving PMC voted to accept it? DONE-2005-07-28
diff --git a/content/myfaces.md b/content/myfaces.md
deleted file mode 100644
index 01440a4..0000000
--- a/content/myfaces.md
+++ /dev/null
@@ -1,160 +0,0 @@
-Title: myfaces
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The MyFaces project graduated on 2005-03-09</span>
-
-
-MyFaces is a framework for building Java Server application GUIs based on JavaServer Faces (JSR-127); this implementation is not yet certified.
-
-
-
-- Proposal accepted by Incubator PMC on 16 July 2004
-
-
-- (2004-10-17) All needed CLAs are on file. A code grant is in transit. Accounts for the committers have been created. Mailing lists are created. Committers are subscribed. The Jira setup for the project is being finalized. The project incubator page is created. Committers are preparing the SourceForge CVS for import to Apache.
-
-One account's credentials were lost in transit (grantsmith). Request to root@ to resend the credentials to an alternate address was made 14/Oct/2004. (Credential now received.)
-
-
-
-- Link to the [Main Website](http://incubator.apache.org/myfaces/) .
-
-
-- link to the page(s) that tell how to participate ( [Website](http://incubator.apache.org/myfaces/) , [Mailing lists](http://incubator.apache.org/myfaces/community/mailinglists.html) , [Bug tracking](http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10600) , [Source code](http://incubator.apache.org/myfaces/downloads.html) )
-
-
-- link to the [project status file](http://incubator.apache.org/myfaces/community/status.html) (Committers, non-incubation action items, project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/myfaces/](http://incubator.apache.org/myfaces/)  |
-| . | wiki | . |
-| Mailing list | dev | incubator-dev@incubator.apache.org |
-| . | cvs | incubator-cvs@apache.org |
-| Bug tracking | . | . |
-| Source code | CVS | incubator-myfaces |
-| Mentors | husted | Ted Husted |
-| Mentors | jholmes | James Holmes |
-| Committers | manolito | Manfred Geiler |
-| Committers | tomsp | Thomas Spiegl |
-| Committers | mmarinschek | Martin Marinschek |
-| Committers | matzew | Matthias Wessendorf |
-| Committers | svieujot | Sylvain Vieujot |
-| Committers | grantsmith | Grant Smith |
-| Committers | bdudney | Bill Dudney |
-| Committers | anton | Anton Koinov |
-| Committers | treeder | Travis Reeder |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| status | item |
-|---------|-------|
-| DONE | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| DONE | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| status | item |
-|---------|-------|
-| DONE | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc and general lists. |
-| DONE | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| DONE | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| DONE | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- DONE: Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- DONE: Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- DONE: Are project decisions being made in public by the committers?
-
-- DONE: Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- DONE: Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- N/A: If graduating to an existing PMC, has the PMC voted to accept it?
-
-- todo: If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/mynewt.md b/content/mynewt.md
deleted file mode 100644
index 07fe13b..0000000
--- a/content/mynewt.md
+++ /dev/null
@@ -1,216 +0,0 @@
-Title: Mynewt Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Mynewt project graduated on 2017-06-21</span>
-
-
-Mynewt is a real-time operating system for constrained embedded systems like wearables, lightbulbs, locks and doorbells. It works on a variety of 32-bit MCUs (microcontrollers), including ARM Cortex-M and MIPS architectures.
-
-
-
-- 2015-10-20 Mynewt Project enters incubation.
-
-- 2016-03-04 Mynewt-0.8.0-b1-incubating - first release of the OS.
-
-- 2016-04-11 Paul Dietrich elected as a new committer.
-
-- 2016-04-14 Neel Natu elected as a new committer.
-
-- 2016-05-15 Mynewt-0.8.0-incubating released.
-
-- 2016-06-09 Mynewt-0.9.0-incubating released.
-
-- 2016-10-06 Vipul Rahane elected as a new committer.
-
-- 2016-10-24 Peter Snyder elected as a new committer.
-
-- 2016-12-06 Julian Ingram elected as a new committer.
-
-- 2016-12-13 Mynewt-1.0.0-b1-incubating released.
-
-- 2017-01-17 Kevin Townsend elected as a new committer.
-
-- 2017-01-24 Andrzej Kaczmarek elected as a new committer.
-
-- 2017-01-24 Michał Narajowski elected as a new committer.
-
-- 2017-02-14 Mynewt-1.0.0-b2-incubating released.
-
-- 2017-03-16 Fabio Utzig elected as a new committer.
-
-- 2017-03-22 Mynewt-1.0.0-incubating released.
-
-- 2017-03-28 Szymon Janc elected as a new committer.
-
-- 2017-03-28 Lukasz Rymanowski elected as a new committer.
-
-- 2017-06-12 Jacob Rosenthal elected as a new committer.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://mynewt.incubator.apache.org/](http://mynewt.incubator.apache.org/)  |
-| . | wiki |  [http://wiki.apache.org/incubator/MynewtProposal](http://wiki.apache.org/incubator/MynewtProposal)  |
-| Mailing list | dev |  `dev@mynewt.incubator.apache.org`  |
-| . | commits |  `commits@mynewt.incubator.apache.org`  |
-| . | issues |  `issues@mynewt.incubator.apache.org`  |
-| Bug tracking | . |  [Mynewt JIRA](https://issues.apache.org/jira/browse/Mynewt/)  |
-| Source code | Project GIT |  [https://github.com/apache/incubator-mynewt-core](https://github.com/apache/incubator-mynewt-core) <br></br> |
-| . | Additional Repos |  [https://github.com/apache/incubator-mynewt-newt](https://github.com/apache/incubator-mynewt-newt) <br></br> |
-| Mentors | sterling | Sterling Hughes |
-| . | jim | Jim Jagielski |
-| . | jmclean | Justin Mclean |
-| . | gstein | Greg Stein |
-| . | ptgoetz | P. Taylor Goetz |
-| Podling PMC | sterling | Sterling Hughes |
-| . | wes3 | William San Filippo |
-| . | ccollins | Christopher Collins |
-| . | aditi | Aditi Hilbert |
-| . | marko | Marko Kiiskila |
-| . | jmclean | Justin Mclean |
-| Committers | sterling | Sterling Hughes |
-| . | wes3 | William San Filippo |
-| . | ccollins | Christopher Collins |
-| . | aditi | Aditi Hilbert |
-| . | marko | Marko Kiiskila |
-| . | jmclean | Justin Mclean |
-| . | jani | Jan Iversen |
-| . | paulfdietrich | Paul Dietrich |
-| . | neel | Neel Natu |
-| . | vipulrahane | Vipul Rahane |
-| . | peterfs | Peter Snyder |
-| . | julian | Julian Ingram |
-| . | ktown | Kevin Townsend |
-| . | andk | Andrzej Kaczmarek |
-| . | naraj | Michał Narajowski |
-| . | utzig | Fabio Utzig |
-| . | janc | Szymon Janc |
-| . | rymek | Łukasz Rymanowski |
-| . | jacobrosenthal | Jacob Rosenthal |
-
-
--  [November 2015](https://wiki.apache.org/incubator/November2015) 
-
--  [December 2015](https://wiki.apache.org/incubator/December2015) 
-
--  [January 2016](https://wiki.apache.org/incubator/January2016) 
-
--  [April 2016](https://wiki.apache.org/incubator/April2016) 
-
--  [July 2016](https://wiki.apache.org/incubator/July2016) 
-
--  [October 2016](https://wiki.apache.org/incubator/October2016) 
-
--  [April 2017](https://wiki.apache.org/incubator/April2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-10-01 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2015-10-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-10-21 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-10-21 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-10-26 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-10-26 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-10-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-10-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-10-21 | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-10-20 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-10-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-10-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-03-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-03-04 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-10-24 | Check that all active committers have submitted a contributors agreement. |
-| 2015-10-26 | Add all active committers in the STATUS file. |
-| 2015-10-27 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-- Yes. The Incubator PMC has voted to graduate Mynewt.
diff --git a/content/myriad.md b/content/myriad.md
index d62e1a2..bc0dab1 100644
--- a/content/myriad.md
+++ b/content/myriad.md
@@ -1,192 +1,65 @@
-Title: Myriad Incubator Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: Myriad Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="retired">The Myriad podling retired on 2020-01-24</span>
-
-
-Myriad enables co-existence of Apache Hadoop YARN and Apache Mesos together on the same cluster and allows dynamic resource allocations across both Hadoop and other applications running on the same physical data center infrastructure.
+Myriad is an Apache Mesos framework designed for elastically scaling a YARN cluster on Mesos
 
 
 
-- 2019-08-26 Myriad 0.4.0 new release.
-
-- 2019-08-02 New committer/PMC member Oscar Fernandez.
-
-- 2019-03-25 Myriad 0.3.0 new release.
-
-- 2019-02-27 Myriad 0.3.0 submitted to PPMC for voting.
-
-- 2018-12-14 Git project repository migrated to gitbox.apache.org.
-
-- 2018-05-22 New committers/PMC members Juan P. Gilaberte.
-
-- 2018-03-28 New committers/PMC members Javi Roman.
-
-- 2016-06-29 Myriad 0.2.0 new release.
-
-- 2015-12-09 Myriad 0.1.0 new release.
-
-- 2015-11-30 Myriad 0.1.0-rc3 submitted to IPMC for voting.
-
-- 2015-11-05 New committers/PMC members Darin and Swapnil!
-
-- 2015-09-25 Code migrated to Apache git.
-
-- 2015-03-01 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://myriad.incubator.apache.org](http://myriad.incubator.apache.org)  |
-| wiki | confluence |  [https://cwiki.apache.org/myriad](https://cwiki.apache.org/myriad)  |
-| Mailing list | dev |  `dev`  `@`  `myriad.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `myriad.incubator.apache.org`  |
-| . | private |  `private`  `@`  `myriad.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/MYRIAD](https://issues.apache.org/jira/browse/MYRIAD)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-myriad.git](https://gitbox.apache.org/repos/asf?p=incubator-myriad.git) <br></br>Mirrored at: [https://github.com/apache/incubator-myriad](https://github.com/apache/incubator-myriad)  |
-| Reviews | Pull Requests |  [https://github.com/apache/incubator-myriad/pulls](https://github.com/apache/incubator-myriad/pulls)  |
-| Mentors | benh | Benjamin Hindman |
-| . | tdunning | Ted Dunning |
-| Committers | me | Adam B |
-| . | smarella | Santosh Marella |
-| . | mohit | Mohit Soni |
-| . | kensipe | Ken Sipe |
-| . | darinj | Darin J |
-| . | swapnil | Swapnil Daingade |
-| . | yufeldman | Yuliya Feldman |
-| . | javiroman | Javi Roman |
-| . | jpgilaberte | Juan P. Gilaberte |
-| . | oscarfmdc | Oscar Fernandez |
+- The Myriad PMC will be responsible for the code
 
 
--  [June 2019](https://cwiki.apache.org/confluence/display/INCUBATOR/June2019) 
-
--  [March 2019](https://wiki.apache.org/incubator/March2019) 
-
--  [December 2018](https://wiki.apache.org/incubator/December2018) 
-
--  [September 2018](https://wiki.apache.org/incubator/September2018) 
-
--  [June 2018](http://wiki.apache.org/incubator/June2018) 
-
--  [March 2018](http://wiki.apache.org/incubator/March2018) 
-
--  [April 2015](http://wiki.apache.org/incubator/April2015) 
-
--  [May 2015](http://wiki.apache.org/incubator/May2015) 
-
--  [June 2015](http://wiki.apache.org/incubator/June2015) 
-
--  [October 2015](http://wiki.apache.org/incubator/October2015) 
-
--  [December 2015](http://wiki.apache.org/incubator/December2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
+- Into which existing project/module: New project (Myriad Podling).
 
 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+- Officer or member managing donation: Danese Cooper
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2015-05-01 | Make sure that the requested project name does not already exist.<br></br>Tracked in [PODLINGNAMESEARCH-73](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-73)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2015-03-25 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
+| 2015-05-01 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product.
+ [PODLINGNAMESEARCH-73](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-73) 
 
-## Infrastructure {#Infrastructure}
+ |
 
-| date | item |
-|------|------|
-| 2015-04-03 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-03-25 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-05-21 | Ask infrastructure to set up issue tracker (JIRA).<br></br>Tracked in [INFRA-9516](https://issues.apache.org/jira/browse/INFRA-9516)  |
-| 2015-06-22 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-09-25 | Migrate the project to our infrastructure. |
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
 
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-08-24 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-06-03 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-06-03 | Tell Mentors to track progress in the file 'incubator/projects/myriad.html' |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2015-09-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-11-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2015-06-03 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br>Already under Apache v2. |
-| 2015-06-03 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br>Dependencies are listed in the NOTICE file, mostly Apache v2, plus CPL/EPL which are covered as "category B" copyleft licenses. |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
 
 | date | item |
 |------|------|
-| 2015-04-07 | Check that all active committers have submitted a contributors agreement. |
-| 2015-04-23 | Add all active committers in the STATUS file. |
-| 2015-07-10 | Ask root for the creation of committers' accounts on people.apache.org. |
+| 2015-05-07 | All active committers have a signed CLA on record. |
+| 2015-06-02 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. CCLAs on file for Mesosphere, MapR, and eBay. |
+| 2015-06-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. Already under Apache v2. |
+| 2015-06-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. Dependencies are listed in the NOTICE file, mostly Apache v2, plus CPL/EPL which are covered as "category B" copyleft licenses. |
 
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-# Incubation {#Incubation}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
-These action items have to be checked for during the whole incubation process.
+Related VOTEs:
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
 
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/nemo.md b/content/nemo.md
deleted file mode 100644
index 162d4c0..0000000
--- a/content/nemo.md
+++ /dev/null
@@ -1,148 +0,0 @@
-Title: Nemo Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Nemo is a data processing system to flexibly control the runtime behaviors of a job to adapt to varying deployment characteristics.
-
-
-
-- 2018-02-04 Nemo enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://nemo.incubator.apache.org/](http://nemo.incubator.apache.org/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/NEMO/](http://cwiki.apache.org/confluence/display/NEMO)  |
-| Mailing list | dev |  `dev@nemo.apache.org`  |
-| . | commits |  `commits@nemo.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/NEMO](https://issues.apache.org/jira/browse/NEMO)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-nemo.git](https://gitbox.apache.org/repos/asf/incubator-nemo.git)  |
-| Mentors | davor | Davor Bonaci |
-| . | hyunsik | Hyunsik Choi |
-| . | bgchun | Byung-Gon Chun |
-| . | jbonofre | Jean-Baptiste Onofre |
-| . | weimer | Markus Weimer |
-| . | rxin | Reynold Xin |
-| Committers/PPMC | bgchun | Byung-Gon Chun |
-| . | jeongyoon | Jeongyoon Eo |
-| . | gwkim | Geon-Woo Kim |
-| . | jooykim | Joo Yeon Kim |
-| . | gwlee | Gyewon Lee |
-| . | jglee | Jung-Gil Lee |
-| . | sanha | Sanha Lee |
-| . | wylee | Wooyeon Lee |
-| . | yunseong | Yunseong Lee |
-| . | jangho | Jangho Seo |
-| . | wonook | Won Wook Song |
-| . | taegeonum | Taegeon Um |
-| . | johnyangk | Youngseok Yang |
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase of incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-02-04 | Make sure that the requested project name does not already exist. [http://www.apache.org/foundation/m\ arks/naming.html](http://www.apache.org/foundation/marks/naming.html) Please follow the guide to ensure a suitable project/product name. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| TODO | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-02-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2018-02-04 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2018-02-04 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2018-02-04 | Ask infrastructure to set up wiki (Confluence). |
-| TODO | Migrate the project to Apache infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| TODO | Subscribe all Mentors on the pmc and general lists. |
-| TODO | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| TODO | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| TODO | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| TODO | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-02-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-02-04 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| TODO | Check that all active committers have submitted a contributors agreement. |
-| TODO | Add all active committers in the relevant section above. |
-| TODO | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/netbeans-dukescript-presenters.md b/content/netbeans-dukescript-presenters.md
new file mode 100644
index 0000000..4816dc9
--- /dev/null
+++ b/content/netbeans-dukescript-presenters.md
@@ -0,0 +1,82 @@
+Title: DukeScript presenters (IP) Clearance Status
+
+
+The presenters are the glue between your Java and JavaScript code in your DukeScript application. They make sure that your Java methods with JavaScriptBody annotation can properly pass their parameters to the JavaScript engine and receive results back.
+
+
+
+- Which PMC will be responsible for the code: Apache Netbeans
+
+
+- Into which existing project/module: Apache Netbeans html4j
+
+
+- Officer or member managing donation: Geertjan Wielenga
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-10-01 | Code source on [https://github.com/apache/netbeans-html4j/pull/23](PR) . Details below. commit id: https://github.com/apache/netbeans-html4j/commit/383122eb00479d12b8df1810c26e7596fa0672d0 |
+
+
+
+- Donated software is identified as: [https://github.com/apache/netbeans-html4j/pull/23](https://github.com/apache/netbeans-html4j/pull/23) 
+
+- Initial developpement was done: [https://github.com/dukescript/dukescript-presenters/](https://github.com/dukescript/dukescript-presenters/) 
+Donation
+
+- render - a way to start a browser - using native GTK (on Linux and Mac OS X), AWT or CLI
+
+- generic - ProtoPresenterBuilder &amp; co. - core implementation of a presenter that handles connection between JavaScript VM and Java VM via a textual protocol - very portable
+
+- browser - uses of ProtoPresenterBuilder to start a local server and let a browser connect to it
+
+- webkit - native presenter for Linux and Mac OS X that uses WebKit via JNA
+
+
+
+
+- Issue : [https://issues.apache.org/jira/browse/NETBEANS-3189](https://issues.apache.org/jira/browse/NETBEANS-3189) 
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-10-14 | Recieved by Apache NetBeans PMC. (Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project). |
+| 2019-10-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. All headers are Apache 2. |
+
+Identify name recorded for software grant: [Dukehoff GmbH](https://lists.apache.org/thread.html/5fb0512323d0e12725141d68eb65f6affa8d99d8025c7ea0bd345474@%3Cprivate.netbeans.apache.org%3E) 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Dukehoff GmbH Anton Epple is the inceptor of thoose utilities and employee of Dukehoff GmbH. As checked with secretary monacotoni iCLA is relevent and dukescript and eppelteon githubname are aliases to Anton Epple
+
+
+
+- DukeScript
+
+- monacotoni Anton Epple (alternate gihubname: eppleton, dukescript)
+
+| date | item |
+|------|------|
+| 2019-10-14 | Check that all active committers have a signed CLA on record. monacotoni has an iCLA but eppleton or dukescript is same person. |
+| 2019-10-14 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-10-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-10-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Voting Thread for acceptance](https://lists.apache.org/thread.html/a092cf280dea1d09e704b18495457e64126127fac12aa4567742425e@%3Cdev.netbeans.apache.org%3E) 
+
+-  [Result Thread for acceptance](https://lists.apache.org/thread.html/3162c0f6f825e1bffc607512aaa102362dca60630b6c6113e185032a@%3Cdev.netbeans.apache.org%3E) 
diff --git a/content/netbeans-mojohaus-utilities.md b/content/netbeans-mojohaus-utilities.md
new file mode 100644
index 0000000..8ea0c4c
--- /dev/null
+++ b/content/netbeans-mojohaus-utilities.md
@@ -0,0 +1,84 @@
+Title: Mojohaus Maven Utilities Codebase Intellectual Property (IP) Clearance Status
+
+
+Mojohaus Maven Utilities are a set of Apache Maven artefacts. Artefacts allows Apache NetBeans Platform to be used via maven instead of Apache Ant.
+
+
+This collection of tools contains also a generator of artefact that take NetBeans ditribution and generate a populated Maven repository.
+
+
+Mojohaus Maven Utilities contains three archetypes that easy the creation of Apache NetBeans platorm application.
+
+
+
+- Which PMC will be responsible for the code: Apache Netbeans (INCUBATOR)
+
+
+- Into which existing project/module: Apache Netbeans (Incubating)
+
+
+- Officer or member managing donation: Bertrand Delacretaz
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-10-03 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. It's not a top level project, we have many artifacts and libs but they are not trademarked for software. No findings of equivalent name on Goolge search. |
+
+
+
+- Donated software is identified as: [https://github.com/mojohaus/nbm-maven-plugin](https://github.com/mojohaus/nbm-maven-plugin) (git commit: 80021ab48705a199513abdf2ad9fc339a8c000e2)
+
+- Direct path : [https://github.com/mojohaus/nbm-maven-plugin/tree/80021ab48705a199513abdf2ad9fc339a8c000e2](https://github.com/mojohaus/nbm-maven-plugin/tree/80021ab48705a199513abdf2ad9fc339a8c000e2) 
+
+- Issue : [https://issues.apache.org/jira/browse/NETBEANS-1335](https://issues.apache.org/jira/browse/NETBEANS-1335) 
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-10-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. All headers are Apache 2. The 3 archetypes contain archetype-resources folder with no header in the child file because it will generate project with a license. Example of apache archetype can be found here [https://github.com/apache/maven-archetypes](https://github.com/apache/maven-archetypes)  |
+
+No grant needed as the product was developed by ASF committers under ASF license at Mojohaus (former codehaus.org)
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: the Mojohaus Maven Utilities community mkleint is the inceptor of thoose utilities.
+
+
+
+- the Mojohaus Maven Utilities community
+
+- mkleint Milos Kleint
+
+| date | item |
+|------|------|
+| 2018-10-03 | Check that all active committers have a signed CLA on record. (mkleint,jglick,hboutemy,tstupka,jgauravgupta,skygo) |
+| N/A | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-10-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-10-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Benjamin Bentmann (bentmann) did some eol changes configuration, he is commiter but not under iCLA (see [whismy](https://whimsy.apache.org/roster/committer/bentmann) )
+
+
+All other developers have CLAs on record with Apache.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [NetBeans podling VOTE Thread](https://lists.apache.org/thread.html/f4e501c60eec06b0d30916b92a16240e0f5dcfcd3b3742711067e8c8@%3Cdev.netbeans.apache.org%3E) 
+
+-  [NetBeans podling VOTE RESULT](https://lists.apache.org/thread.html/649b0989230cb98c38dc3f19c8c979df47faa111378fa5b10f5ebfaa@%3Cdev.netbeans.apache.org%3E) 
+
+-  [Incubator PMC acceptance vote](https://lists.apache.org/thread.html/4d887ff7d84ffde6466e2c33c21ab3070471d5d893c7adefcc304d20@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/netbeans.md b/content/netbeans.md
deleted file mode 100644
index fed21f1..0000000
--- a/content/netbeans.md
+++ /dev/null
@@ -1,224 +0,0 @@
-Title: NetBeans Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The NetBeans project graduated on 2019-04-17</span>
-
-
-NetBeans is a development environment, tooling platform and application framework.
-
-
-
-- 2016-10-01 Project enters incubation.
-
-
-- link to the main website:<br></br> [http://netbeans.apache.org/](http://netbeans.apache.org/) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code):<br></br> [https://cwiki.apache.org/confluence/display/NETBEANS/How+to+Participate](https://cwiki.apache.org/confluence/display/NETBEANS/How+to+Participate) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://netbeans.apache.org/](http://netbeans.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/netbeans](https://cwiki.apache.org/confluence/display/netbeans)  |
-| Mailing list | dev |  `dev`  `@`  `netbeans.incubator.apache.org`  |
-| . | users |  `users`  `@`  `netbeans.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `netbeans.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/NETBEANS](https://issues.apache.org/jira/browse/NETBEANS)  |
-| Source code | GIT |  [https://github.com/apache/incubator-netbeans](https://github.com/apache/incubator-netbeans)  |
-| Mentors | ate | Ate Douma |
-| . | bdelacretaz | Bertrand Delacretaz |
-| . | elecharny | Emmanuel Lecharny |
-| . | humbedooh | Daniel Gruno |
-| . | jim | Jim Jagielski |
-| . | struberg | Mark Struberg |
-| Committers | alexvsimon | Alexander Simon |
-| . | avbravo | Aristides Villarreal |
-| . | brjavaman | Bruno Souza |
-| . | brunoflavio | Bruno Flavio |
-| . | chrizzly | Christian Lenz |
-| . | codenameone | Shai Almog |
-| . | dsergeyev | Danila Sergeyev |
-| . | dimazh | Dmitry Zharkov |
-| . | dbalek | Dusan Balek |
-| . | dheffelfinger | David Heffelfinger |
-| . | ehsavoie | Emmanuel Hugonnet |
-| . | emi | Emilian Bold |
-| . | entl | Martin Entlicher |
-| . | fvogler | Florian Vogler |
-| . | georgia | Georgia Ingham |
-| . | geertjan | Geertjan Wielenga |
-| . | hermien | Hermien Pellissier |
-| . | igromov | Ilia Gromov |
-| . | ikost | John Kostaras |
-| . | ivargrimstad | Ivar Grimstad |
-| . | jag | James Gosling |
-| . | javajuneau | Josh Juneau |
-| . | jglick | Jesse Glick |
-| . | jkovalsky | Jiri Kovalsky |
-| . | jmichelberger | Joerg Michelberger |
-| . | johanvos | Johan Vos |
-| . | jpereda | José Pereda |
-| . | jtulach | Jaroslav Tulach |
-| . | junichi11 | Junichi Yamamoto |
-| . | karianna | Martijn Verburg |
-| . | kelemen | Attila Kelemen |
-| . | kirk-pepperdine | Kirk Pepperdine |
-| . | markee174 | Mark Stephens |
-| . | markiewb | Benno Markiewicz |
-| . | matthiasblaesing | Matthias Bläsing |
-| . | mbalin | Martin Balin |
-| . | mgraciano | Michel Graciano |
-| . | misterm | Michael Nascimento |
-| . | mklaehn | Martin Klähn |
-| . | mkleint | Milos Kleint |
-| . | milutin | Milutin Kristofic |
-| . | mmetelka | Miloslav Metelka |
-| . | monacotoni | Anton Epple |
-| . | mromashova | Maria Dalmatova |
-| . | muellermi | Michael Mueller |
-| . | nix | Denis Anisimov |
-| . | pandaconstantin | Constantin Drabo |
-| . | panga | Leonardo Zanivan |
-| . | petrk | Petr Kudryavtsev |
-| . | sdedic | Svatopluk Dedic |
-| . | sevarac | Zoran Sevarac |
-| . | sreimers | Sven Reimers |
-| . | tmysik | Tomas Mysik |
-| . | tstupka | Tomas Stupka |
-| . | tusharjoshi | Tushar Joshi |
-| . | tzezula | Tomas Zezula |
-| . | vkvashin | Vladimir Kvashin |
-| . | vladimirvv | Vladimir Voskresensky |
-| . | wadechandler | Wade Chandler |
-| Extra | . | . |
-
- **Note:** The committers list above is incomplete and the complete list is found here, which is being used to update the list above, so the committers list above is a work in progress: [https://wiki.apache.org/incubator/NetBeansProposal](https://wiki.apache.org/incubator/NetBeansProposal) .
-
-
-
--  [2016 October](https://wiki.apache.org/incubator/October2016) 
-
--  [2016 November](https://wiki.apache.org/incubator/November2016) 
-
--  [2016 December](https://wiki.apache.org/incubator/December2016) 
-
--  [2017 January](https://wiki.apache.org/incubator/January2017) 
-
--  [2017 April](https://wiki.apache.org/incubator/April2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/nifi.md b/content/nifi.md
deleted file mode 100644
index a43a648..0000000
--- a/content/nifi.md
+++ /dev/null
@@ -1,186 +0,0 @@
-Title: NiFi Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Apache NiFi project graduated as a TLP on July 15th 2015
-
-
-<span class="graduated">The NiFi project graduated on 2015-07-15</span>
-
-
-Apache NiFi is an easy to use, powerful, and reliable system to process and distribute data.
-
-
-
-- 2015-07-15: The ASF Board has approved the resolution to create Apache NiFi as TLP
-
-
-- 2015-06-13: Welcome Bryan Bende as a new committer and PPMC member
-
-
-- 2015-05-26: Welcome Dan Bress as a new committer and PPMC member
-
-
-- 2015-05-17: Apache NiFi 0.1.0 (incubating) released!
-
-
-- 2015-03-17: Welcome Aldrin Piri as a new committer and PPMC member
-
-
-- 2015-03-16: Apache NiFi 0.0.2 (incubating) released!
-
-
-- 2015-01-29: Apache NiFi 0.0.1 (incubating) released!
-
-
-- 2015-01-17: Welcome Jenn Barnabee as a new committer and PPMC member
-
-
-- 2014-12-08: Source code made available. "master" branch is the code as contributed until our first release. "develop" branch is the code as it is evolving toward a release.
-
-
-- 2014-11-24: Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://nifi.incubator.apache.org/](http://nifi.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `nifi.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `nifi.incubator.apache.org`  |
-| . | users |  `users`  `@`  `nifi.incubator.apache.org`  |
-| Issue tracking | . |  [https://issues.apache.org/jira/browse/NIFI/](https://issues.apache.org/jira/browse/NIFI/)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-nifi.git](https://gitbox.apache.org/repos/asf/incubator-nifi.git)  |
-| Source code | Git (Mirror) |  [https://github.com/apache/incubator-nifi](https://github.com/apache/incubator-nifi)  |
-| Source code (for web site) | SVN |  [https://svn.apache.org/repos/asf/incubator/nifi/](https://svn.apache.org/repos/asf/incubator/nifi/)  |
-| Mentors | billie | Billie Rinaldi |
-| . | arvind | Arvind Prabhakar |
-| . | wikier | Sergio Fernandez |
-| . | bimargulies | Benson Margulies |
-| . | drew | Drew Farris |
-| . | brock | Brock Noland |
-| . | apurtell | Andrew Purtell |
-| Committers | aldrin | Aldrin Piri |
-| . | devriesb | Brandon DeVries |
-| . | jcarey | Jason Carey |
-| . | jbarnabee | Jenn Barnabee |
-| . | joewitt | Joseph Witt |
-| . | markap14 | Mark Payne |
-| . | mcgilman | Matt Gilman |
-| . | taftster | Adam Taft |
-| . | tkurc | Tony Kurc |
-| . | bbende | Bryan Bende |
-| . | danbress | Dan Bress |
-
-
--  [December 2014](http://wiki.apache.org/incubator/December2014) 
-
--  [January 2015](http://wiki.apache.org/incubator/January2015) 
-
--  [February 2015](http://wiki.apache.org/incubator/February2015) 
-
--  [May 2015](http://wiki.apache.org/incubator/May2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-11-24 | Apache NiFi accepted by vote of the Incubator PMC. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-12-08 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-11-25 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-12-05 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-05-28 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-12-08 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-12-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-12-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-12-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-01-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-12-18 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-12-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-12-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-11-26 | Check that all active committers have submitted a contributors agreement. |
-| 2014-12-01 | Add all active committers in the STATUS file. |
-| 2014-11-26 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2014-12-21 | Update README with Export Control/ECCN Notice. Updated Apache ECCN XML. Send Export Control Notification. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to a new PMC, has the board voted to accept it? YES July 15 2015
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? YES. June 2015.
diff --git a/content/nlpcraft.md b/content/nlpcraft.md
deleted file mode 100644
index 5bafb03..0000000
--- a/content/nlpcraft.md
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Apache NLPCraft Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-NLPCraft is a standalone resource scheduler responsible for scheduling batch jobs and long-running services on large scale distributed systems running in on-premises environments as well as different public clouds.
-
-
-
-- 2020-02-13 Project enters incubation.
-
-- 2020-02-24 JIRA project has been created.
-
-- 2020-02-25 Mailing lists were requested through self-service portal.
-
-- 2020-02-26 Mailing lists were created.
-
-- 2020-02-28 Git repos are created.
-
-- 2020-02-28 New committer accounts are created.
-
-- 2020-03-05 Code migration has started: completed for nlpcraft-java-client.
-
-- 2020-03-07 Code migration has been completed.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  |
-| Mailing list | dev | dev@nlpcraft.apache.org |
-| . | private | private@nlpcraft.apache.org |
-| . | commits | commits@nlpcraft.apache.org |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/NLPCRAFT |
-| Source code | Git (Core repo) | https://gitbox.apache.org/repos/asf/incubator-nlpcraft-core.git |
-| . | Git (Java Client) | https://gitbox.apache.org/repos/asf/incubator-nlpcraft-java-client.git |
-| . | Git (UI module) | https://gitbox.apache.org/repos/asf/incubator-nlpcraft-ui.git |
-| . | Initial source repo of the project | https://github.com/nlpcrafters |
-| Roster | people.apache |  [NLPCraft Roster](http://people.apache.org/phonebook.html?podling=nlpcraft)  |
-| Mentors |  | . |
-| . | cos | Konstantin Boudnik (cos at apache dot org) |
-| . | rvs | Roman Shaposhnik (rvs at apache dot org) |
-| . | evansye | Evans Ye (evansye at apache dot org) |
-| . | wave | Dave Fisher (wave at apache dot org) |
-| . | paulk | Paul King (paulk at asert dot com dot au) |
-| . | kamaci | Furkan Kamaci (furkankamaci at gmail dot com) |
-| Committers |  | . |
-| . | Aaron Radzinski | (aradzinski at datalingvo dot com) |
-| . | Dmitriy Monakhov | (dmonakhov at datalingvo dot com) |
-| . | Nikita Ivanov | (mk61hacker at gmail dot com) |
-| . | Sergey Makov | (hekate dot dev at gmail dot com) |
-| . | Sergey Kamov | (skhdlemail at gmail dot com) |
-
-
-- None yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2020-02-26 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2020-02-20 | Request DNS INFRA-19873 |
-| 2020-02-26 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2020-02-20 | Request [git repositories](https://issues.apache.org/jira/browse/INFRA-19873)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2020-02-24 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) . |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2020-03-09 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2020-02-27 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2020-03-14 | Tell Mentors to track progress in the file 'incubator/projects/apisix.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2020-03-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-03-07 | Check that all active committers have submitted a contributors agreement. |
-| 2020-03-04 | Add all active committers in the relevant section above. |
-| 2020-02-29 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/nmaven.md b/content/nmaven.md
deleted file mode 100644
index d237a5e..0000000
--- a/content/nmaven.md
+++ /dev/null
@@ -1,148 +0,0 @@
-Title: NMaven Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. Other information is recorded also under [the original proposal](http://maven.apache.org/proposals/incubator/nmaven.html) .
-
-
-<span class="retired">The NMaven project retired on 2008-11-13</span>
-
-
-NMaven develops plugins and integration for Maven to make building and using .NET languages a first-class citizen in Maven. This project has been retired from the incubator. Development of the latest trunk has continued at [NMaven @ Codeplex](http://www.codeplex.com/nmaven/) , and a continuation of the 0.14 branch is at [NPanday](http://www.codeplex.com/npanday) .
-
-
-
-- 2008-11-13 Dissolved NMaven From the Incubator
-
-- 2008-03-24 NMaven 0.15-incubating release
-
-- 2007-07-11 New committer: Evan Worley
-
-- 2006-12-10 NMaven code imported
-
-- 2006-12-07 Mailing lists created
-
-- 2006-12-06 NMaven software grant received by the ASF
-
-- 2006-11-17 Project proposal [published](http://maven.apache.org/proposals/incubator/nmaven.html) .
-
-| Item | Type | Reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/nmaven/](http://incubator.apache.org/nmaven/)  |
-| Website | wiki |  _not yet requested_  |
-| Mailing list | private (for the members of the ppmc) |  [nmaven-private@incubator.apache.org](mailto:nmaven-private@incubator.apache.org)  |
-| Mailing list | dev |  [nmaven-dev@incubator.apache.org](mailto:nmaven-dev@incubator.apache.org) [ [Subscribe](mailto:nmaven-dev-subscribe@incubator.apache.org) | [Unsubscribe](mailto:nmaven-dev-unsubscribe@incubator.apache.org) | [Archive](http://mail-archives.apache.org/mod_mbox/incubator-nmaven-dev/) ] |
-| Mailing list | commits |  [nmaven-commits@incubator.apache.org](mailto:nmaven-commits@incubator.apache.org) [ [Subscribe](mailto:nmaven-commits-subscribe@incubator.apache.org) | [Unsubscribe](mailto:nmaven-commits-unsubscribe@incubator.apache.org) | [Archive](http://mail-archives.apache.org/mod_mbox/incubator-nmaven-commits/) ] |
-| Bug tracking | JIRA | NMAVEN |
-| Source code | svn |  [https://svn.apache.org/repos/asf/incubator/nmaven/](https://svn.apache.org/repos/asf/incubator/nmaven/)  |
-
-
-
-
-| Role | Apache Id | Name (Given Surname) |
-|------|-----------|----------------------|
-| Champion, Mentor | brett | Brett Porter |
-| Champion, Mentor | jvanzyl | Jason van Zyl |
-| Committer | eworley | Evan Worley |
-| Committer | sisbell | Shane Isbell |
-| Committer | dfabulich | Dan Fabulich |
-| Committer | chrisjs | Chris Stevenson |
-| Committer | trygvis | Trygve Laugstol |
-| Committer | jstrachan | James Strachan |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache. **DONE.** 
-
-
-## Interim responsibility {#Interim+responsibility}
-
-| Date | Item |
-|------|------|
-| 2006-11-17 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-12-07 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-12-07 | Give all Mentors access to all incubator SVN modules. (to be done by PMC chair) |
-| 2006-12-07 | Tell Mentors to track progress in the file 'incubator/projects/nmaven.html' which is generated from the XML status file. |
-
-## Copyright {#Copyright}
-
-| Date | Item |
-|------|------|
-| 2006-12-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-03-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| Date | Item |
-|------|------|
-| 2008-03-24 | Check and make sure that for all code included with the distribution that is not under the Apache license have the right to combine with Apache-licensed code and redistribute. |
-| 2008-03-24 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| Date | Item |
-|------|------|
-| 2006-12-10 | Check that all active committers have submitted a contributors agreement. |
-| 2006-12-10 | Add all active committers in the STATUS file. |
-| 2006-12-10 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| Date | Item |
-|------|------|
-| 2006-12-10 | Create source repository modules and grant the committers karma. |
-| 2006-12-07 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-12-10 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/npanday.md b/content/npanday.md
index e51f0de..1dd62a0 100644
--- a/content/npanday.md
+++ b/content/npanday.md
@@ -1,212 +1,61 @@
-Title: NPanday Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: NPanday Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="retired">The NPanday project retired on 2015-02-08</span>
-
-
-NPanday allows projects using the .NET framework to be built with Apache Maven. NPanday allows .NET projects to be converted into Maven projects thus allowing them to fully utilize the other technologies driven by Maven.
+Describe the incoming codebase, including whether it is a large set of patches, new functional modules, etc.
 
 
 
-- 2015-02-08 Project requested to be withdrawn from incubation
-
-- 2014-07-02 Konstantin Boudnik added as a mentor
-
-- 2014-01-02 Maria Odea Ching resigned from the PPMC and as a mentor
-
-- 2013-12-08 Raphael Bircher added as a mentor
-
-- 2013-09-15 Dennis Lundberg resigned as a mentor
-
-- 2012-07-31 Wendy Smoak resigned from the PPMC and went emeritus
-
-- 2012-05-29 Matthias Wessendorf resigned as a mentor
-
-- 2011-04-25 Matthias Wessendorf added as a mentor
-
-- 2011-04-19 John Fallows added as a committer
-
-- 2011-05-17 Apache NPanday 1.4.0-incubating released
-
-- 2011-03-03 Apache NPanday 1.3-incubating released
-
-- 2010-12-29 Gavin McDonald resigned as a mentor
-
-- 2010-08-13 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [NPanday Website](http://incubator.apache.org/npanday/)  |
-| . | wiki |  [NPanday Wiki](http://cwiki.apache.org/confluence/display/NPANDAY/)  |
-| Source code | SVN |  [NPanday Subversion Repository](http://svn.apache.org/repos/asf/incubator/npanday/trunk/)  |
-| Champion | brett | Brett Porter |
-| Mentors | rbircher | Raphael Bircher |
-|  | cos | Konstantin Boudnik |
-| PPMC | mbaclay | Marecor Baclay |
-|  | lcorneliussen | Lars Corneliuessen |
-|  | jocaba | Joe Ocaba |
-|  | apadilla | Adelita Padilla |
-|  | brett | Brett Porter |
-|  | craig | Craig Bachelor |
-| Committers | matzew | Matthias Wessendorf |
-|  | jfallows | John Fallows |
-|  | dennisl | Dennis Lundberg |
-| Emeritus | wsmoak | Wendy Smoak |
-|  | oching | Maria Odea Ching |
+- Which PMC will be responsible for the code : INCUBATOR-PMC
 
 
--  [NPanday Website](http://incubator.apache.org/npanday/) 
+- Into which existing project/module: NPanday (incubating as of 8/13/2010)
 
 
--  [NPanday Mailing Lists](http://incubator.apache.org/npanday/mail-lists.html) 
+- Officer or member managing donation: Maria Odea Ching
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
--  [NPanday Issue Tracker](http://issues.apache.org/jira/browse/NPANDAY) 
+# Identify the codebase {#Identify+the+codebase}
 
+| 2010-08-01 | Please refer to the dumps on https://issues.apache.org/jira/browse/INFRA-2941 and their checksums. |
+|------------|----------------------------------------------------------------------------------------------------|
 
--  [NPanday Wiki](http://cwiki.apache.org/confluence/display/NPANDAY/) 
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
 
 
--  [NPanday Subversion Repository](http://svn.apache.org/repos/asf/incubator/npanday/trunk/) 
-
-
--  [NPanday Developer's Guide](http://incubator.apache.org/npanday/docs/current/developers/index.html) 
-
-
--  [NPanday Development Team](http://incubator.apache.org/npanday/team-list.html) 
-
-
--  [April 2014](http://wiki.apache.org/incubator/April2014#NPanday) 
-
--  [December 2013](http://wiki.apache.org/incubator/December2013#NPanday) 
-
--  [May 2013](http://wiki.apache.org/incubator/May2013#NPanday) 
-
--  [February 2013](http://wiki.apache.org/incubator/February2013#NPanday) 
-
--  [November 2012](http://wiki.apache.org/incubator/November2012#NPanday) 
-
--  [September 2012](http://wiki.apache.org/incubator/September2012#NPanday) 
-
--  [May 2012](http://wiki.apache.org/incubator/May2012#NPanday) 
-
--  [February 2012](http://wiki.apache.org/incubator/February2012#NPanday) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011#NPanday) 
-
--  [August 2011](http://wiki.apache.org/incubator/August2011#NPanday) 
-
--  [May 2011](http://wiki.apache.org/incubator/May2011#NPanday) 
-
--  [February 2011](http://wiki.apache.org/incubator/February2011#NPanday) 
-
--  [November 2010](http://wiki.apache.org/incubator/November2010#NPanday) 
-
--  [October 2010](http://wiki.apache.org/incubator/October2010#NPanday) 
-
--  [September 2010](http://wiki.apache.org/incubator/September2010#NPanday) 
-
--  [August 2010](http://wiki.apache.org/incubator/August2010#NPanday) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-02-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2010-08-13 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-09-08 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-08-31 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-10-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2010-08-31 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2010-10-06 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-08-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-08-13 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-08-31 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-11-17 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
 ## Copyright {#Copyright}
 
-| date | item |
-|------|------|
-| 2011-02-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-01-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2011-01-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. | 2011-01-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|----------------------------------------------------------------------------------------------------------------|
 
-See also: [NPanday IP Clearance](../ip-clearance/npanday.html) 
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
 
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2011-01-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-01-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-09-02 | Check that all active committers have submitted a contributors agreement. |
-| 2010-11-17 | Add all active committers in the STATUS file. |
-| 2010-09-02 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
+Corporations and individuals holding existing distribution rights:
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
+
+-  _Codeplex_ 
+
+| 2011-01-12 | Check that all active committers have a signed CLA on record. |
+|------------|---------------------------------------------------------------|
+| 2011-01-12 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 2011-01-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 2011-01-12 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-## Collaborative Development {#Collaborative+Development}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
 
 
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
 
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/nutch.md b/content/nutch.md
deleted file mode 100644
index df596fb..0000000
--- a/content/nutch.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Title: Nutch Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-On 2005-06-01, the Nutch project has been voted in by the Lucene PMC to become part of the Lucene project.
-
-
-<span class="graduated">The Nutch project graduated on 2005-06-01</span>
-
-
-Nutch is web search software. It builds on the Apache Lucene search library, adding a crawler, web database (including full link graph), plugins for various document formats, user interface, etc. It is currently used by sites such as [The Creative Commons](http://search.creativecommons.org/) , [Oregon State University](http://oregonstate.edu/) , and The Internet Archive.
-
-
-
-- Project Website: [http://www.nutch.org/](http://www.nutch.org/) 
-
-
-- Project Mailing Lists: [http://incubator.apache.org/nutch/mailing_lists.html](http://incubator.apache.org/nutch/mailing_lists.html) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/nutch/](http://incubator.apache.org/nutch/)  |
-|  | wiki | http://wiki.apache.org/nutch/ |
-| Mailing list | dev | nutch-dev@incubator.apache.org |
-|  | commits | nutch-commits@incubator.apache.org |
-|  | user | nutch-user@incubator.apache.org |
-|  | agent | nutch-agent@incubator.apache.org |
-|  |  | nutch-general@incubator.apache.org |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/](http://issues.apache.org/jira)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/nutch](https://svn.apache.org/repos/asf/incubator/nutch)  |
-| Mentors | cutting | Doug Cutting |
-|  | ehatcher | Erik Hatcher |
-| Committers | cutting | Doug Cutting |
-|  | cafarella | Michael Cafarella |
-|  | abial | Andrzej Bialecki |
-|  | johnx | John Xing |
-|  | ziren | Sami Siren |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| status | item |
-|---------|-------|
-| DONE | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| DONE | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| status | item |
-|---------|-------|
-| DONE | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc and general lists. |
-| DONE | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| DONE | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| status | item |
-|---------|-------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| status | item |
-|---------|-------|
-| DONE | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-Yes. All existing committers have migrated to Apache.
-
-
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-Yes. Nutch has five committers. No two committers share an employer. Yahoo! at times contracts with two of the five committers (Mike &amp; Doug) to work on Nutch.
-
-
-
-- Are project decisions being made in public by the committers?
-
-Yes. Project discussions are on public mailing lists.
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-Yes. Committers are using Apache decision-making guidelines.
-
-<div style="margin-left: 2em">
-### Licensing awareness
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-</div>
-Yes. Several Nutch plugins were disabled when Nutch entered incubation, since they required libraries with incompatible licenses. Nearly all of these have since been re-written and re-enabled. Two plugins remain disabled (parse-mp3 and parse-rtf) but these are not critical. Through this process, all comitters have become familiar with the legal issues related to Apache software.
-
-<div style="margin-left: 2em">
-### Project Specific
-
- _Add project specific tasks here._ 
-
-<h2>Exit</h2>
- _Things to check for before voting the project out._ 
-
-
-### Organizational acceptance of responsibility for the project
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-Yes. It has on 2005-06-01.
-
-
-### Incubator sign-off
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-Yes. It has on 2005-06-01.
-
-</div>
\ No newline at end of file
diff --git a/content/nuttx.md b/content/nuttx.md
deleted file mode 100644
index 265c288..0000000
--- a/content/nuttx.md
+++ /dev/null
@@ -1,146 +0,0 @@
-Title: NuttX Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-NuttX is a mature, real-time embedded operating system (RTOS). It has wide usage in IoT projects, control systems, robotics, drones, and many other systems. Unique properties of NuttX are its strict adherence to standards and its scalability. NuttX follows the Unix standards as defined by OpenGroup.org (POSIX, ANSI, and others). This allows for a high degree of portability. Scalability is supported through a configuration system that allows NuttX to run on the smallest embedded platforms and through high end single board computers.
-
-
-
-- 2019-12-09 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://nuttx.incubator.apache.org/](http://nuttx.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/NUTTX/Nuttx](https://cwiki.apache.org/confluence/display/NUTTX/Nuttx)  |
-| Mailing list | dev |  `dev`  `@`  `nuttx.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `nuttx.incubator.apache.org`  |
-| Bug tracking | . |  [https://github.com/apache/incubator-nuttx/issues](https://github.com/apache/incubator-nuttx/issues)  |
-| Source code | SVN |  [https://gitbox.apache.org/repos/asf?p=incubator-nuttx.git](https://gitbox.apache.org/repos/asf?p=incubator-nuttx.git)  |
-| Roster | Whimsy |  [NuttX Roster](https://whimsy.apache.org/roster/ppmc/nuttx)  |
-
-
--  [NuttX Board Reports](https://whimsy.apache.org/board/minutes/nuttx.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-12-08 | Request DNS (first step after creating podling status page) |
-| 2019-12-10 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2019-12-15 | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2019-12-30 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2019-12-14 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2019-12-11 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/nuvem.md b/content/nuvem.md
deleted file mode 100644
index c4799c2..0000000
--- a/content/nuvem.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: Nuvem Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Nuvem project graduated on 2012-11-29</span>
-
-
-Nuvem defines an open application programming interface for common cloud application services, allowing applications to be easily ported across the most popular cloud platforms.
-
-
-
-- 2010-06-24 - Nuvem enters incubation.
-
-
--  [Nuvem website](http://incubator.apache.org/nuvem/) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/nuvem/](http://incubator.apache.org/nuvem/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/NUVEM/Index](https://cwiki.apache.org/confluence/display/NUVEM/Index)  |
-| Mailing list | dev |  [nuvem-dev@incubator.apache.org](mailto:nuvem-dev-subscribe@incubator.apache.org)  |
-| . | user |  [nuvem-user@incubator.apache.org](mailto:nuvem-user-subscribe@incubator.apache.org)  |
-| . | commits |  [nuvem-commits@incubator.apache.org](mailto:nuvem-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/NUVEM](https://issues.apache.org/jira/browse/NUVEM)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/nuvem/](https://svn.apache.org/repos/asf/incubator/nuvem/)  |
-| Mentors | jfclere | Jean-Frederic Clere |
-| . | pzf | Paul Fremantle |
-| . | antelder | Ant Elder |
-| . | dwoods | Donald Woods |
-| Committers | chintana | Chintana Wilamuna |
-| . | dwoods | Donald Woods |
-| . | jsdelfino | Jean-Sebastien Delfino |
-| . | lresende | Luciano Resende |
-| . | rfeng | Raymond Feng |
-| . | sagara | Sagara Gunathunga |
-| . | senaka | Senaka Fernando |
-| . | sgoyal | Sonal Goyal |
-| . | shankar | Selvaratnam Uthaiyashankar |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ode-1-sybase-bpe.md b/content/ode-1-sybase-bpe.md
new file mode 100644
index 0000000..69f9073
--- /dev/null
+++ b/content/ode-1-sybase-bpe.md
@@ -0,0 +1,59 @@
+Title: Ode Codebase Intellectual Property (IP) Clearance Status
+
+
+The incoming code is a contribution from Sybase. It's contributed as a whole project that will be integrated with other donations to build Ode. The code is a complete BPEL-compliant orchestration engine originally named BPE.
+
+
+
+- Which PMC will be responsible for the code: Ode / Incubator
+
+
+- Into which existing project/module: Ode SVN
+
+
+- Officer or member managing donation: Alan D. Cabrera
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-04-04 | Checked the United States Patent and Trademark Office to make sure that the name wasn't already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: a20d2f3ec15e1f484db39d231c77a20e ( _OpenSSL 0.9.7f_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-04-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-04-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2006-04-04 | Check that all active committers have a signed CLA on record. |
+| 2006-04-04 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-04-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-04-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: http://mail-archives.apache.org/mod_mbox/incubator-general/200603.mbox/%3c44122E9C.3060501@toolazydogs.com%3e
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/ode-2-intalio-pxe.md b/content/ode-2-intalio-pxe.md
new file mode 100644
index 0000000..d15e8a1
--- /dev/null
+++ b/content/ode-2-intalio-pxe.md
@@ -0,0 +1,59 @@
+Title: Ode Codebase Intellectual Property (IP) Clearance Status
+
+
+The incoming code is a contribution from Intalio. It's contributed as a whole project that will be integrated with other donations to build Ode. The code is a complete BPEL-compliant orchestration engine originally named PXE.
+
+
+
+- Which PMC will be responsible for the code: Ode / Incubator
+
+
+- Into which existing project/module: Ode SVN
+
+
+- Officer or member managing donation: Alan D. Cabrera
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-04-04 | Checked the United States Patent and Trademark Office to make sure that the name wasn't already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: f2c93d74df577b62934e73ba8bdcc362 ( _OpenSSL 0.9.7f_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-04-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2006-04-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2006-04-04 | Check that all active committers have a signed CLA on record. |
+| 2006-04-04 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-04-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-04-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: http://mail-archives.apache.org/mod_mbox/incubator-general/200603.mbox/%3c44122E9C.3060501@toolazydogs.com%3e
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/ode.md b/content/ode.md
deleted file mode 100644
index e9aee89..0000000
--- a/content/ode.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: Ode Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Ode project graduated on 2007-07-18</span>
-
-
-Ode - Orchestration Director Engine
-
-
-"A lyric poem of some length, usually of a serious or meditative nature and having an elevated style and formal stanzaic structure". - American Heritage Dictionary
-
-
-Ode is an orchestration service that implements the WS-BPEL specification. The project includes an orchestration engine abstraction, standard externally defined interfaces/bindings. The interface implementations and/or bindings enables the orchestration service to be plugged into various service bus or component architectures.
-
-
-
-- 2007-07-18 ODE Graduates. The Board has decided to establish ODE TLP.
-
-- 2007-05-29 ODE 1.0 is released.
-
-- 2006-10-11 An official website is published.
-
-- 2006-07-28 A single codebase is adopted.
-
-- 2006-04-04 The two code donations are in the repository.
-
-- 2006-02-01 Project announced publicly.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ode/](http://incubator.apache.org/ode/)  |
-| Mailing list | dev | ode-dev@incubator.apache.org |
-| Mailing list | users | ode-users@incubator.apache.org |
-| Mailing list | commits | ode-commits@incubator.apache.org |
-| Mailing list | PPMC | ode-private@incubator.apache.org |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/ODE |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/ode/](http://svn.apache.org/repos/asf/incubator/ode/)  |
-| Proposal | Wiki |  [http://wiki.apache.org/incubator/OdeProposal](http://wiki.apache.org/incubator/OdeProposal)  |
-| Mentors | pzf - Paul Fremantle<br></br>niclas - Niclas Hedhman<br></br>dims - Davanum Srinivas |  |
-| PMC Members | adc - Alan Cabrera<br></br>assaf - Assaf Arkin<br></br>boisvert - Alex Boisvert<br></br>charper - Cory Harper<br></br>dims - Davanum Srinivas<br></br>gnodet - Guillaume Nodet<br></br>lwaterman - Lance Waterman<br></br>mriou - Matthieu Riou<br></br>niclas - Niclas Hedhman<br></br>paulrbrown - Paul R. Brown<br></br>pzf - Paul Fremantle<br></br>rajdavies - Rob Davies<br></br>mszefler - Maciej Szefler<br></br> |  |
-| Committers | adc - Alan Cabrera<br></br>assaf - Assaf Arkin<br></br>bflood - William B. Flood<br></br>boisvert - Alex Boisvert<br></br>charper - Cory Harper<br></br>dims - Davanum Srinivase<br></br>geirm - Geir Magnusson Jr.<br></br>gnodet - Guillaume Nodet<br></br>jstrachan - James Strachan<br></br>lwaterman - Lance Waterman<br></br>mriou - Matthieu Riou<br></br>mszefler - Maciej Szefler<br></br>paulrbrown - Paul R. Brown<br></br>rajdavies - Rob Davies |  |
-
-
--  [April 2006](http://wiki.apache.org/incubator/April2006) 
-
--  [May 2006](http://wiki.apache.org/incubator/May2006) 
-
--  [June 2006](http://wiki.apache.org/incubator/June2006) 
-
--  [September 2006](http://wiki.apache.org/incubator/September2006) 
-
--  [December 2006](http://wiki.apache.org/incubator/December2006) 
-
--  [March 2007](http://wiki.apache.org/incubator/March2007) 
-
--  [June 2007](http://wiki.apache.org/incubator/June2007) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| 2006-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2006-02 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-02 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-03 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-03 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-03 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2006-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2006-07 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2006-07 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| status | item |
-|--------|------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| status | item |
-|--------|------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| status | item |
-|--------|------|
-| DONE | Check the IP rights and make sure that we have the right to distribute an implementation of the WS-BPEL standards. |
-| DONE | Remove the dependency toward Hibernate (LGPL). |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/odftoolkit.md b/content/odftoolkit.md
deleted file mode 100644
index 9456163..0000000
--- a/content/odftoolkit.md
+++ /dev/null
@@ -1,228 +0,0 @@
-Title: Apache ODF Toolkit Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The ODF Toolkit project retired from Apache Incubation on 2018-11-27</span>
-
-
-<span class="retired">The ODF Toolkit project moved to The Document Foundation at [http://odftoolkit.org/](http://odftoolkit.org/) </span>
-
-
-The ODF Toolkit is a set of Java modules that allow programmatic creation, scanning and manipulation of OpenDocument Format (ISO/IEC 26300 == ODF) documents. Unlike other approaches which rely on runtime manipulation of heavy-weight editors via an automation interface, the ODF Toolkit is lightweight and ideal for server use.
-
-
-
-- 2018-11-27 Project removed from incubation.
-
-- 2017-04-10 ODF Toolkit 0.6.2-incubating available
-
-- 2017-03-07 We have a new mentor: Tom Barber.
-
-- 2015-10-05 We have a new committer/PPMC: Damjan Jovanovic.
-
-- 2014-06-02 ODF Toolkit 0.6.1-incubating available
-
-- 2013-06-22 ODF Toolkit 0.6-incubating available
-
-- ...
-
-- 2011-11-16 We have a new committer: Oliver Rau.
-
-- 2011-09-13 Website and Source Code migration complete.
-
-- 2011-08-01 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [Is now at http://odftoolkit.org/](http://odftoolkit.org/)  |
-| . | wiki |  _To be migrated_  |
-| Mailing list | dev |  `odf-dev`  `@`  `incubator.apache.org`  |
-| . | users |  `odf-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `odf-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  _ [https://issues.apache.org/jira/browse/ODFTOOLKIT/](https://issues.apache.org/jira/browse/ODFTOOLKIT/) _  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/odf/](https://svn.apache.org/repos/asf/incubator/odf/)  |
-| Source code at the TDF | GIT |  [https://github.com/tdf/odftoolkit](https://github.com/tdf/odftoolkit)  |
-| Mentors | magicaltrout | Tom Barber |
-| . | nick | Nick Burch |
-| . | yegor | Yegor Kozlov |
-| . | robweir | Rob Weir |
-| Committers | robweir | Rob Weir |
-| . | damjan | Damjan Jovanovic |
-| . | devinhan | Biao Han (Devin) |
-| . | svanteschubert | Svante Schubert |
-| . | daisyguo | Ying Chun Guo (Daisy) |
-| . | dpharbison | Don Harbison |
-| . | therabi | Andy Brown |
-| . | wave | Dave Fisher |
-| . | jsc | Juergen Schmidt |
-| . | liudali | Da Li Liu |
-| . | olira | Oliver Rau |
-| . | fhopf | Florian Hopf |
-| Extra | . | . |
-
-The ODF Toolkit PPMC consists of all the committers and mentors listed above.
-
-
-
-
-October 2013
-
-
-- Three most important issues to address in the move towards graduation:
-
-1. Grow the community, especially attracting new developers.
-
-1. Address issues of too much code development happening outside of Apache
-
-1. Hold an informal graduation readiness vote
-
-
-- Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be aware of:<br></br>It has recently been pointed out that the project status page on the Incubator project site is out of date, we hope to update that shortly.
-
-- How has the community developed since the last report?<br></br>Higher feed-back from the users mailing list, but no new developers.<br></br><br></br>Discussion has started, but without much conclusion, of whether we should aim for TLP status, or merge into an existing TLP with similar alignment, such as POI or OpenOffice.
-
-- How has the project developed since the last report?<br></br>Clear unnecessary dependency from the Clarizza project.
-
-- Date of last release:<br></br>2017-04-10
-
-- When were the last committers or PMC members elected:<br></br>Not for a long while...
-
-
-August 2011
-
-The ODF Toolkit is a set of Java modules that allow programmatic creation, scanning and manipulation of OpenDocument Format (ISO/IEC 26300 == ODF) documents. Unlike other approaches which rely on runtime manipulation of heavy-weight editors via an automation interface, the ODF Toolkit is lightweight and ideal for server use.
-
-
-ODF Toolkit entered incubation on Aug 1st, 2011.
-
-
-
-- Most important issues to address.
-
-1. Moving the community from the ODF Toolkit Union to Apache and learning the Apache Way
-
-1. Growing the community, increasing diversity of committers
-
-1. Grants for the transfer of existing code, documentation etc to Apache
-
-1. Migration of existing things to Apache infrastructure, including code repository, website, mailing list, bugzilla and wiki.
-
-1. Successful podling release.
-
-
-- Any issues that the Incubator PMC or ASF Board might wish/need to be aware of:<br></br>None at this time.
-
-- How has the community developed since the last report<br></br>Just getting started. After mailing lists are ready (INFRA-3809), we will start to discuss migration and new release. At the same time, we will invite the existing users to this new community and try to attract more new people join us.
-
-- How has the project developed since the last report.<br></br>None at this time. Just getting started.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-09-01 | Ask infrastructure to create source repository modules and grant the committers karma. Completed 2011-09-13 |
-| 2011-08-01 | Ask infrastructure to set up and archive mailing lists. Completed 2011-08-15. |
-| 2011-08-24 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla), and migrate in existing issues. _Pending_  |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-08-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-08-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-09-13 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-08-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-08-15 | Check that all active committers have submitted a contributors agreement. |
-| 2011-08-15 | Add all active committers in the STATUS file. |
-| 2011-08-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ofbiz.md b/content/ofbiz.md
deleted file mode 100644
index 89eebce..0000000
--- a/content/ofbiz.md
+++ /dev/null
@@ -1,186 +0,0 @@
-Title: Apache OFBiz Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
- **Apache OFBiz is now a top-level project.** 
-
-
-The Apache OFBiz project completed incubation on 2006-12-20. Please go to the main project site:
-
-
- [http://ofbiz.apache.org/](http://ofbiz.apache.org/) 
-
-
-This page was used to track the project status, incubator-wise. This page is of historical interest only.
-
-
-<span class="graduated">The OFBiz project graduated on 2006-12-20</span>
-
-
-The Open For Business Project (Apache OFBiz) is an open source enterprise automation software project. By open source enterprise automation we mean: Open Source ERP, Open Source CRM, Open Source E-Business / E-Commerce, Open Source SCM, Open Source MRP, Open Source CMMS/EAM, and so on. It is one of the few apps of this type to be developed by a community, rather than one corporation.
-
-
-
--  **Apache OFBiz is now officially a TLP (top level project) at the ASF** 
-
--  **2006-12-20** The Board of Directors voted to make Apache OFBiz a top-level project (see [this](http://mail-archives.apache.org/mod_mbox/incubator-general/200612.mbox/raw/%3c31cc37360612212134w4e62392dxfcbcb9e53a2ddd0d@mail.gmail.com%3e) message)
-
--  **2006-11-28** Thanks to 7 binding votes and 2 non binding ones, the Incubator has positively voted for the graduation of OFBiz podling (see the vote [results](http://mail-archives.apache.org/mod_mbox/incubator-general/200611.mbox/%3c6FEFF1E8-7963-41CF-A352-C28D0B024675@undersunconsulting.com%3e) ); thanks to everyone who have helped get OFBiz to this point, we are looking forward working more with and in the Foundation; the Board resolution will be now sent to the Apache Board for the final resolution.
-
-- 2006-11-14 The community vote has [approved](http://mail-archives.apache.org/mod_mbox/incubator-ofbiz-dev/200611.mbox/%3cD567AD41-94FD-432B-B2BC-DC10F36A193A@undersunconsulting.com%3e) to start the graduation process to exit from Apache Incubator
-
-- 2006-11-10 The Incubator vote has [approved](http://mail-archives.apache.org/mod_mbox/incubator-general/200611.mbox/%3c073F921E-D0D9-4FCC-84E1-57B16A2986A0@undersunconsulting.com%3e) the 4.0.0 TS5 test snapshot release
-
-- 2006-11-02 The community vote has [approved](http://mail-archives.apache.org/mod_mbox/incubator-ofbiz-dev/200611.mbox/%3c20FBF476-81F9-4B4F-81CB-F443D4AE402E@undersunconsulting.com%3e) the 4.0.0 TS5 test snapshot release
-
-- 2006-10-01 All the Jira issues from the old server have been manually migrated to the new Apache Jira server
-
-- 2006-09-22 The community vote has [approved](http://mail-archives.apache.org/mod_mbox/incubator-ofbiz-dev/200609.mbox/%3c7FB8EB75-0387-440F-88C3-9A35D2137FA5@undersunconsulting.com%3e) the 4.0.0 TS3 test snapshot release
-
-- 2006-09-18 The candidate files for the 4.0.0 TS3 test snapshot release are available [here](http://docs.ofbiz.org/display/OFBADMIN/Apache+OFBiz+Incubating+4.0.0+Test+Snapshot+Release) 
-
-- 2006-09-15 A draft for a Release Plan is now available [here](http://docs.ofbiz.org/display/OFBADMIN/Release+Plan) 
-
-- 2006-09-02 All the OFBiz files have been updated to reflect the new license: now OFBiz is a licensed under the ASL2.0
-
-- 2006-09-02 The collection of iCLAs is now completed: we have now all the 74 iCLAs needed to perform the license switch from MIT to ASL2.0
-
-- 2006-07-15 After a public discussion in the ml a document about "Committers Roles and Responsibilities" has been published [here](http://docs.ofbiz.org/display/OFBADMIN/OFBiz+Committers+Roles+and+Responsibilities) 
-
-- 2006-07-15 After a public discussion in the ml a document about "Contributors Best Practices" has been published [here](http://docs.ofbiz.org/display/OFBADMIN/OFBiz+Contributors+Best+Practices) 
-
-- 2006-07-02 Web site cleaned up and migrated to the Apache server
-
-- 2006-07-01 Code migrated to the Incubator SVN server
-
-- 2006-06-23 Migration to the new mailing lists is now complete
-
-- 2006-06-02 Migration to the new Jira server is now complete; the old server will not accept new issues but it is still used to manage the existing ones; Jira notifications are now sent to the new ofbiz-dev list
-
-- 2006-06-01 Resolved all the dependencies to LGPLed jars (the most relevant one was the JOTM transaction manager, now replaced by the Geronimo tm)
-
-- 2006-05-04 Jacques Le Roux has been voted as a new committer for the pos (Point of Sales) component
-
-- 2006-03-29 The ofbiz-ppmc mailing list is active
-
-- 2006-03-28 Accounts created for all the initial committers: jonesde, jaz, sichen, byersa, hansbak, jacopoc
-
-- 2006-02-19 Created ofbiz-dev, ofbiz-user, ofbiz-commits, ofbiz-ppmc lists ( [INFRA-720](https://issues.apache.org/jira/browse/INFRA-720) ); the new lists are still not active
-
-- 2006-01-31 Project accepted by the Incubator PMC: [vote result](http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3c7a31ebb30601310944i987014dh5a51a7ad6360d4d1@mail.gmail.com%3e) 
-
-- 2006-01-10 Project proposed to the Incubator PMC: [OFBiz Proposal](http://wiki.apache.org/incubator/OFBizProposal) 
-
-| Resources |  |
-|-----------|--|
-|  | Website |  [http://ofbiz.apache.org/](http://ofbiz.apache.org/ofbiz/)  |
-|  | Documentation, Wiki |  [http://docs.ofbiz.org](http://docs.ofbiz.org)  |
-| Mailing lists |  |
-|---------------|--|
-|  | developers | dev@ofbiz.apache.org |
-|  | users | user@ofbiz.apache.org |
-|  | commit logs | commits@ofbiz.apache.org |
-|  | PMC | private@ofbiz.apache.org |
-|  | archives of pre-Apache posts |  [http://lists.ofbiz.org](http://lists.ofbiz.org)  |
-| Bug tracking |  |
-|--------------|--|
-|  | Jira |  [https://issues.apache.org/jira/browse/OFBIZ](https://issues.apache.org/jira/browse/OFBIZ)  |
-|  |  | sign up for Jira account [here](https://issues.apache.org/jira/secure/Signup!default.jspa)  |
-| Source code |  |
-|-------------|--|
-|  | ASF SVN |  [http://svn.apache.org/repos/asf/ofbiz/](http://svn.apache.org/repos/asf/ofbiz/)  |
-|  | old SVN (optional components are maintained here) |  [http://svn.ofbiz.org](http://svn.ofbiz.org)  |
-| Mentors |  |
-|---------|--|
-|  | davidw | David N. Welton |
-|  | yoavs | Yoav Shapira |
-|  | farra | J Aaron Farr |
-| Committers |  |
-|------------|--|
-|  | jonesde | David E. Jones (initial committer) |
-|  | jaz | Andy Zeneski (initial committer) |
-|  | sichen | Si Chen (initial committer) |
-|  | byersa | Al Byers (initial committer) |
-|  | jacopoc | Jacopo Cappellato (initial committer) |
-|  | hansbak | Hans Bakker (initial committer) |
-|  | jleroux | Jacques Le Roux |
-
-
-- First report - [March 2006](http://wiki.apache.org/incubator/March2006) 
-
-- Second report - [April 2006](http://wiki.apache.org/incubator/April2006) 
-
-- Third report - [May 2006](http://wiki.apache.org/incubator/May2006) 
-
-- Fourth report - [June 2006](http://wiki.apache.org/incubator/June2006) 
-
-- Fifth report - [September 2006](http://wiki.apache.org/incubator/September2006) 
-
-- Sixth report - [December 2006](http://wiki.apache.org/incubator/December2006) 
-
-While not official status reports, Si Chen does a weekly summary of development work taking place: [http://ofbiz-new.blogspot.com/](http://ofbiz-new.blogspot.com/) 
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| 2006-02-10 | Make sure that the requested project name does not already exist and that the name is not already trademarked for an existing software product. |
-| 2006-02-05 | Assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-02-11 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-02-20 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-02-11 | Tell Mentors to track progress in the file 'site-author/projects/ofbiz.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2006-09-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. Everyone who has contributed significant portions of the software has been asked to sign the [iCLA](http://www.apache.org/licenses/icla.txt) and send it to the ASF. There is a wiki [page](http://docs.ofbiz.org/x/WQ) with details about all the contributors past and present. |
-| 2006-09-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2006-06-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. A list of all included jars and their licenses is [here](http://docs.ofbiz.org/x/Vg) . |
-| 2006-06-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2006-02-11 | Check that all active committers have submitted a contributors agreement. |
-| 2006-02-11 | Add all active committers in the STATUS file. |
-| 2006-03-28 | Ask root for the creation of committers' accounts on people.apache.org. The following accounts have been created: jaz, jonesde, jacopoc, hansbak, byersa, sichen. |
-| 2006-07-13 | Ask root for the creation of a new account (jleroux) on people.apache.org for the new committer Jacques Le Roux. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2006-05-20 | Ask infrastructure to setup the Jira issuetracking system. ( [INFRA-713](https://issues.apache.org/jira/browse/INFRA-713) ) |
-| 2006-02-19 | Ask infrastructure to set up Mailing lists. ( [INFRA-720](https://issues.apache.org/jira/browse/INFRA-720) ) |
-| 2006-02-22 | Ask infrastructure to migrate mailing list subscribers from the ofbiz.org lists and archive mailing lists. ( [INFRA-738](https://issues.apache.org/jira/browse/INFRA-738) ) |
-| 2006-03-01 | Ask infrastructure to create the SVN trunk and grant the committers karma. ( [INFRA-741](https://issues.apache.org/jira/browse/INFRA-741) ) |
-| 2006-06-02 | Migrate the issue tracker system to the ASF one ( [OFBiz](https://issues.apache.org/jira/browse/OFBIZ) ) and keep existing issues on the old server ( [jira.ofbiz.org](http://jira.ofbiz.org) ) but not allow the creation of new ones in the old server |
-| 2006-06-23 | Move traffic to the ASF mailing lists and keep the archives in the [old lists](http://lists.ofbiz.org/mailman/listinfo)  |
-| 2006-07-01 | Migrate the project to the new ASF SVN server. |
-| 2006-07-02 | Migrate the project website. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2006-07-02 | Update and clean up the website's resources. |
diff --git a/content/ognl.md b/content/ognl.md
deleted file mode 100644
index 71652f7..0000000
--- a/content/ognl.md
+++ /dev/null
@@ -1,93 +0,0 @@
-Title: OGNL
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The OGNL project graduated on 2011-08-30</span>
-
-
-OGNL is a Java component implementing the Object-Graph Navigation Language.
-
-
-
-- 2011-08-30 OGNL graduated out of the Incubator and into [Apache Commons](http://svn.apache.org/repos/asf/commons/proper/ognl/) 
-
-
-- 2011-08-25 Antonio Petrelli requested to be removed from the committers list.
-
-
-- 2011-04-26 OGNL entered incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ognl/](http://incubator.apache.org/ognl/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `commons.apache.org`  |
-| Mailing list | user |  `user`  `@`  `commons.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/OGNL |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/ognl/](https://svn.apache.org/repos/asf/incubator/ognl/)  |
-| Mentors | grobmeier | Christian Grobmeier |
-| . | jochen | Jochen Wiedmann |
-| . | olamy | Olivier Lamy |
-| . | upayavira | Upayavira |
-| . | grobmeier | Christian Grobmeier |
-| . | jkuhnert | Jesse Kuhnert |
-| . | jochen | Jochen Wiedmann |
-| . | lukaszlenart | Lukasz Lenart |
-| . | olamy | Olivier Lamy |
-| . | drewd | Marc Andrew Davidson |
-| . | mcucchiara | Maurizio Cucchiara |
-| . | simonetripodi | Simone Tripodi |
-| . | upayavira | Upayavira |
-| . | leadpipe | Luke Blanshard |
-| Champion | lukaszlenart | Lukasz Lenart |
-
-#  {#Project+Setup}
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-04-26 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2011-04-26 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-05-03 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-05-03 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-05-03 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-05-03 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-04-26 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-05-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-05-03 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-05-03 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-07-24 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-07-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-07-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-07-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-07-29 | Check that all active committers have submitted a contributors agreement. |
-| 2011-07-29 | Add all active committers in the STATUS file. |
-| 2011-04-26 | Ask root for the creation of committers' accounts on people.apache.org. |
diff --git a/content/olingo.md b/content/olingo.md
deleted file mode 100644
index 5d62cc2..0000000
--- a/content/olingo.md
+++ /dev/null
@@ -1,199 +0,0 @@
-Title: Apache Olingo Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Olingo project graduated on 2014-03-19</span>
-
-
-Apache Olingo is a generic Java language implementation of the OData 2.0 specification which will serve as a code base for the upcoming OASIS OData specification.
-
-
-
-- 2013-07-08 Project enters incubation.
-
-- 2013-10-16 Release 1.0.0
-
-- 2013-10-30 New committer: V, Deepashree
-
-- 2013-12-05 New committer: Sven Kobler
-
-- 2014-02-10 Release 1.1.0
-
-- 2014-02-10 New committer: Fabio Martelli
-
-- 2014-02-10 New committer: Massimiliano Perrone
-
-- 2014-02-10 New committer: Eduard Koller
-
-- 2014-02-10 New committer: Challen He
-
-- 2014-02-10 New committer: Bing Li
-
-- 2014-02-14 New contribution: OData 3.0 Java Client Library
-
-- 2014-02-14 New contribution: OData 3.0 JavaScript Client Library
-
-- 2014-03-19 Apache Olingo graduates from incubator to a TLP
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://olingo.incubator.apache.org/](http://olingo.incubator.apache.org/)  |
-| . | wiki |  [https://wiki.apache.org/Olingo/](https://wiki.apache.org/Olingo/)  |
-| Mailing list | dev |  `dev`  `@`  `olingo.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `olingo.incubator.apache.org`  |
-| Bug tracking | . |  [OLINGO](https://issues.apache.org/jira/browse/OLINGO)  |
-| Source code | GIT | OData 2.0 Java: [https://gitbox.apache.org/repos/asf/incubator-olingo-odata2](https://gitbox.apache.org/repos/asf/incubator-olingo-odata2) <br></br>OData 4.0 Java: [https://gitbox.apache.org/repos/asf/incubator-olingo-odata4](https://gitbox.apache.org/repos/asf/incubator-olingo-odata4) <br></br>OData 4.0 JavaScript: [https://gitbox.apache.org/repos/asf/incubator-olingo-odata4-js](https://gitbox.apache.org/repos/asf/incubator-olingo-odata4)  |
-| Mentors | fmui | Florian Müller |
-| . | wave | Dave Fisher |
-| . | adc | Alan Cabrera |
-| Committers | sklevenz | Stephan Klevenz |
-| . | ilgrosso | Francesco Chicchiriccò |
-| . | jhuesken | Jens Huesken |
-| . | chrisam | Christian Amend |
-| . | mibo | Michael Bolz |
-| . | tboehm | Tamara Boehm |
-| . | chandanva | Chandan V A |
-| . | anirbanroy | Anirban Roy |
-| . | chitresh | Chitresh Chauhan |
-| . | jobinjohn | Jobin John |
-| . | jsi | Joerg Singler |
-| . | deepa | V, Deepashree |
-| . | koblers | Sven Kobler |
-| . | fmartelli | Fabio Martelli |
-| . | massi | Massimiliano Perrone |
-| . | eduardk | Eduard Koller |
-| . | challenh | Challen He |
-| . | bingl | Bing Li |
-| Extra | . | . |
-
-
--  [August 2013](http://wiki.apache.org/incubator/August2013) 
-
--  [September 2013](http://wiki.apache.org/incubator/September2013) 
-
--  [October 2013](http://wiki.apache.org/incubator/October2013) 
-
--  [January 2014](http://wiki.apache.org/incubator/January2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-11-06 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) <br></br> **DONE** (see PODLINGNAMESEARCH-42) |
-| 2013-07-08 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names.<br></br> **DOES NOT APPLY**  |
-| 2013-07-08 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.<br></br> **DOES NOT APPLY**  |
-| 2013-07-08 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted.<br></br> **DONE**  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-07-16 | Ask infrastructure to create source repository modules and grant the committers karma.<br></br> **DONE**  |
-| 2013-07-10 | Ask infrastructure to set up and archive mailing lists.<br></br> **DONE**  |
-| 2013-07-18 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla).<br></br> **DONE**  |
-| 2014-01-14 | Ask infrastructure to set up wiki (Confluence, Moin). <br></br> **DONE** |
-| ....-..-.. | Migrate the project to our infrastructure.<br></br> **DOES NOT APPLY**  |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-07-08 | Identify all the Mentors for the incubation, by asking all that can be Mentors.<br></br> **DONE**  |
-| 2013-07-10 | Subscribe all Mentors on the pmc and general lists.<br></br> **DONE**  |
-| 2013-07-10 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file)<br></br> **DONE**  |
-| 2013-07-08 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html'<br></br> **DONE**  |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-07-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br> **DONE**  |
-| 2013-10-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright.<br></br> **DONE**  |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-10-16 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br> **DONE**  |
-| 2013-10-16 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br> **DONE**  |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-08-01 | Check that all active committers have submitted a contributors agreement.<br></br> **DONE**  |
-| 2013-08-01 | Add all active committers in the STATUS file.<br></br> **DONE**  |
-| 2013-08-01 | Ask root for the creation of committers' accounts on people.apache.org.<br></br> **DONE**  |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/olio.md b/content/olio.md
deleted file mode 100644
index 53e953d..0000000
--- a/content/olio.md
+++ /dev/null
@@ -1,158 +0,0 @@
-Title: Olio Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-<h1 style="background: red">2011/11/16 - Olio has been retired.</h1>
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Olio project retired on 2011-11-16</span>
-
-
-Olio is a web 2.0 toolkit to help developers evaluate the suitability, functionality and performance of various web technologies by implementing a reasonably complex application in several different technologies.
-
-
-
-- 2011-11-16 Project removed from incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www | <s> [http://incubator.apache.org/olio/](http://incubator.apache.org/olio/) </s> |
-| . | wiki | . |
-| Mailing list | dev | <s> [olio-dev@incubator.apache.org](mailto:olio-dev-subscribe@incubator.apache.org) </s> |
-| . | commits | <s> [olio-commits@incubator.apache.org](mailto:olio-commits-subscribe@incubator.apache.org) </s> |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/OLIO](https://issues.apache.org/jira/browse/olio)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/olio](https://svn.apache.org/repos/asf/incubator/olio)  |
-| Mentors | clr | Craig Russell |
-|  | henning | Henning Schmiedehausen |
-|  | hogstrom | Matt Hogstrom |
-|  | rhillegas | Rick Hillegas |
-| Committers | . | Shanti Subramanyam |
-|  | . | Akara Sucharitakul |
-|  | . | Sheetal Patil |
-|  | . | Binu John |
-|  | . | Kim Lichong |
-|  | . | William Sobel |
-|  | . | Arthur Klepchukov |
-|  | . | Michael Bouschen |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-09-29 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-09-29 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-09-29 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-09-29 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-09-29 | Tell Mentors to track progress in the file 'incubator/projects/olio.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-09-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| 2008-09-29 | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-09-29 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-09-29 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-09-29 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/omid.md b/content/omid.md
deleted file mode 100644
index 8d4ef14..0000000
--- a/content/omid.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: Omid Incubation Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Omid project graduated as part of Apache Phoenix on 2019-11-15</span>
-
-
-Omid is a flexible, reliable, high performant and scalable ACID transactional framework that allows client applications to execute transactions on top of MVCC key/value-based NoSQL datastores (currently Apache HBase) providing Snapshot Isolation guarantees on the accessed data.
-
-
-
-- 2016-03-28 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://omid.incubator.apache.org/](http://omid.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `omid.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `omid.incubator.apache.org`  |
-| Bug tracking | . |  [Jira: Omid](https://issues.apache.org/jira/browse/Omid)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-omid.git](https://gitbox.apache.org/repos/asf/incubator-omid.git)  |
-| Champion | daijy | Daniel Dai |
-| Mentors | gates | Alan Gates |
-| . | larsh | Lars Hofhansl |
-| . | fpj | Flavio P. Junqueira |
-| . | jamestaylor | James Taylor |
-| Committers | daijy | Daniel Dai |
-| . | gates | Alan Gates |
-| . | larsh | Lars Hofhansl |
-| . | fpj | Flavio P. Junqueira |
-| . | ikatkov | Igor Katkov |
-| . | toffer | Francis C. Liu |
-| . | thejas | Thejas Nair |
-| . | fperezsorrosal | Francisco Perez-Sorrosal |
-| . | sameerp | Sameer Paranjpye |
-| . | ohads | Ohad Shacham |
-| . | jtaylor | James Taylor |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-03-28 | Ask infrastructure to set up and archive mailing lists |
-| 2016-03-28 | Ask infrastructure to create git repository. |
-| 2016-04-02 | Mailing lists created. |
-| 2016-04-02 | Git repository created. |
-| 2016-04-05 | Ask infrastructure to create Jira project. |
-| 2016-04-06 | Committers karma granted for all committers. |
-| 2016-04-07 | Jira project created. |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-04-07 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-04-05 | Check that all active committers have submitted a contributors agreement. |
-| 2016-04-05 | Add all active committers in the STATUS file. |
-| 2016-04-05 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/onami.md b/content/onami.md
deleted file mode 100644
index be7fd0f..0000000
--- a/content/onami.md
+++ /dev/null
@@ -1,176 +0,0 @@
-Title: Onami Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Onami project graduated on 2013-04-17</span>
-
-
-Apache Onami aims to create a community focused on the development and maintenance of a set of Google Guice extensions not provided out of the box by the library itself nor the Google developers team, such as integration with 3rd part frameworks or extra functionalities.
-
-
-
-- 2013-04-17 Apache Onami exits incubation.
-
-- 2013-03-01 New committer: Jordan Zimmermann
-
-- 2013-02-28 Netflix Inc. donated Governator to the project (Grant is on file), which are developed as onami-scopes and onami-lifecylce
-
-- 2013-02-23 Onami Logging 3.4.0 released
-
-- 2013-02-21 Onami Test 1.4.0 released
-
-- 2013-01-24 New committer: Mikhail Mazursky
-
-- 2013-01-24 New committer: Eric Charles
-
-- 2013-01-19 Onami Parent 2 released
-
-- 2013-01-04 Onami Parent 1 released
-
-- 2012-11-14 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://onami.incubator.apache.org/](http://onami.incubator.apache.org)  |
-| Mailing list | dev |  `dev`  `@`  `onami.incubator.apache.org`  |
-| . | user |  `user`  `@`  `onami.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `onami.incubator.apache.org`  |
-| Bug tracking | Bugzilla |  [https://issues.apache.org/jira/browse/ONAMI](https://issues.apache.org/jira/browse/ONAMI)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/onami/](http://svn.apache.org/repos/asf/incubator/onami/)  |
-| Mentors | grobmeier | Christian Grobmeier |
-|  | mnour | Mohammad Nour El-Din |
-|  | olamy | Olivier Lamy |
-| Committers | grobmeier | Christian Grobmeier |
-|  | codyaray | Cody Ray |
-|  | gtouratier | Ghislain "Picpoc" Touratier |
-|  | danielmanzke | Daniel Manzke |
-|  | dpalmisano | Davide Palmisano |
-|  | eric | Eric Charles |
-|  | iocanel | Ioannis Canellos |
-|  | randgalt | Jordan Zimmermann |
-|  | jordi | Jordi Gerona |
-|  | marcosperanza | Marco Speranza |
-|  | ash2k | Mikhail Mazursky |
-|  | mnour | Mohammad Nour El-Din |
-|  | nmwael | Nino Martinez Wael |
-|  | olamy | Olivier Lamy |
-|  | simonetripodi | Simone Tripodi |
-|  | mcculls | Stuart McCulloch |
-
-
--  [February 2013](http://wiki.apache.org/incubator/February2013) 
-
--  [January 2013](http://wiki.apache.org/incubator/January2013) 
-
--  [December 2013](http://wiki.apache.org/incubator/December2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-03-18 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | <strike>If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names.</strike> |
-| N/A | <strike>If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.</strike> |
-| 2012-11-14 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-12-26 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-12-26 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-12-26 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | <strike>Ask infrastructure to set up wiki (Confluence, Moin).</strike> |
-| 2012-12-26 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-12-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-12-26 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-12-26 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-12-26 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-10-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-03-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-02-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-02-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-12-26 | Check that all active committers have submitted a contributors agreement. |
-| 2012-10-16 | Add all active committers in the STATUS file. |
-| 2012-12-26 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/oodt.md b/content/oodt.md
deleted file mode 100644
index 298562a..0000000
--- a/content/oodt.md
+++ /dev/null
@@ -1,208 +0,0 @@
-Title: OODT Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The OODT project graduated on 2010-11-17</span>
-
-
-OODT is a grid middleware framework for science data processing, information integration, and retrieval.
-
-
-OODT is used on a number of successful projects at [NASA's Jet Propulsion Laboratory/ California Institute of Technology](http://jpl.nasa.gov) , and many other research institutions and universities, specifically those part of the:
-
-
-
--  [National Cancer Institute's (NCI's) Early Detection Research Network (EDRN)](http://cancer.gov/edrn) project - over 40+ institutions all performing research into discovering biomarkers which are early indicators of disease.
-
--  [NASA's Planetary Data System (PDS)](http://pds.nasa.gov) - NASA's planetary data archive, a repository and registry for all planetary data collected over the past 30+ years.
-
-- various Earth Science data processing missions, including [Seawinds/QuickSCAT](http://seawinds.jpl.nasa.gov) , the [Orbiting Carbon Observatory](http://oco.jpl.nasa.gov) , the [NPP Sounder PEATE project](http://jointmission.gsfc.nasa.gov/) , and the [Soil Moisture Active Passive (SMAP)](http://smap.jpl.nasa.gov) mission.
-
-OODT is middleware for metadata:
-
-
-
-- Transparent access to distributed resources
-
-- Data discovery and query optimization
-
-- Distributed processing and virtual archives
-
-OODT is a software architecture:
-
-
-
-- Models for information representation
-
-- Solutions to knowledge capture problems
-
-- Unification of technology, data, and metadata
-
-
-- 2010-11-17 Project graduates to [TLP](http://oodt.apache.org) !
-
-- 2010-09-26 New committer: David Kale
-
-- 2010-08-13 New committer: Cameron Goodale
-
-- 2010-02-08 Mailing lists, issue tracker, accounts, etc. created
-
-- 2010-01-21 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/oodt/](http://incubator.apache.org/oodt/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/OODT/Home](https://cwiki.apache.org/confluence/display/OODT/Home)  |
-| Mailing list | dev |  `oodt-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `oodt-commits`  `@`  `incubator.apache.org`  |
-| . | private (PPMC) |  `oodt-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/OODT](https://issues.apache.org/jira/browse/OODT)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/oodt/](https://svn.apache.org/repos/asf/incubator/oodt/)  |
-| Mentors | jerenkrantz | Justin Erenkrantz |
-| . | rgardler | Ross Gardler |
-| . | ianh | Ian Holsman |
-| . | jfclere | Jean-Frederic Clere |
-| Committers | . | . |
-| . | ahart | Andrew F. Hart |
-| . | bfoster | Brian Foster |
-| . | cgoodale | Cameron Goodale |
-| . | crichton | Daniel J. Crichton |
-| . | davekale | David Kale |
-| . | joshuaga | Joshua Garcia |
-| . | kelly | Sean Kelly |
-| . | mattmann | Chris A. Mattmann |
-| . | pramirez | Paul Ramirez |
-| . | shardman | Sean Hardman |
-| . | smcclees | Sean McCleese |
-| . | woollard | David Woollard |
-| Extra | Proposal |  [OODT Proposal](http://wiki.apache.org/incubator/OODTProposal)  |
-
-
-- All are linked from our wiki, [here](https://cwiki.apache.org/confluence/display/OODT/Home) .
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-01-25 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2010-01-21 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2010-01-21 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-01-25 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-02-11 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-02-11 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-01-25 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-02-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-09-29 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-09-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-11-06 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-02-11 | Check that all active committers have submitted a contributors agreement. |
-| 2010-02-11 | Add all active committers in the STATUS file. |
-| 2010-02-11 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-01-25 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-01-25 | Ask infrastructure to set up and archive Mailing lists. ( [INFRA-2463](https://issues.apache.org/jira/browse/INFRA-2463) ) |
-| 2010-01-25 | Ask infrastructure to set up JIRA ( [INFRA-2464](https://issues.apache.org/jira/browse/INFRA-2464) ) |
-| 2010-01-25 | Ask infrastructure to set up Confluence ( [INFRA-2465](https://issues.apache.org/jira/browse/INFRA-2465) ) |
-| 2010-02-23 | Migrate the project to our infrastructure. |
-
-## Three blocking issues prior to graduation {#Project+specific}
-
-
-1. Port OODT code and license headers into ASF license headers
-
-1. OODT contributors from at least 2 other organizations besides JPL
-
-1. At least one OODT incubating release, hopefully in the first few months
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/oozie.md b/content/oozie.md
deleted file mode 100644
index 5e9ab64..0000000
--- a/content/oozie.md
+++ /dev/null
@@ -1,170 +0,0 @@
-Title: Oozie Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Oozie project graduated on 2012-08-28</span>
-
-
-Oozie is a server-based workflow scheduling and coordination system to manage data processing jobs for Apache Hadoop. More specifically, this includes:
-
-
-
-- XML-based declarative framework to specify a job or a complex workflow of dependent jobs.
-
-- Support different types of job such as Hadoop Map-Reduce, Pipe, Streaming, Pig, Hive and custom java applications.
-
-- Workflow scheduling based on frequency and/or data availability.
-
-- Monitoring capability, automatic retry and failure handing of jobs.
-
-- Extensible and pluggable architecture to allow arbitrary grid programming paradigms.
-
-- Authentication, authorization, and capacity-aware load throttling to allow multi-tenant software as a service.
-
-
-- 2012-08-28 Apache Oozie graduates from Incubator
-
-- 2012-06-06 Oozie Release - version 3.2.0-incubating
-
-- 2012-05-14 New Committer: Harsh Chouraria
-
-- 2012-05-14 New Committer: Virag Kothari
-
-- 2012-03-01 Oozie Release - version 3.1.3-incubating
-
-- 2011-07-11 Project enters incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/oozie/](http://incubator.apache.org/oozie/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/OOZIE/Index](https://cwiki.apache.org/confluence/display/OOZIE/Index)  |
-| Mailing list | dev |  `oozie-dev`  `@`  `incubator.apache.org`  |
-| . | users |  `oozie-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `oozie-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/OOZIE |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/oozie/](https://svn.apache.org/repos/asf/incubator/oozie/)  |
-| Mentors | gates | Alan Gates |
-| . | cdouglas | Chris Douglas |
-| . | ddas | Devaraj Das |
-| Committers | . | Mohammad K Islam |
-| . |  | Angelo Huang |
-| . |  | Mayank Bansal |
-| . |  | Andreas Neumann |
-| . |  | Alejandro Abdelnur |
-| . |  | Chao Wang |
-| . |  | Virag Kothari |
-| . |  | Harsh Chouraria |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-07-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| Not Applicable | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| Not Applicable | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| Not Applicable | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-08-19 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-07-12 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-07-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-08-19 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-10-05 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-07-07 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-10-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-10-05 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-09-08 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-08-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-02-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-02-22 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-06-06 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-09-08 | Check that all active committers have submitted a contributors agreement. |
-| 2011-09-08 | Add all active committers in the STATUS file. |
-| 2011-07-12 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - YES
-
-- Are project decisions being made in public by the committers? - YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? - YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? - YES
diff --git a/content/openaz.md b/content/openaz.md
deleted file mode 100644
index 9450106..0000000
--- a/content/openaz.md
+++ /dev/null
@@ -1,151 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The OpenAZ project retired on 2016-08-26</span>
-
-
-Tools and libraries for developing Attribute-based Access Control (ABAC) Systems in a variety of languages.
-
-
-
-- 2015-01-20 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://openaz.incubator.apache.org](http://openaz.incubator.apache.org)  |
-| . | wiki |  |
-| Mailing list | dev |  `dev`  `@`  `openaz.incubator.apache.org`  |
-| . | users |  `users`  `@`  `openaz.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `openaz.incubator.apache.org`  |
-| . | private |  `private`  `@`  `openaz.incubator.apache.org`  |
-| Bug tracking | . |  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-openaz.git](https://gitbox.apache.org/repos/asf?p=incubator-openaz.git)  |
-| Mentors | elecharny | Emmanuel Lecharny |
-| . | coheigea | Colm O Heigeartaigh |
-| . | hadrian | Hadrian Zbarcea |
-| Committers |  |  |
-
-
-- .
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-|  | Ask infrastructure to create source repository modules and grant the committers karma. |
-|  | Ask infrastructure to set up and archive mailing lists. |
-|  | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-|  | Ask infrastructure to set up wiki (Confluence, Moin). |
-|  | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-|  | Subscribe all Mentors on the pmc and general lists. |
-|  | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-|  | Tell project to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-|  | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-|  | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-|  | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-|  | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-|  | Check that all active committers have submitted a contributors agreement. |
-|  | Add all active committers in the STATUS file. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/openejb.md b/content/openejb.md
deleted file mode 100644
index e8acf58..0000000
--- a/content/openejb.md
+++ /dev/null
@@ -1,168 +0,0 @@
-Title: OpenEJB Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The OpenEJB project graduated on 2007-05-16</span>
-
-
-OpenEJB is an open source, modular, configurable, and extendable EJB Container System and EJB Server.
-
-
-
-- none yet
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-----------------|-----------------|----------------------|
-| Website | www |  [http://incubator.apache.org/openejb/](http://incubator.apache.org/openejb/)  |
-| . | wiki |  [http://cwiki.apache.org/OPENEJB/](http://cwiki.apache.org/OPENEJB/)  |
-| Mailing list | dev | openejb-dev@incubator.apache.org |
-| . | user | openejb-user@incubator.apache.org |
-| . | commits | openejb-commits@incubator.apache.org |
-| Bug tracking | JIRA | http://issues.apache.org/jira/browse/OPENEJB |
-| Source code | SVN | incubator-openejb |
-| Mentors | brett | Brett Porter |
-| . | jvanzyl | Jason van Zyl |
-| . | hyandell | Henri Yandell |
-| Committers | dblevins | David Blevins |
-| . | gdamour | Gianny Damour |
-| . | hogstrom | Matt Hogstrom |
-| . | jgenender | Jeff Genender |
-| . | jwhitlock | Jeremy Whitlock |
-| . | jlaskowski | Jacek Laskowski |
-| . | dain | Dain Sundstrom |
-| . | dsh | Daniel S. Haischt |
-| . | djencks | David Jencks |
-| . | kevan | Kevan Miller |
-| . | adc | Alan Cabrera |
-| . | ammulder | Aaron Mulder |
-| . | lajos | Lajos Moczar |
-| . | pmlopes | Paulo M. Lopes |
-| . | rickmcguire | Rick McGuire |
-| . | . | Mohammad Nour ( _in processing_ ) |
-
-
--  [September 2006](http://wiki.apache.org/incubator/September2006) 
-
--  [December 2006](http://wiki.apache.org/incubator/December2006) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|---------------------|---------------------|
-| 2006-07-10 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| skip | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| skip | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2006-07-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|---------------------|---------------------|
-| 2006-07-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-07-11 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-09-14 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-07-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|---------------------|---------------------|
-| 2006-11-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-09-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|---------------------|---------------------|
-| 2006-12-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2006-12-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|---------------------|---------------------|
-| 2006-08-08 | Check that all active committers have submitted a contributors agreement. |
-| 2006-07-16 | Add all active committers in the STATUS file. |
-| 2006-08-08 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|---------------------|---------------------|
-| 2006-09-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-07-11 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-09-24 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-09-27 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/openjpa.md b/content/openjpa.md
deleted file mode 100644
index 61e1788..0000000
--- a/content/openjpa.md
+++ /dev/null
@@ -1,164 +0,0 @@
-Title: Incubation Status : Open JPA
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
- **Apache OpenJPA is now a top-level project.** 
-
-
-The Apache OpenJPA project completed incubation on 2007-05-16. Please go to the main project site:
-
-
- [http://openjpa.apache.org/](http://openjpa.apache.org/) 
-
-
-This page was used to track the project status, incubator-wise. This page is of historical interest only.
-
-
-<span class="graduated">The OpenJPA project graduated on 2007-05-16</span>
-
-
-The OpenJPA Project is an open source implementation of the Java Persistence API.
-
-
-
-- 2007-05-16: OpenJPA graduated from incubation to a Top Level Project
-
-- 2007-04-27: OpenJPA version 0.9.7 is released
-
-- 2006-11-29: OpenJPA version 0.9.6 is released
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| Item | Type | Reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/openjpa](http://incubator.apache.org/openjpa)  |
-| Wiki | wiki |  [http://cwiki.apache.org/openjpa/](http://cwiki.apache.org/openjpa/)  |
-| Mailing list | dev | open-jpa-dev@incubator.apache.org |
-| . | commits | open-jpa-commits@incubator.apache.org |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/OPENJPA](http://issues.apache.org/jira/browse/OPENJPA)  |
-| Proposal | wiki |  [http://wiki.apache.org/incubator/OpenJPAProposal](http://wiki.apache.org/incubator/OpenJPAProposal)  |
-| Source code | SVN | https://svn.apache.org/repos/asf/incubator/openjpa/ |
-| Mentors | geirm | Geir Magnusson Jr. |
-| . | ekoneil | Eddie O'Neil |
-| . | brianm | Brian McAllister |
-| Committer | awhite | Abe White |
-| . | clr | Craig Russell |
-| . | kwsutter | Kevin Sutter |
-| . | mprudhom | Marc Prud'hommeaux |
-| . | pcl | Patrick Linskey |
-| . | ppoddar | Pinaki Poddar |
-| . | skim | Steve Kim |
-
-
-- See the STATUS file at http://svn.apache.org/repos/asf/incubator/openjpa/STATUS
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| Date | Item |
-|-------|-------|
-| 2007-04-30 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
-Note: nameprotect.com no longer offers free trademark searches. Instead, the US Patent Office was searched for JPA and OpenJPA and no conflicts were found. Additionally, OpenJPA was searched using Google and the first 150 of 101,000 results were found to contain references to the Apache project.
-
- |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2005-04-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| Date | Item |
-|-------|-------|
-| 2006-04-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-05-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-05-01 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-11-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| Date | Item |
-|-------|-------|
-| 2006-06-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-07-19 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| Date | Item |
-|-------|-------|
-| 2006-11-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2006-11-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| Date | Item |
-|-------|-------|
-| 2006-05-14 | Check that all active committers have submitted a contributors agreement. |
-| 2006-10-29 | Add all active committers in the STATUS file. |
-| 2006-07-23 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| Date | Item |
-|-------|-------|
-| 2006-05-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-05-02 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-05-02 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-07-19 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/openmeetings.md b/content/openmeetings.md
deleted file mode 100644
index 4491215..0000000
--- a/content/openmeetings.md
+++ /dev/null
@@ -1,188 +0,0 @@
-Title: OpenMeetings Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Openmeetings project graduated on 2013-01-18</span>
-
-
-Openmeetings provides video conferencing, instant messaging, white board, collaborative document editing and other groupware tools using API functions of the Red5 Streaming Server for Remoting and Streaming.
-
-
-
-- 2013-01-18: OpenMeetings graduated from incubation to a Top Level Project
-
-- 2012-07-16 New committer: Stephen Cottham
-
-- 2012-06-17 New committer: Alvaro Bustos Ruiz
-
-- 2012-06-09 New committer: George Kirkham
-
-- 2012-03-06 New committer: Timur Tleukenov
-
-- 2011-12-26 New committer: German Grekhov
-
-- 2011-11-12 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/openmeetings/](http://incubator.apache.org/openmeetings/)  |
-| . | wiki | . |
-| Mailing list | dev |  `openmeetings-dev`  `@`  `incubator.apache.org`  |
-| . | users |  `openmeetings-users`  `@`  `incubator.apache.org`  |
-| . | commits |  `openmeetings-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/OPENMEETINGS](https://issues.apache.org/jira/browse/OPENMEETINGS)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/openmeetings/](https://svn.apache.org/repos/asf/incubator/openmeetings/)  |
-| Mentors | aadamchik | Andrus Adamchik |
-| . | aaf | Alexei Fedotov |
-| . | jim | Jim Jagielski |
-| . | rgardler | Ross Gardler |
-| . | yegor | Yegor Kozlov |
-| Committers | sebawagner | Sebastian Wagner |
-| . | smoeker | Oliver Becherer |
-| . | rchik | Rodion Volkov |
-| . | aaf | Alexei Fedotov |
-| . |  | Evgeny Rovinsky |
-| . | solomax | Maxim Solodovnik |
-| . | sxander | Sascha Xander |
-| . |  | Johnny Strom |
-| . | eschwert | Eugen Schwert |
-| . | ggrekhov | German Grekhov |
-| . | timur | Timur Tleukenov |
-| . | albus | Alvaro Bustos Ruiz |
-| . | gkirkham | George Kirkham |
-| . | megatronic79 | Stephen Cottham |
-| Extra | . | . |
-
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [January 2012](http://wiki.apache.org/incubator/January2012) 
-
--  [February 2012](http://wiki.apache.org/incubator/February2012) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-07-26 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2012-07-26 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-07-26. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-12-02 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-12-02 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-12-02 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-07-26 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-07-26 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-07-26 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-07-26 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-07-26 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-07-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-07-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-07-26 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-07-26 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-07-26. | Check that all active committers have submitted a contributors agreement. |
-| 2012-07-26 | Add all active committers in the STATUS file. |
-| 2012-07-26 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/opennlp.md b/content/opennlp.md
deleted file mode 100644
index 71d0979..0000000
--- a/content/opennlp.md
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Apache OpenNLP Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-The Apache OpenNLP project completed incubation on 2012-02-15. Please go to the main project site:
-
-
- [http://opennlp.apache.org/](http://opennlp.apache.org/) 
-
-
-This page was used to track the project status, incubator-wise. This page is of historical interest only.
-
-
-<span class="graduated">The OpenNLP project graduated on 2012-02-15</span>
-
-
-The OpenNLP is a machine learning based toolkit for the processing of natural language text. It supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, and coreference resolution. These tasks are usually required to build more advanced text processing services. The goal of the OpenNLP project will be to create a mature toolkit for the above mentioned tasks. An additional goal is to provide a large number of pre-built models for a variety of languages, as well as the annotated text resources that those models are derived from.
-
-
-
-- 2010-11-23 Project enters incubation
-
-- 2011-11-29 Apache OpenNLP 1.5.2 Incubating released
-
-- 2011-12-16 We have a new committer: Boris Galitsky
-
-- 2011-12-16 We have a new committer: Aliaksandr Autayeu
-
-- 2011-02-15 We have graduated from the incubator as a Top Level Project
-
-Basic information about the Apache OpenNLP podling follows:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://opennlp.apache.org](http://opennlp.apache.org/)  |
-| . | wiki |  [http://cwiki.apache.org/OPENNLP/](http://cwiki.apache.org/OPENNLP/)  |
-| Mailing list | dev |  `dev`  `@`  `opennlp.apache.org`  |
-| . | users |  `users`  `@`  `opennlp.apache.org`  |
-| . | commits |  `commits`  `@`  `opennlp.apache.org`  |
-| Bug tracking | . |  [http://issues.apache.org/jira/browse/OPENNLP](http://issues.apache.org/jira/browse/OPENNLP)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/opennlp/](http://svn.apache.org/repos/asf/opennlp/)  |
-| Mentors | gsingers | Grant Ingersoll |
-| . | bimargulies | Benson Margulies |
-| . | isabel | Isabel Drost |
-| Committers | . | . |
-| . | gsingers | Grant Ingersoll |
-| . | twgoetz | Thilo Goetz |
-| . | joern | Jörn Kottmann |
-| . | jbaldrid | Jason Baldridge |
-| . | jkosin | James Kosin |
-| . | tsmorton | Thomas Morton |
-| . | colen | William Silva |
-| . | bgalitsky | Boris Galitsky |
-| . | autayeu | Aliaksandr Autayeu |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-12-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| October 2010 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-11 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-11 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-11 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2010-11 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2010-11 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-11 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-11 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-12-2 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-12-2 | Tell Mentors to track progress in the file 'incubator/projects/opennlp.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-03 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-03 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-01-27 | Check that all active committers have submitted a contributors agreement. |
-| 2011-08-10 | Add all active committers in the STATUS file. |
-| 2010-01-various dates | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/openofficeorg.md b/content/openofficeorg.md
deleted file mode 100644
index d297dcd..0000000
--- a/content/openofficeorg.md
+++ /dev/null
@@ -1,392 +0,0 @@
-Title: OpenOffice.org Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise; i.e. this page is for the existing project team and the Apache Incubator PMC to track the meta status of the project. **Most users and contributors will want to see** the [project website](http://incubator.apache.org/openofficeorg/) or [community wiki](https://cwiki.apache.org/OOOUSERS/wiki-home.html) for more information about Apache OpenOffice the product.
-
-
-<span class="graduated">The OpenOffice.org project graduated on 2012-10-17</span>
-
-
-OpenOffice.org is comprised of six personal productivity applications: a word processor (and its web-authoring component), spreadsheet, presentation graphics, drawing, equation editor, and database. OpenOffice.org is released on Windows, Solaris, Linux and Macintosh operation systems, with more communities joining, including a mature FreeBSD port. OpenOffice.org is localized, supporting over 110 languages worldwide.
-
-
-
-- 2012-10-07 We have a new committer: Chen Peng
-
-- 2012-10-02 We have a new committer: Zhu Shan
-
-- 2012-10-02 We have a new committer: Li Feng Wang
-
-- 2012-10-02 We have a new committer: Dong Jun Zong
-
-- 2012-10-02 We have a new committer: Bingbing Ma
-
-- 2012-10-02 We have a new committer: Shen Feng Liu
-
-- 2012-10-02 We have a new committer: Zheng Fan
-
-- 2012-09-23 We have a new committer: Chen Zuojun
-
-- 2012-09-23 We have a new committer: Linyi Li
-
-- 2012-08-23 AOO 3.4.1 released
-
-- 2012-08-08 We have a new committer: Jianyuan Li
-
-- 2012-08-08 We have a new committer: Khoem Sokhem
-
-- 2012-08-07 We have a new committer: Stuart Swales
-
-- 2012-08-07 We have a new committer: Sun Ying
-
-- 2012-08-07 We have a new committer: Lin Yuan
-
-- 2012-08-02 We have a new committer: Michal Hriň
-
-- 2012-07-02 We have a new committer: Liu Zhe
-
-- 2012-07-02 We have a new committer: Kevin Grignon
-
-- 2012-06-10 We have a new committer: Olaf Felka
-
-- 2012-06-10 We have a new committer: Risto Jääskeläinen
-
-- 2012-06-10 We have a new committer: Antón Méixome
-
-- 2012-06-10 We have a new committer: Albino Neto
-
-- 2012-06-10 We have a new committer: Roberto Salomon
-
-- 2012-05-04 We have a new committer: Roberto Galoppini
-
-- 2012-05-02 AOO 3.4 Release approved
-
-- 2012-04-25 IPMC vote for RC1
-
-- 2012-04-21 PPMC vote for RC1
-
-- 2012-04-18 We have a new committer: RGB.ES
-
-- 2012-04-18 We have a new committer: Paolo Pozzan
-
-- 2012-04-18 We have a new committer: Claudio Filho
-
-- 2012-04-18 We have a new committer: Xia Zhao
-
-- 2012-03-11 We have a new committer: Hagar Delest
-
-- 2012-03-03 We have a new committer: Regina Henschel
-
-- 2012-02-08 Windows Buildbot now working
-
-- 2012-02-08 We have a new committer: Yuri Dario
-
-- 2011-11-27 We have a new committer: Andre Fischer
-
-- 2011-11-27 We have a new committer: Cyril Beaussier
-
-- 2011-11-27 We have a new committer: Andrea Pescetti
-
-- 2011-11-25 Linux 64-bit Buildbot now working
-
-- 2011-11-22 We have a new committer: Martin Hollmichel
-
-- 2011-11-01 We have a new committer: Armin Le Grand
-
-- 2011-11-01 We have a new committer: Oliver-Rainer Wittmann
-
-- 2011-11-01 We have a new committer: T.J. Frazier
-
-- 2011-11-01 We have a new committer: Michael Stehmann
-
-- 2011-11-01 We have a new committer: Ariel Constenla-Haile
-
-- 2011-10-30 We have a new committer: AN Hongyun
-
-- 2011-10-26 ooo-marketing mailing list created
-
-- 2011-10-21 We have a new committer: Pavel Janik
-
-- 2011-09-26 We have a new committer: Pedro Giffuni
-
-- 2011-09-09 [Project blog](https://blogs.apache.org/OOo/) created.
-
-- 2011-09-07 Online Developer Education event held for building on Linux.
-
-- 2011-08-30 Bugzilla issue [succesfully migrated](https://issues.apache.org/ooo/) to Apache.
-
-- 2011-08-29 Legacy OpenOffice.org source tree succesfully checked into Apache Subversion repository.
-
-- 2011-08-04 We have a new committer: Terry Ellison
-
-- 2011-07-12 We have a new committer: Kay Schenk
-
-- 2011-06-29 We have a new committer: Jean Hollis Weber
-
-- 2011-06-29 We have a new committer: Xiao Hong Dong
-
-- 2011-06-29 We have a new committer: Joanmarie Diggs
-
-- 2011-06-26 We have a new committer: Frank Peters
-
-- 2011-06-13 Project enters incubation.
-
-Basic information about the Apache OpenOffice podling follows:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/openofficeorg/](http://incubator.apache.org/openofficeorg/)  |
-| Community Wiki | wiki |  [https://cwiki.apache.org/OOOUSERS/wiki-home.html](https://cwiki.apache.org/OOOUSERS/wiki-home.html)  |
-| Project Blog | blog |  [https://blogs.apache.org/OOo](https://blogs.apache.org/OOo)  |
-| Mailing list | users |  `ooo-users`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-users/) ) |
-| Mailing list | marketing |  `ooo-marketing`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-marketing/) ) |
-| Mailing list | announce |  `ooo-announce`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-announce/) ) |
-| Mailing list | dev |  `ooo-dev`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-dev/) ) |
-| Mailing list | qa |  `ooo-qa`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-qa/) ) |
-| Mailing list | commits |  `ooo-commits`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-commits/) ) |
-| Mailing list | issues |  `ooo-issues`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-issues/) ) |
-| Mailing list | notifications |  `ooo-notifications`  `@`  `incubator.apache.org` ( [archive](http://mail-archives.apache.org/mod_mbox/incubator-ooo-notifications/) ) |
-| Bug tracking | Bugzilla |  [https://issues.apache.org/ooo/](https://issues.apache.org/ooo/)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/ooo/](https://svn.apache.org/repos/asf/incubator/ooo/)  |
-| Forums | phpBB |  [http://user.services.openoffice.org/](http://user.services.openoffice.org/)  |
-|  **Mentors**  | jim | Jim Jagielski |
-| . | rubys | Sam Ruby |
-| . | danese | Danese Cooper |
-| . | curcuru | Shane Curcuru |
-| . | noirin | Nóirín Plunkett |
-| . | joes | Joe Schaefer |
-| . | grobmeier | Christian Grobmeier |
-| . | rgardler | Ross Gardler |
-|  **Committers**  | af | Andre Fischer |
-| . | bino28 | Albino Neto |
-| . | alg | Armin Le Grand |
-| . | apulsifer | Allen Pulsifer |
-| . | meixome | Antón Méixome |
-| . | arielch | Ariel Constenla-Haile |
-| . | arist | Andrew Rist |
-| . | hyan | An Hong Yun |
-| . | artietee | Arthur Buijs |
-| . | atjensen | Drew Jensen |
-| . | benbois | Benjamin Bois |
-| . | bidouille | Cyril Beaussier |
-| . | bmcs | Dave Barton |
-| . | chaosun | Chao Sun |
-| . | chengjh | Jian Hong Chen |
-| . | chenjinh | Jin Hua Chen |
-| . | cjopp | Christoph Jopp |
-| . | filhocf | Claudio Filho |
-| . | clippka | Christian Lippka |
-| . | cmarcum | Carl Marcum |
-| . | damjan | Damjan Jovanovic |
-| . | dpharbison | Don Harbison |
-| . | elproferoman | Román Hugo Gelbort |
-| . | erack | Eike Rathke |
-| . | ericb2 | Eric Bachard |
-| . | florent | Florent André |
-| . | fpe | Frank Peters |
-| . | fredao | Manfred Reiter |
-| . | fredjd | Fred Juan Diaz |
-| . | galoppini | Roberto Galoppini |
-| . | grobmeier | Christian Grobmeier |
-| . | gstein | Greg Stein |
-| . | hagar | Hagar Delest |
-| . | hdu | Herbert Dürr |
-| . | heng | Heng Lee |
-| . | homembit | Jomar Silva |
-| . | hrin | Michal Hriň |
-| . | imacat | Yang Shih-Ching |
-| . | ingotian | Ian Lynch |
-| . | ingrid | Ingrid von der Mehden |
-| . | ivo | Ivo Hinkelmann |
-| . | jeanweber | Jean Hollis Weber |
-| . | jim | Jim Jagielski |
-| . | joanied | Joanmarie Diggs |
-| . | jsc | Juergen Schmidt |
-| . | jucasaca | Juan C. Sanz |
-| . | jza | Alexandro Colorado |
-| . | kahrens | Kai Ahrens |
-| . | kentaberg | Kent Åberg |
-| . | kevingrignon | Kevin Grignon |
-| . | khirano | Kazunari Hirano |
-| . | khoemsokhmen | Khoem Sokhem |
-| . | kschenk | Kay Schenk |
-| . | kso | Kai Sommerfeld |
-| . | leiw | Wang Lei |
-| . | lijiany | Jianyuan Li |
-| . | lilyzhao | Xia Zhao |
-| . | liuzhe | Liu Zhe |
-| . | louis | Louis Suarez-Potts |
-| . | lrosen | Lawrence Rosen |
-| . | maho | Maho NAKATA |
-| . | malte | Malte Timmermann |
-| . | marcus | Marcus Lange |
-| . | maveric | Eric Hoch |
-| . | mikeadvo | Michael Stehmann |
-| . | mayongl | Yong Lin Ma |
-| . | mbauer | Mathias Bauer |
-| . | mhollmichel | Martin Hollmichel |
-| . | mechtilde | Mechtilde Stehmann |
-| . | mst | Michael Stahl |
-| . | olaf | Olaf Felka |
-| . | orcmid | Dennis E. Hamilton |
-| . | orw | Oliver-Rainer Wittmann |
-| . | paolopoz | Paolo Pozzan |
-| . | paveljanik | Pavel Janík |
-| . | pfg | Pedro Giffuni |
-| . | pescetti | Andrea Pescetti |
-| . | pj | Peter Junge |
-| . | prhodes | Phillip Rhodes |
-| . | r4zoli | Zoltán Reizinger |
-| . | rbircher | Raphael Bircher |
-| . | rdonkin | Robert Burrell Donkin |
-| . | regina | Regina Henschel |
-| . | rgb-es | RGB.ES |
-| . | ristoi | Risto Jääskeläinen |
-| . | robweir | Rob Weir |
-| . | salomon | Roberto Salomon |
-| . | sb | Stephan Bergmann |
-| . | simonbr | Simon Brouwer |
-| . | sswales | Stuart Swales |
-| . | st | Stefan Taxhet |
-| . | stevelee | Steve Lee |
-| . | sunying | Sun Ying |
-| . | thegurkha | David McKay |
-| . | terrye | Terry Ellison |
-| . | therabi | Andy Brown |
-| . | tj | Thomas J. Frazier |
-| . | wangzcdl | Zhe Wang |
-| . | wave | David Fisher |
-| . | wolfhalton | Wolf Halton |
-| . | xhdong | Xiaohong Dong |
-| . | ydario | Yuri Dario |
-| . | yegor | Yegor Kozlov |
-| . | yo | Graham Lauder |
-| . | yuanlin | Lin Yuan |
-| . | zhangjf | Jian Fang Zhang |
-
-
--  [July 2011](http://wiki.apache.org/incubator/July2011) 
-
--  [August 2011](http://wiki.apache.org/incubator/August2011) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011) 
-
--  [October 2011](http://wiki.apache.org/incubator/October2011) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
--  [June 2012](http://wiki.apache.org/incubator/June2012) 
-
--  [September 2012](http://wiki.apache.org/incubator/September2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-06-13 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-06-13 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-06-29 | Ask infrastructure to create source repository modules and grant the committers karma. (incubator/ooo repository created and team begins work - curcuru) |
-| 2011-06-13 | Ask infrastructure to set up and archive mailing lists. (dev@ and private@ mailing lists in action; note more lists are expected to be added - curcuru) |
-| 2011-08-30 | Ask infrastructure to set up issue tracker (Bugzilla). |
-| 2011-06-19 | Ask infrastructure to set up wiki (Confluence wikis setup: OOODEV and OOUSERS - curcuru) |
-| 2011-12-28 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-06-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. (8 mentors signed up at creation - curcuru) |
-| 2011-06-13 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-12-28 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-06-13 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-10-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-04-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-05-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-05-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-01-18 | Check that all active committers have submitted a contributors agreement. |
-| 2012-01-18 | Add all active committers in the STATUS file. |
-| 201-01-18 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _See the [Community Wiki - Project Planning](https://cwiki.apache.org/confluence/display/OOOUSERS/Project+Planning) page for the best place to see an overview of OOo specific tasks._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/openwebbeans.md b/content/openwebbeans.md
deleted file mode 100644
index 33b6752..0000000
--- a/content/openwebbeans.md
+++ /dev/null
@@ -1,204 +0,0 @@
-Title: OpenWebBeans Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The OpenWebBeans project graduated on 2009-12-17</span>
-
-
-OpenWebBeans is an implementation of the Web Beans specification which is defined as JSR-299.
-
-
-
-- 2009-12-17 - OpenWebBeans has graduated as a TLP
-
-- 2009-11-17 - New committer: Eric Covener
-
-- 2009-11-10 - New committer: Joe Bergmark
-
-- 2009-09-30 - OpenWebBeans-M3 is Released. [Click here](http://www.apache.org/dyn/closer.cgi/incubator/openwebbeans/) 
-
-- 2009-09-14 - New committer: David Blevins
-
-- 2009-07-07 - New committer: James Carman
-
-- 2009-06-09 - OpenWebBeans-M2 is Released. [Click here](http://www.apache.org/dyn/closer.cgi/incubator/openwebbeans/) 
-
-- 2009-02-16 - OpenWebBeans-M1 is Released. [Click here](http://www.apache.org/dyn/closer.cgi/incubator/openwebbeans/) 
-
-- 2009-01-18 - New committer: Mark Struberg
-
-- 2008-12-23 - New committer: Mohammad Nour El-Din
-
-
--  [OpenWebBeans Incubator project website](http://incubator.apache.org/openwebbeans/) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/openwebbeans/](http://incubator.apache.org/openwebbeans/)  |
-| . | wiki | . |
-| Mailing list | dev |  [openwebbeans-dev@incubator.apache.org](mailto:openwebbeans-dev-subscribe@incubator.apache.org)  |
-|  | commits |  [openwebbeans-commits@incubator.apache.org](mailto:openwebbeans-commits-subscribe@incubator.apache.org)  |
-|  | users |  [openwebbeans-users@incubator.apache.org](mailto:openwebbeans-users-subscribe@incubator.apache.org)  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/OWB](http://issues.apache.org/jira/browse/OWB)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/openwebbeans](https://svn.apache.org/repos/asf/incubator/openwebbeans)  |
-| Mentors | kevan | Kevan Miller |
-| . | matzew | Matthias Wessendorf |
-| Committers | gerdogdu | Gurkan Erdogdu |
-|  | struberg | Mark Struberg |
-|  | mnour | Mohammad Nour El-Din |
-|  | . | James Carman |
-|  | . | Conny Lundgren |
-|  | . | Eric Covener |
-|  | . | Joe Bergmark |
-
-
--  [December-2009](http://wiki.apache.org/incubator/December2009) 
-
--  [Sepetember-2009](http://wiki.apache.org/incubator/September2009) 
-
--  [June-2009](http://wiki.apache.org/incubator/June2009) 
-
--  [March-2009](http://wiki.apache.org/incubator/March2009) 
-
--  [January-2009](http://wiki.apache.org/incubator/January2009) 
-
--  [December-2008](http://wiki.apache.org/incubator/December2008) 
-
--  [November-2008](http://wiki.apache.org/incubator/November2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-11-05 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-10-29 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-11-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-11-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-11-30 | Tell Mentors to track progress in the file 'incubator/projects/openwebbeans.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-11-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-11-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-11-30 | Check and make sure that for all code included with the distribution that is not under the Apache license, have the right to combine with Apache-licensed code and redistribute. |
-| 2008-11-30 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-11-30 | Check that all active committers have submitted a contributors agreement. |
-| 2008-11-30 | Add all active committers in the STATUS file. |
-| 2008-11-30 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-11-05 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-11-05 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-11-05 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-11-30 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-YES
-
-
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-YES
-
-
-
-- Are project decisions being made in public by the committers?
-YES
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-YES
-
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-YES
-
-
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-N/A
-
-
-
-- If graduating to a new PMC, has the board voted to accept it?
-YES
-
-
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-YES
-
-
diff --git a/content/openwhisk-composer-python.md b/content/openwhisk-composer-python.md
new file mode 100644
index 0000000..3bf6a01
--- /dev/null
+++ b/content/openwhisk-composer-python.md
@@ -0,0 +1,75 @@
+Title: OpenWhisk Composer Python Codebase Intellectual Property (IP) Clearance Status
+
+
+Composer is a new programming model for composing cloud functions built on Apache OpenWhisk. The donated codebase consists of 2,300 lines of Python and 1,400 lines of READMEs and other documentation/text.
+
+
+The donated code base was developed by IBM and was previously available at https://github.com/ibm-functions/composer-python under the Apache 2 license. The donated code base has 2 contributors: Nick Mitchell and Lionel Villard. Both of them are IBM employees who have Apache CLAs already on file as noted below.
+
+
+
+- Which PMC will be responsible for the code: Apache OpenWhisk (Incubator)
+
+
+- Into which existing project/module: a new github repo: apache/incubator-openwhisk-composer-python
+
+
+- Officer or member managing donation: Bertrand Delacretaz
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2018-11-26 | https://github.com/ibm-functions/composer-python |
+|------------|--------------------------------------------------|
+| 2018-11-26 | Trademark and google search found no use of name as software product. |
+
+MD5 or SHA1 sum for donated software: 25c7d1826672d9c704d68c94bc73d3c1 composer-python-master.zip (Microbrew md5sum/sha1sum/ripemd160sum 0.9.5 (Wed Dec 6 12:48:56 EST 2006)
+
+
+Git commit SHA for donated software: 98f2e617105888c195734cfbf7ebaa0bb7f8df1f
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-11-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-11-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright.
+Still need to update Copyright from IBM to ASF in two files: ./src/openwhisk/openwhisk.py and ./src/conductor/conductor.py
+
+ |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: IBM
+
+
+
+- <li>IBM - as explained above, a Software Grant is not required, all contributors have an iCLA on file.</li><li>Nick Mitchell (listed in http://people.apache.org/unlistedclas.html)</li><li>Lionel Villard (Apache ID: villard)</li>
+
+| date | item |
+|------|------|
+| 2018-11-26 | Check that all active committers have a signed CLA on record. |
+| 2018-11-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-11-26 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-11-26 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- OpenWhisk podling acceptance consensus at [https://lists.apache.org/thread.html/75c6f47a92d16a7387be08527bdbd5747dcb30509b98823b3f15f4d0@%3Cdev.openwhisk.apache.org%3E](https://lists.apache.org/thread.html/75c6f47a92d16a7387be08527bdbd5747dcb30509b98823b3f15f4d0@%3Cdev.openwhisk.apache.org%3E) 
+
+- Incubator PMC vote at [https://lists.apache.org/thread.html/97d4e8cfae863859fdc2e37c2288ba47f122bfb7c02a1994c8655bc4@%3Cgeneral.incubator.apache.org%3E](https://lists.apache.org/thread.html/97d4e8cfae863859fdc2e37c2288ba47f122bfb7c02a1994c8655bc4@%3Cgeneral.incubator.apache.org%3E) 
+
+- Incubator PMC vote result at [https://lists.apache.org/thread.html/fd6021adf7c9e47687b4841ae305822a2e6e5ab37fb8f0e05b32479f@%3Cgeneral.incubator.apache.org%3E](https://lists.apache.org/thread.html/fd6021adf7c9e47687b4841ae305822a2e6e5ab37fb8f0e05b32479f@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/openwhisk-composer.md b/content/openwhisk-composer.md
new file mode 100644
index 0000000..1ec2bff
--- /dev/null
+++ b/content/openwhisk-composer.md
@@ -0,0 +1,83 @@
+Title: OpenWhisk Composer Intellectual Property (IP) Clearance Status
+
+
+Composer is a new programming model for composing cloud functions built on Apache OpenWhisk. The donated codebase consists of 2,000 lines of JavaScript and 1,100 lines of READMEs and other documentation/text.
+
+
+The donated code base was developed by IBM and was previously available at https://github.com/ibm-functions/composer under the Apache 2 license. The donated code base has 6 contributors. Five of them are IBM employees who have Apache CLAs already on file (Olivier Tardieu, Rodric Rabbah, Dave Grove, Kerry Chang, Nick Mitchell). The 6th contributor, Travis Allen Salas Cox does not have an Apache CLA on file, but his sole contribution was a trivial fix of a typo in the docs/README.md file (https://github.com/ibm-functions/composer/commit/5ea5ac009f7ca6d4b9fd313dcfd507b3c6c36083).
+
+
+
+- Which PMC will be responsible for the code: Apache OpenWhisk (Incubator)
+
+
+- Into which existing project/module: a new github repo: apache/incubator-openwhisk-composer
+
+
+- Officer or member managing donation: Bertrand Delacretaz
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-10-02 | https://github.com/ibm-functions/composer. |
+| 2018-10-02 | Trademark and google search found no use of name as software product. |
+
+MD5 or SHA1 sum for donated software: b93c577c757acba7c9b444b880026be7 (md5sum/sha1sum/ripemd160sum 0.9.5 (Wed Dec 6 12:48:56 EST 2006)).
+
+
+Git commit SHA for donated software: 8403e587ed73097b4794096e7afa7b166012f912
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-10-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-10-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: IBM
+
+
+
+- IBM - as explained above, a Software Grant is not required, all contributors have an iCLA on file.
+
+- Olivier Tardieu (listed in http://people.apache.org/unlistedclas.html)
+
+- Rodric Rabbah (Apache ID: rabbah)
+
+- Dave Grove (Apache ID: dgrove)
+
+- Kerry Chang (listed in http://people.apache.org/unlistedclas.html
+
+- Nick Mitchell (listed in http://people.apache.org/unlistedclas.html)
+
+| date | item |
+|------|------|
+| 2018-10-01 | Check that all active committers have a signed CLA on record. |
+| 2018-10-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-10-02 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-10-02 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- OpenWhisk podling acceptance consensus at [https://lists.apache.org/thread.html/27a7f287b776be8624882ef73178281c992014feea0b81156b29dbf8@%3Cdev.openwhisk.apache.org%3E](          https://lists.apache.org/thread.html/27a7f287b776be8624882ef73178281c992014feea0b81156b29dbf8@%3Cdev.openwhisk.apache.org%3E) 
+
+- Incubator PMC vote at [https://lists.apache.org/thread.html/4694c0831e47c6c2b17e3d1f3db80a209588532b8d2f25698186aad4@%3Cgeneral.incubator.apache.org%3E](https://lists.apache.org/thread.html/4694c0831e47c6c2b17e3d1f3db80a209588532b8d2f25698186aad4@%3Cgeneral.incubator.apache.org%3E) 
+
+- Incubator PMC vote result at [https://lists.apache.org/thread.html/9cf0341ee766a5da5afac6d09d1c9ca560d0b9ea37c68284048ab53c@%3Cgeneral.incubator.apache.org%3E](https://lists.apache.org/thread.html/9cf0341ee766a5da5afac6d09d1c9ca560d0b9ea37c68284048ab53c@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/openwhisk-intellij-plugin.md b/content/openwhisk-intellij-plugin.md
new file mode 100644
index 0000000..0403a09
--- /dev/null
+++ b/content/openwhisk-intellij-plugin.md
@@ -0,0 +1,73 @@
+Title: OpenWhisk Intellij Plugin Codebase Intellectual Property (IP) Clearance Status
+
+
+Intellij plugin is an IDE plugin for Intellij to develop and deploy Apache OpenWhisk actions based on wskdeploy, a command-line tool. The codebase consists of 8,800 lines of Java, and 1,500 lines of JSON files and other documentation/text.
+
+
+The donated code base was developed by NAVER Corporation. and was previously available at https://github.com/naver/openwhisk-intellij-plugin under the Apache 2 license. The donated code base has 2 contributors, both of which are NAVER employees and have an Apache ICLA on file (Dominic Kim, Geonhui Kim).
+
+
+
+- Which PMC will be responsible for the code: Apache OpenWhisk
+
+
+- Into which existing project/module: a new github repo: apache/openwhisk-intellij-plugin
+
+
+- Officer or member managing donation: Dave Grove (VP Apache OpenWhisk)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-11-05 | https://github.com/naver/openwhisk-intellij-plugin/archive/1.1.4.zip |
+
+SHA1 sum for donated software: _6133fc0d9682564255852c0299ef5a28ec94d2c6_ .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-11-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
+Software License Grant filed with ASF Secretary on 2020-11-20 and acknowledged on 2020-11-20.
+
+ |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _OpenWhisk Intellij Plugin - Development and deployment tool for Apache OpenWhisk_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: NAVER Corporation.
+
+
+| date | item |
+|------|------|
+| 2020-11-20 | Check that all active committers have a signed CLA on record. |
+| 2020-11-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-11-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.
+ _Not applicable; all code included in the distribution is Apache-licensed._ 
+
+ |
+| 2020-11-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.
+There is only one non-development dependency that is based on Apache.
+
+ |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- OpenWhisk PMC vote at [https://lists.apache.org/thread.html/r3358f5e7c38ba143193f918e0c260280f02a81b6194441d91b9993b4%40%3Cprivate.openwhisk.apache.org%3E](https://lists.apache.org/thread.html/r3358f5e7c38ba143193f918e0c260280f02a81b6194441d91b9993b4%40%3Cprivate.openwhisk.apache.org%3E) 
+
+- Incubator IP Clearance vote at [http://mail-archives.apache.org/mod_mbox/incubator-general/202101.mbox/%3CCAFEpjOo967kR7Ukip8ajLL84AVipSmg_HckGceW6KuFsGPp3hA%40mail.gmail.com%3E](http://mail-archives.apache.org/mod_mbox/incubator-general/202101.mbox/%3CCAFEpjOo967kR7Ukip8ajLL84AVipSmg_HckGceW6KuFsGPp3hA%40mail.gmail.com%3E) 
diff --git a/content/openwhisk-vscode-extension.md b/content/openwhisk-vscode-extension.md
new file mode 100644
index 0000000..985871f
--- /dev/null
+++ b/content/openwhisk-vscode-extension.md
@@ -0,0 +1,73 @@
+Title: OpenWhisk VSCode Extension Codebase Intellectual Property (IP) Clearance Status
+
+
+VSCode extension is an IDE extension for VSCode to develop and deploy Apache OpenWhisk actions based on wskdeploy, a command-line tool. The codebase consists of 2,500 lines of Typescript, and 9,800 lines of JSON files, static web resources and other documentation/text.
+
+
+The donated code base was developed by NAVER Corporation. and was previously available at https://github.com/naver/openwhisk-vscode-extension under the Apache 2 license. The donated code base has 2 contributors, both of which are NAVER employees and have an Apache ICLA on file (Dominic Kim, Seonghyun Oh).
+
+
+
+- Which PMC will be responsible for the code: Apache OpenWhisk
+
+
+- Into which existing project/module: a new github repo: apache/openwhisk-vscode-extension
+
+
+- Officer or member managing donation: Dave Grove (VP Apache OpenWhisk)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-11-05 | https://github.com/naver/openwhisk-vscode-extension/archive/1.1.0.zip |
+
+SHA1 sum for donated software: _cfd6b90cedb04dc31dece28b1d8b2045c5bf8a80_ .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-11-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
+Software License Grant filed with ASF Secretary on 2020-11-20 and acknowledged on 2020-11-20.
+
+ |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _OpenWhisk VSCode Extension - Development and deployment tool for Apache OpenWhisk_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: NAVER Corporation.
+
+
+| date | item |
+|------|------|
+| 2020-11-20 | Check that all active committers have a signed CLA on record. |
+| 2020-11-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-11-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.
+ _Portions of this product include SVG files developed by the XEIcon project. The XEIcon project is based on SIL OFL 1.1 that is a category B license and clearly documented in the README.md file at https://github.com/naver/openwhisk-vscode-extension/tree/1.1.0#third-party-product-acknowledgement. Products with category B license can be included in binary form within an Apache product if the inclusion is appropriately labeled._ 
+
+ |
+| 2020-11-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.
+Did a license analysis for all npm dependencies. All packages have "Category A" licenses. In detail, the dependent packages licenses are 5 with MIT, 1 with ISC, 2 with Apache-2.0.
+
+ |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- OpenWhisk PMC vote at [https://lists.apache.org/thread.html/r3358f5e7c38ba143193f918e0c260280f02a81b6194441d91b9993b4%40%3Cprivate.openwhisk.apache.org%3E](https://lists.apache.org/thread.html/r3358f5e7c38ba143193f918e0c260280f02a81b6194441d91b9993b4%40%3Cprivate.openwhisk.apache.org%3E) 
+
+- Incubator IP Clearance vote at [TBD](TBD) 
diff --git a/content/openwhisk-wskdebug.md b/content/openwhisk-wskdebug.md
new file mode 100644
index 0000000..ae773ef
--- /dev/null
+++ b/content/openwhisk-wskdebug.md
@@ -0,0 +1,73 @@
+Title: OpenWhisk wskdebug Codebase Intellectual Property (IP) Clearance Status
+
+
+wskdebug is a command line tool to develop and debug Apache OpenWhisk actions. The codebase consists of 4,200 lines of Javascript, and 8,300 lines of examples and other documentation/text.
+
+
+The donated code base was developed by Adobe Inc. and was previously available at https://github.com/adobe/wskdebug under the Apache 2 license. The donated code base has 2 contributors, both of which are Adobe employees and have an Apache ICLA on file (Alexander Klimetschek, Moritz Raho).
+
+
+
+- Which PMC will be responsible for the code: Apache OpenWhisk
+
+
+- Into which existing project/module: a new github repo: apache/openwhisk-wskdebug
+
+
+- Officer or member managing donation: Dave Grove (VP Apache OpenWhisk)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-02-18 | https://github.com/adobe/wskdebug/archive/v1.1.2.zip |
+
+SHA1 sum for donated software: _d83281f6abcebbf2e3dd5791e673159474b1c84d_ .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-02-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
+Software License Grant filed with ASF Secretary on 2020-02-18 and acknowledged on 2020-02-19.
+
+ |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _wskdebug - Debugging and development tool for Apache OpenWhisk_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Adobe Inc.
+
+
+| date | item |
+|------|------|
+| 2020-02-18 | Check that all active committers have a signed CLA on record. |
+| 2020-02-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-02-18 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.
+ _Not applicable; all code included in the distribution is Apache-licensed._ 
+
+ |
+| 2020-02-18 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.
+Did a license analysis for all npm dependencies. All packages have "Category A" licenses. In detail, the dependent packages licenses are 102 with MIT, 20 with ISC, 8 with Apache-2.0, 4 with BSD-3-Clause, 3 with BSD-2-Clause, and 1 with Unlicense
+
+ |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- OpenWhisk PMC vote at [https://lists.apache.org/thread.html/r0a390f6a82b165a8b107c1969ee2f72227b07256c49b274147479ec4%40%3Cdev.openwhisk.apache.org%3E](https://lists.apache.org/thread.html/r0a390f6a82b165a8b107c1969ee2f72227b07256c49b274147479ec4%40%3Cdev.openwhisk.apache.org%3E) 
+
+- Incubator IP Clearance vote at [https://lists.apache.org/thread.html/r1d48c81f25eaace1f08c8a3dae97ab161098444ed3569281ac547f16%40%3Cgeneral.incubator.apache.org%3E](https://lists.apache.org/thread.html/r1d48c81f25eaace1f08c8a3dae97ab161098444ed3569281ac547f16%40%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/openwhisk.md b/content/openwhisk.md
deleted file mode 100644
index 48958a4..0000000
--- a/content/openwhisk.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Title: OpenWhisk Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The OpenWhisk project graduated on 2019-07-17</span>
-
-
-Apache OpenWhisk is a serverless event-based programming platform.
-
-
-
-- 2016-11-23 Project enters incubation.
-
-- 2016-12-06 dev and private lists created; commits lists requested.
-
-- 2017-01-07 Confluence Wiki created
-
-- 2017-05-05 Moved 24/26 OpenWhisk project and ecosystem repositories from openwhisk to Apache organization within GitHub.
-
-- 2017-05-11 Requested Infra. to move "openwhisk" (core) repo. to Apache.
-
-- 2017-05-12 "Core" openwhisk (last source code) repo. moved under Apache GitHub.
-
-
-- link to the main website:
-
-
--  [https://openwhisk.org](http://openwhisk.org) 
-
-
-- link to the page(s) that tell how to participate (Website, Mailing lists, Bug tracking, Source code):
-
-
--  [https://cwiki.apache.org/confluence/display/openwhisk/OpenWhisk+Project+Wiki](https://cwiki.apache.org/confluence/display/openwhisk/OpenWhisk+Project+Wiki) 
-
-
-- link to the project status file (Committers, non-incubation action items, project resources, etc.)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-<tbody>| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://openwhisk.apache.org](https://openwhisk.apache.org)  |
-|  | Apache |  [http://openwhisk.incubator.apache.org/](http://openwhisk.incubator.apache.org/)  |
-|  | wiki |  [https://cwiki.apache.org/confluence/display/openwhisk/](https://cwiki.apache.org/confluence/display/openwhisk)  |
-| Mailing list | dev |  `dev`  `@`  `openwhisk.incubator.apache.org`  |
-|  | commits |  `commits`  `@`  `openwhisk.incubator.apache.org`  |
-| Issue (bug) tracking | GitHub Issues |  [https://github.com/apache/incubator-openwhisk/issues (core)](https://github.com/apache/incubator-openwhisk/issues) GitHub issues for other OpenWhisk repos. can be found from project listing: [](https://github.com/apache?q=openwhisk) https://github.com/apache?q=openwhisk |
-|  | JIRA | N/A, using GitHub issues (per-repo.) |
-| Source code | GitHub (Apache) |  [https://github.com/apache?q=openwhisk](https://github.com/apache?q=openwhisk) (Filtered link to all code repos. under Apache org.) |
-|  | GitHub (OpenWhisk) |  [https://github.com/openwhisk](https://github.com/openwhisk) (Website repo. only) In-progress: Jenkins (Jekyll) build, gitpubsub. |
-| Mentors |  | See [https://whimsy.apache.org/roster/ppmc/openwhisk](https://whimsy.apache.org/roster/ppmc/openwhisk)  |
-| Sub-project Listing |  |  [https://cwiki.apache.org/confluence/display/openwhisk/Subproject+listing](https://cwiki.apache.org/confluence/display/OPENWHISK/Subproject+listing)  |
-| PPMC list (Whimsy) |  |  [https://whimsy.apache.org/roster/ppmc/openwhisk](https://whimsy.apache.org/roster/ppmc/openwhisk)  |
-</tbody>
-The list of committers, PPMC members and mentors is found at [https://whimsy.apache.org/roster/ppmc/openwhisk](https://whimsy.apache.org/roster/ppmc/openwhisk) 
-
-
-Incubation status reports are found at [https://whimsy.apache.org/board/minutes/Incubator](https://whimsy.apache.org/board/minutes/Incubator) 
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-<tbody>| date | item |
-|------|------|
-| N/A | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-</tbody>
-## Infrastructure {#Infrastructure}
-
-<tbody>| date | item |
-|------|------|
-| 2016-12-06 | Ask infrastructure to set up and archive mailing lists. |
-| 2017-04-26 | Ask infrastructure to create (transfer) source repository modules from openwhisk to Apache org. under GitHub. |
-| N/A, Issue tracking established as part of GitHub. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2017-01-07 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2017-05-12 | Migrate the project to our infrastructure. |
-</tbody>
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-<tbody>| date | item |
-|------|------|
-| 2017-02-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-01-16 | Give all Mentors access to the incubator GitHub repository. (to be done by the Incubator PPMC chair) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-</tbody>
-## Copyright {#Copyright}
-
-<tbody>| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-</tbody>
-## Verify distribution rights {#Verify+distribution+rights}
-
-<tbody>| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-</tbody>
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-<tbody>| date | item |
-|------|------|
-| 2017-02-03 | Check that all active committers have submitted a contributors agreement. |
-| 2017-02-06 | Add all active committers in the relevant section above. |
-| 2017-02-06 | Ask root for the creation of committers' accounts in LDAP. |
-</tbody>
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/openxml4j.md b/content/openxml4j.md
new file mode 100644
index 0000000..d49fc60
--- /dev/null
+++ b/content/openxml4j.md
@@ -0,0 +1,71 @@
+Title: OpenXML4J Codebase Intellectual Property (IP) Clearance Status
+
+
+OpenXML4J is a library for dealing with the Office Open XML (OOXML) file format. It handles the metadata and zip file requirements, but not the higher level document formats. POI has used and worked with this library for some time.
+
+
+The donated codebase snapshot is available at<link href="http://people.apache.org/~nick/OpenXML4J-Grant/">http://people.apache.org/~nick/OpenXML4J-Grant/</link>
+
+
+
+- Which PMC will be responsible for the code: Apache POI PMC
+
+
+- Into which existing project/module: Apache POI
+
+
+- Officer or member managing donation: Nick Burch
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| NA | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 sum of donated software: df288425238131967e4d82319c8b0b7f
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-11-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-11-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _OpenXML4J / Wygwam_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Wygwam_  _Julien Chable_ 
+
+| date | item |
+|------|------|
+| 2008-11-11 | Check that all active committers have a signed CLA on record. |
+| 2008-11-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-11-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-11-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
+
+- The clearance thread is<link href="http://www.nabble.com/-IP-CLEARANCE--OpenXML4J-tc20456964.html">http://www.nabble.com/-IP-CLEARANCE--OpenXML4J-tc20456964.html</link>
+
+- The issue tracking the code import is<link href="https://issues.apache.org/bugzilla/show_bug.cgi?id=46242">https://issues.apache.org/bugzilla/show_bug.cgi?id=46242</link>
+
+- The code can be downloaded from<link href="http://people.apache.org/~nick/OpenXML4J-Grant/openxml4j.tar.gz">http://people.apache.org/~nick/OpenXML4J-Grant/openxml4j.tar.gz</link>
diff --git a/content/orc-cpp-clearance.md b/content/orc-cpp-clearance.md
new file mode 100644
index 0000000..62f2512
--- /dev/null
+++ b/content/orc-cpp-clearance.md
@@ -0,0 +1,78 @@
+Title: ORC Codebase Intellectual Property (IP) Clearance Status
+
+
+A C++ implementation of an ORC reader.
+
+
+
+- Which PMC will be responsible for the code: ORC
+
+
+- Into which existing project/module: ORC/c++
+
+
+- Officer or member managing donation: Owen O'Malley
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-06-22 | The ORC C++ name isn't used by any other projects |
+
+MD5 or SHA1 sum for donated software: 36a4bc6f796a7cbefbe0cb2240845a55be0a2043 (shasum 5.71)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-06-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Aliaksei Sandryhaila
+
+- Bob Hansen
+
+- Haohui Mai
+
+- Jing Xu
+
+- Kim Scheibel
+
+- Owen O'Malley
+
+- Stephen Walkauskas
+
+- Steven E. Harris
+
+- Thanh Do
+
+| date | item |
+|------|------|
+| 2015-06-22 | Check that all active committers have a signed CLA on record. |
+| 2015-06-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-06-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-06-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote accepting the move: [http://s.apache.org/01y](http://s.apache.org/01y) .
diff --git a/content/pagespeed.md b/content/pagespeed.md
deleted file mode 100644
index 7d0be5a..0000000
--- a/content/pagespeed.md
+++ /dev/null
@@ -1,134 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-PageSpeed represents a series of open source technologies to help make the web faster by rewriting web pages to reduce latency and bandwidth.
-
-
-
-- 2017-09-30 Project [enters incubation](https://s.apache.org/eGgS) .
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://pagespeed.incubator.apache.org/](http://pagespeed.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `pagespeed.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `pagespeed.incubator.apache.org`  |
-| Bug tracking | . | TBD |
-| Source code | SVN | TBD |
-| Roster | Whimsy |  [PageSpeed Roster](https://whimsy.apache.org/roster/ppmc/pagespeed)  |
-
-
--  [PageSpeed Board Reports](https://whimsy.apache.org/board/minutes/pagespeed.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/parquet.md b/content/parquet.md
deleted file mode 100644
index 004d4a2..0000000
--- a/content/parquet.md
+++ /dev/null
@@ -1,186 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Parquet project graduated on 2015-04-22</span>
-
-
-Apache Parquet is a columnar storage format for Hadoop.
-
-
-
-- 2014-05-20 Project enters incubation.
-
-- 2014-11-14 Release: parquet-format-2.2.0
-
-- 2015-01-15 New Committer: Alex Levenson
-
-- 2015-01-15 New Committer: Daniel Weeks
-
-- 2015-02-16 Release: apache-parquet-format-2.3.0-incubating
-
-- 2015-04-07 RC: apache-parquet-mr-1.6.0-incubating-rc2
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://parquet.incubator.apache.org](http://parquet.incubator.apache.org)  |
-| . | wiki | N/A |
-| Mailing list | dev |  `dev`  `@`  `parquet.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `parquet.incubator.apache.org`  |
-| . | private |  `private`  `@`  `parquet.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/PARQUET](https://issues.apache.org/jira/browse/PARQUET)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-parquet-format.git](https://gitbox.apache.org/repos/asf?p=incubator-parquet-format.git)  |
-|  |  |  [https://gitbox.apache.org/repos/asf?p=incubator-parquet-mr.git](https://gitbox.apache.org/repos/asf?p=incubator-parquet-mr.git)  |
-| Mentors | . | . |
-| Mentors | jfarrell | Jake Farrell |
-| . | todd | Todd Lipcon |
-| . | mattmann | Chris Mattmann |
-| . | rvs | Roman Shaposhnik |
-| . | tomwhite | Tom White |
-| Committers | . | . |
-| . | aniket486 | Aniket Mokashi |
-| . | brock | Brock Noland |
-| . | caniszczyk | Chris Aniszczyk |
-| . | dvryaboy | Dmitriy Ryaboy |
-| . | jfarrell | Jake Farrell |
-| . | jcoveney | Jonathan Coveney |
-| . | julien | Julien Le Dem |
-| . | lukas | Lukas Nalezenec |
-| . | blue | Ryan Blue |
-| . | tomwhite | Tom White |
-| . | wesleypeck | Wesley Graham Peck |
-| . | nong | Nong Li |
-| . | tianshuo | Tianshuo Deng |
-| . | marcel | Marcel Kornacker |
-| . | mlacour | Mickael Lacour |
-| . | rpecqueur | Remy Pecqueur |
-| . | alexlevenson | Alex Levenson |
-| . | dweeks | Daniel Weeks |
-| Extra | . | . |
-
-
--  [June 2014](https://wiki.apache.org/incubator/June2014) 
-
--  [October 2014](http://wiki.apache.org/incubator/October2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-05-22 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2014-05-22 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-05-22 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-05-22 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-05-22 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-06-02 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-05-31 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-05-22 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-05-22 | Tell Mentors to track progress in the file 'incubator/projects/parquet.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-05-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-02-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-05-22 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-05-22 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-05-31 | Check that all active committers have submitted a contributors agreement. |
-| 2014-05-31 | Add all active committers in the STATUS file. |
-| 2014-05-31 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pdfbox-jbig2.md b/content/pdfbox-jbig2.md
new file mode 100644
index 0000000..2a314db
--- /dev/null
+++ b/content/pdfbox-jbig2.md
@@ -0,0 +1,93 @@
+Title: JBig2 ImageIO Plugin Codebase Intellectual Property (IP) Clearance Status
+
+
+The Java ImageIO plugin for JBIG2 enables access to images encoded using the JBIG2 image compression standard.
+
+
+The contributed code is attached to issue [PDFBOX-3906](https://issues.apache.org/jira/browse/PDFBOX-3906) with the following description:
+
+ _Levigo solutions GmbH donates the Java ImageIO-Plugin for the JBIG2 to the PDFBox project. The Plugin is currently hosted at https://github.com/levigo/jbig2-imageio and has already been prepared for integration. The steps completed so far are:
+​
+- IP vetting for contributions by non-levigo developers
+
+- Merging/application of all pending pull requests
+
+- Update of the project structure in anticipation of the new home:
+
+
+- package names
+
+- license headers
+
+- license files
+
+- README.md
+
+- release notes
+
+- Maven project information
+_ 
+
+- Which PMC will be responsible for the code: Apache PDFBox
+
+
+- Into which existing project/module: jbig2
+
+
+- Officer or member managing donation: Andreas Lehmkühler
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| NA | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: 0e07111b4bf7f5a51bf0fdd903f02f082ea3bf65 (sha1sum (GNU coreutils) 8.26).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-08-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-09-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: levigo Java ImageIO Plugin for JBIG2 (levigo-holding-imageio-plugin.pdf)
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- levigo solutions GmbH (CCLA levigo-solutions.pdf)
+
+- Jörg Henne (ICLA joerg-henne.pdf)
+
+- Matthäus Mayer (ICAL matthaeus-mayer.pdf)
+
+- Sebastian Holder (ICLA sebastian-holder.pdf)
+
+- Carolin Köhler (ICLA carolin-koehler.pdf)
+
+| date | item |
+|------|------|
+| 2017-09-13 | Check that all active committers have a signed CLA on record. |
+| 2017-08-19 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-09-24 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-09-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [[RESULT][VOTE] Accept the JBig2 ImageIO Plugin contribution (PDFBOX-3906)](http://mail-archives.apache.org/mod_mbox/pdfbox-dev/201709.mbox/%3Cd99b6245-c11c-349f-c239-a4eca68fff2e%40lehmi.de%3E) 
diff --git a/content/pdfbox-padaf.md b/content/pdfbox-padaf.md
new file mode 100644
index 0000000..9608ad3
--- /dev/null
+++ b/content/pdfbox-padaf.md
@@ -0,0 +1,77 @@
+Title: PaDaF Preflight Codebase Intellectual Property (IP) Clearance Status
+
+
+PaDaF provides tools to make a PDF/A preflight on a PDF document. It is highly based on Apache PDFBox. Conformance to the ISO 19005 (PDF/A) norm is checked.
+
+
+The contributed code is attached to issue [PDFBOX-1056](https://issues.apache.org/jira/browse/PDFBOX-1056) with the following description:
+
+
+ _We (Atos Worldline) donate our PDF/A validator to the PDFBox project. This product is based on PDFBox and a javacc parser. Before this donation, the product was already distributed under Apache Licence 2. Its current name is padaf. Padaf complies the isartor test suite. This version depends on standard PDFBox 1.5.0 version. Only one test class does not compile with current HEAD (on 27 of june), all other test cases pass. Padaf is composed of 2 modules :
+
+- preflight : the validator
+
+- xmpbox : an other implementation of xmp parser and writer. We make that choice because we did not have the time to propose all necessary modification in jempbox.
+The attached tar ball contains :
+
+- sources of the 2 modules
+
+- junit tests for each one
+
+- a parent (that will soon disappear) already depending on pdfbox-parent
+_ 
+
+
+
+- Which PMC will be responsible for the code: Apache PDFBox
+
+
+- Into which existing project/module: preflight and xmpbox
+
+
+- Officer or member managing donation: Andreas Lehmkühler
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2011-07-17 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+SHA1 sum for donated software: b9bb323fa73e1416a8b282fe2a687cebf1ac2145 ( _calculated using sha1sum version 8.4_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2011-07-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2011-07-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _/documents/grants/atos-worldline-padaf.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: ATOS Worldline
+
+
+| date | item |
+|------|------|
+| 2011-07-21 | Check that all active committers have a signed CLA on record. |
+| 2011-07-21 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2011-07-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2011-07-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [[RESULT][VOTE] Accept the PaDaF contribution (PDFBOX-1056)](http://mail-archives.apache.org/mod_mbox/pdfbox-dev/201107.mbox/%3C4E232710.50409@lehmi.de%3E) 
diff --git a/content/pdfbox.md b/content/pdfbox.md
deleted file mode 100644
index 8556551..0000000
--- a/content/pdfbox.md
+++ /dev/null
@@ -1,248 +0,0 @@
-Title: PDFBox Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The PDFBox project graduated on 2009-10-21</span>
-
-
-PDFBox is an open source Java library for working with PDF documents.
-
-
-
-- 2009-10-21: Board passed resolution to establish Apache PDFBox as a TLP
-
-- 2009-09-23: First release of Apache PDFBox
-
-- 2009-05-05: First release of Apache FontBox
-
-- 2009-04-07: First release of Apache JempBox
-
-- 2008-12-15: New committer: Brian Carrier
-
-- 2008-12-15: New committer: Andreas Lehmkühler
-
-
--  [PDFBox website](http://incubator.apache.org/pdfbox/) 
-
--  [Old PDFBox website](http://www.pdfbox.org/) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/pdfbox/](http://incubator.apache.org/pdfbox/)  |
-|  | wiki | . |
-| Mailing list | dev |  [pdfbox-dev@incubator.apache.org](mailto:pdfbox-dev-subscribe@incubator.apache.org)  |
-|  | users |  [pdfbox-users@incubator.apache.org](mailto:pdfbox-users-subscribe@incubator.apache.org)  |
-|  | commits |  [pdfbox-commits@incubator.apache.org](mailto:pdfbox-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | Jira |  [https://issues.apache.org/jira/browse/PDFBOX](https://issues.apache.org/jira/browse/PDFBOX)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/pdfbox/](http://svn.apache.org/repos/asf/incubator/pdfbox/)  |
-| Mentors | jukka | Jukka Zitting |
-|  | jeremias | Jeremias Märki |
-| Committers | blitchfield | Ben Litchfield |
-|  | danielwilson | Daniel Wilson |
-|  | pkoch | Philipp Koch |
-|  | lehmi | Andreas Lehmkühler |
-|  | carrier | Brian Carrier |
-| Extra | . | . |
-
-
-
-November 2008
-
-Apache PDFBox is an open source Java library for working with PDF documents. PDFBox entered incubation on February 7th, 2008.
-
-
-The website has been set up. The license review is underway and has already progressed quite far. The export control notification has been set up. These tasks and most other tasks were all performed by PDFBox mentors (mostly by Jukka Zitting). Sadly, there has been almost no participation by the initial committers, yet, except for handling the license grants and CLAs.
-
-
-On the user side, some questions don't seem to get answered. Not many patches have reached us, either.
-
-
-Issues before graduation:
-
-
-
-- Increase community size and activity
-
-- Finish license review
-
-- First Apache release
-
-
-August 2008
-
-Apache PDFBox is an open source Java library for working with PDF documents. PDFBox entered incubation on February 7th, 2008.
-
-
-We have finally migrated all sources to Apache svn and set up the project website at http://incubator.apache.org/pdfbox/. We also set up a CI build using Hudson. Traffic is picking up on the user and developer mailing lists, new issues are being reported through Jira, and there is initial discussion about an incubating 0.8.0 release.
-
-
-Software Grants have been received from Ben Litchfield and Daniel Wilson who are the primary authors of the PDFBox, FontBox and JempBox software. There have been a lot of small contributions (under the BSD license) by a number of other people to the project and it was asked (see http://markmail.org/message/zy6oweihmenqt6o4) on the legal-discuss list whether the primary authors have "sufficient rights" to grant a license for all of the code, or if we have to contact all the other contributors for separate grants. Having received no response to the question on legal-discuss we assumed that software grants from the primary authors was sufficient.
-
-
-We're discussing about what to do with the FontBox and JempBox codebases that are included as subprojects of PDFBox. We might decide to merge them with similar efforts in other Apache projects, most notably XML Graphics.
-
-
-Issues before graduation:
-
-
-
-- Increase community size and activity
-
-- License review
-
-- Export control notifications
-
-- First Apache release
-
-
-April 2008
-
-PDFBox is an open source Java PDF library for working with PDF documents. PDFBox entered incubation on February 7th, 2008.
-
-
-The contents of the issue trackers at SourceForge have been migrated to Jira. We've also created a pdfbox-users mailing list and plan to point people from the SourceForge support forums to that list. The project sources have not yet been migrated to Apache svn.
-
-
-Issues before graduation:
-
-
-
-- Bring the sources to Apache
-
-- Increase community size and activity
-
-- Release once all licensing and export issues are resolved
-
-
-March 2008
-
-PDFBox is an open source Java PDF library for working with PDF documents. PDFBox entered incubation on February 7th, 2008.
-
-
-The basic project infrastructure (lists, svn, jira, etc.) is already in place, and we are currently working on migrating the source code and existing issues from SourceForge. We have also requested a user mailing list to replace the current help forums on SourceForge.
-
-
-PDFBox uses the Bouncy Castle crypto libraries for handling encrypted PDF files. We will take care of export control issues as we proceed with importing the PDFBox sources to Apache.
-
-
-
-February 2008
-
-PDFBox is an open source Java PDF library for working with PDF documents. PDFBox entered incubation on February 7th, 2008.
-
-
-The PDFBox project has just entered incubation, and we're currently setting up the project infrastructure. A question about the licensing of the JAI dependency was voiced on the mailing list.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-01-16 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2009-01-16 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-02-07 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-02-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-02-10 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-01-16 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-01-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-01-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-08-23 | Check and make sure that for all code included with the distribution that is not under the Apache license, have the right to combine with Apache-licensed code and redistribute. (see [LEGAL-36](https://issues.apache.org/jira/browse/LEGAL-36) and [LEGAL-55](https://issues.apache.org/jira/browse/LEGAL-36) for further details) |
-| 2009-01-16 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-01-16 | Check that all active committers have submitted a contributors agreement. |
-| 2008-04-14 | Add all active committers in the STATUS file. |
-| 2008-04-14 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-04-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-02-10 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-04-14 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pegasus.md b/content/pegasus.md
deleted file mode 100644
index 418d05c..0000000
--- a/content/pegasus.md
+++ /dev/null
@@ -1,170 +0,0 @@
-Title: Apache Pegasus Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Pegasus is a distributed key-value storage system which is designed to be simple, horizontally scalable, strongly consistent and high-performance.
-
-
-
-- 2020-06-22 Project enters incubation.
-
-
-- Pegasus Website - http://pegasus.incubator.apache.org
-
-
--  [Community Pages](http://pegasus.incubator.apache.org/community/) 
-
--  [Current Documentation](http://pegasus.incubator.apache.org/docs/) 
-
--  [Releases](http://pegasus.incubator.apache.org/releases/) 
-
--  [Wiki](https://cwiki.apache.org/confluence/display/pegasus) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://pegasus.incubator.apache.org](http://pegasus.incubator.apache.org)  |
-| . | wiki |  [Wiki](https://cwiki.apache.org/confluence/display/pegasus)  |
-| Mailing list | dev |  `dev`  `@`  `pegasus.incubator.apache.org`  |
-| . | user(not request) |  `user`  `@`  `pegasus.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `pegasus.incubator.apache.org`  |
-| . | private |  `private`  `@`  `pegasus.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/projects/PEGASUS |
-| Source code | . | . |
-| . | incubator-pegasus | https://gitbox.apache.org/repos/asf?p=incubator-pegasus.git |
-| . | incubator-pegasus-website | https://gitbox.apache.org/repos/asf?p=incubator-pegasus-website.git |
-| Mentors |  | . |
-| . | vongosling | Von Gosling |
-| . | kmcgrail | Kevin A. McGrail |
-| . | zhangduo | Duo zhang |
-| . | chenliang613 | Liang Chen |
-| Committers | . | . |
-| . | cailiuyang | Cai Liuyang |
-| . | yuchenhe | He Yuchen |
-| . | huangwei | Huang Wei |
-| . | jiashuo | Jia Shuo |
-| . | sunweijie | Sun Weijie |
-| . | wutao | Wu Tao |
-| . | laiyingchun | Yingchun Lai |
-| . | zhaoliwei | Zhao Liwei |
-| . | qinzuoyan | Zuoyan Qin |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/pegasus.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2020-06-28 | Request DNS (first step after creating podling status page) |
-| 2020-07-01 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2020-07-20 | Request git repositories after SGAs are filed |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2020-06-28 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2020-06-28 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2020-08-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2020-07-08 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/pegasus.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-07-14 | Check that all active committers have submitted a contributors agreement. |
-| 2020-07-14 | Add all active committers in the STATUS file. |
-| 2020-07-14 | Ask root for the creation of committers' accounts on home.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/perl-apache_reload.md b/content/perl-apache_reload.md
new file mode 100644
index 0000000..34781a9
--- /dev/null
+++ b/content/perl-apache_reload.md
@@ -0,0 +1,73 @@
+Title: Apache::Reload Codebase Intellectual Property (IP) Clearance Status
+
+
+Apache::Reload is a Perl module that allows for dynamically re-loading Perl modules into a persistent mod_perl environment without restarting the server
+
+
+
+- the Apache-Perl PMC will be responsible for the code
+
+
+- the code will be imported into the Apache-Perl svn repository
+
+
+- Geoffrey Young is managing donation
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2007-02-08 | http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/Apache-Reload-0.07.tar.gz |
+| 2007-02-08 | http://people.apache.org/~geoff/Apache-Reload-0.07.tar.gz |
+| 2007-02-08 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+SHA1 sum of http://people.apache.org/~geoff/Apache-Reload-0.07.tar.gz
+
+
+SHA1 (Apache-Reload-0.07.tar.gz) = 7f7faf9b349000a01bd309c5b75d5181d56cf5a5
+
+
+MD5 sum of http://people.apache.org/~geoff/Apache-Reload-0.07.tar.gz
+
+
+MD5 (Apache-Reload-0.07.tar.gz) = 68a57f98e5c140117cceded434df1a0a
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| ....-..-.. | Check that all active committers have a signed CLA on record. |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/persistent-distributed-store-ignite.md b/content/persistent-distributed-store-ignite.md
new file mode 100644
index 0000000..3e2e345
--- /dev/null
+++ b/content/persistent-distributed-store-ignite.md
@@ -0,0 +1,68 @@
+Title: Ignite Persistent Store Codebase Intellectual Property (IP) Clearance Status
+
+
+The donated persistent store is a distributed and transactional disk storage that seamlessly integrates with Apache Ignite 2.0 page memory architecture. One of the main advantages of the store is that Apache Ignite becomes a fully operational from disk (SSD or Flash) without any need to preload the data in memory. Plus, with full SQL support already available in Apache Ignite, this feature will allow Apache Ignite serve as a distributed transactional database, both in memory and on disk, while continuing to support all the existing use cases.<br></br>Refer to these wiki pages for more details:
+
+-  [Persistent Store Design](https://cwiki.apache.org/confluence/display/IGNITE/Persistent+Store+Overview) 
+
+-  [Persistent Store Architecture](https://cwiki.apache.org/confluence/display/IGNITE/Persistent+Store+Architecture) 
+
+
+
+
+- Apache Ignite PMC will be responsible for the code.
+
+
+- The persistent store will be added under "pds" and "core" modules.
+
+
+- Officer or member managing donation: Denis Magda (Apache Ignite PMC Chair)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2017-05-12 | Branch: https://github.com/agoncharuk/ignite/tree/pds-donate<br></br>Commit: https://github.com/agoncharuk/ignite/commit/1cce2fcc960c5098cc684b6138ed306daf5dd5e4<br></br>MD5 or SHA1 sum for donated software: MD5 (ignite-pds-donate.zip) = 10c87c969cd836deb94172db384039f6 ( _md5 tool from Mac OS_ ). |
+| 2017-05-22 | The persistent store code base was committed to Apache Ignite repository's branch:<br></br>https://github.com/apache/ignite/tree/ignite-5267 |
+| 2017-06-16 | The persistent store code base was moved to the different branch due to a variety of changes. The "pds" module is discontinued - all the codebase merged to "ignite-core" component:<br></br>https://github.com/apache/ignite/tree/ignite-5267-1 |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2017-05-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-05-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Ignite Persistent Store
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- GridGain Systems, Inc.
+
+| date | item |
+|------|------|
+| 2017-05-12 | Check that all active committers have a signed CLA on record. |
+| 2017-05-12 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-05-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-05-12 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [IP Clearance vote on general@incubator.](http://apache-incubator-general.996316.n3.nabble.com/RESULT-IP-CLEARANCE-Apache-Ignite-Persistent-Store-td55050.html) 
+
+-  [Donation acceptance vote on Apache Ignite dev list.](http://apache-ignite-developers.2346864.n4.nabble.com/RESULT-VOTE-Accept-Contribution-of-Ignite-Persistent-Store-td18096.html) 
diff --git a/content/phoenix-phoenixdb.md b/content/phoenix-phoenixdb.md
new file mode 100644
index 0000000..b76c35c
--- /dev/null
+++ b/content/phoenix-phoenixdb.md
@@ -0,0 +1,64 @@
+Title: Python PhoenixDB Codebase Intellectual Property (IP) Clearance Status
+
+
+Python PhoenixDB is a Python library for interacting with the Phoenix Query Server.
+
+
+
+- Which PMC will be responsible for the code: Apache Phoenix PMC
+
+
+- Into which existing project/module: Apache Phoenix
+
+
+- Officer or member managing donation: Josh Elser (elserj)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-03-08 | Based on https://github.com/lalinsky/python-phoenixdb/tree/1bb34488dd530ca65f91b29ef16aa7b71f26b806, actual is https://github.com/joshelser/python-phoenixdb/tree/f363ee5329c3b50831707e56ddd96fefa2ae059e aka http://home.apache.org/~elserj/python-phoenixdb-f363ee53.tar.gz |
+
+SHA512: 34e377ce01ee5b010f0a3ccf60fa323e30ac874f54a51b8faeb8550d6454f5c3ecce155f35f448348fd4931b1c4001955bad941fd37f27560adca2228db010d3
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-03-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-03-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Python Phoenixdb_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Lukas Lalinksy
+
+- Mark Heppner
+
+| date | item |
+|------|------|
+| 2018-03-15 | Check that all active committers have a signed CLA on record. |
+| 2018-03-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-03-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. The only incompatible dependency is NoseTests which is LGPL. This dependency is used for running tests. We just need to make sure it isn't inadvertently included in the release. |
+| 2018-03-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. See caveat to the above item. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- PMC Vote: https://lists.apache.org/thread.html/acbb4265d428b58ddaf00efac6c427ca40250a42970dcdc941a84df4@%3Cdev.phoenix.apache.org%3E
diff --git a/content/phoenix.md b/content/phoenix.md
index 7948407..4741e18 100644
--- a/content/phoenix.md
+++ b/content/phoenix.md
@@ -1,189 +1,62 @@
-Title: Phoenix Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Phoenix project graduated on 2014-05-21</span>
+Title: Phoenix Codebase Intellectual Property (IP) Clearance Status
 
 
 Phoenix is an open source SQL query engine for Apache HBase, a NoSQL data store. It is accessed as a JDBC driver and enables querying and managing HBase tables using SQL.
 
 
 
-- 2013-12-11 Project enters incubation.
-
-- 2014-01-10 Project launches website.
-
-- 2014-02-10 IP clearance complete.
-
-- 2014-02-10 Project name approved by ASF VP of branding.
-
-- 2014-03-13 First release.
-
-- 2014-04-03 Second release.
-
-- 2014-04-04 Third release.
-
-- 2014-04-08 Added Gabriel Reid as committer.
-
-- 2014-04-30 Graduation vote passed on dev list.
-
-- 2014-05-04 Graduation vote passed on general list.
-
-- 2014-05-21 ASF board approves graduation resolution.
+- Which PMC will be responsible for the code: Phoenix (incubating) PMC
 
 
--  [http://phoenix.incubator.apache.org](http://phoenix.incubator.apache.org) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://phoenix.incubator.apache.org/](http://phoenix.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `phoenix.incubator.apache.org`  |
-| . | user |  `user`  `@`  `phoenix.incubator.apache.org`  |
-| . | private |  `private`  `@`  `phoenix.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `phoenix.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/PHOENIX](https://issues.apache.org/jira/browse/PHOENIX)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-phoenix.git](https://gitbox.apache.org/repos/asf?p=incubator-phoenix.git)  |
-| Mentors | larsh | Lars Hofhansl |
-| . | apurtell | Andrew Purtell |
-| . | enis | Enis Soztutar |
-| . | ddas | Deveraj Das |
-| . | stevenn | Steven Noels |
-| . | stack | Michael Stack |
-| Committers | jamestaylor | James Taylor |
-| . | mujtaba | Mujtaba Chohan |
-| . | jyates | Jesse Yates |
-| . | elilevine | Eli Levine |
-| . | stoens | Simon Toens |
-| . | maryannxue | Maryann Xue |
-| . | anoopsamjohn | Anoop Sam John |
-| . | ramkrishna | Ramkrishna S Vasudevan |
-| . | jzhong | Jeffrey Zhong |
-| . | ndimiduk | Nick Dimiduk |
-| . | greid | Gabriel Reid |
-| Contributors | prkommireddi | Prashant Kommireddi |
-| . | rajeshbabu | Rajeshbabu Chintaguntla |
-| . | bruno | Bruno Dumon |
-| . | tedyu | Ted Yu |
-| . | samarth.jain@salesforce.com | Samarth Jain |
-| . | kutschm@gmail.com | Marcel Kutsch |
+- Into which existing project/module: Phoenix (incubating)
 
 
--  [January 2014 Report](https://wiki.apache.org/incubator/January2014) 
+- Officer or member managing donation: Michael Stack (stack)
 
--  [February 2014 Report](https://wiki.apache.org/incubator/February2014) 
-
--  [March 2014 Report](https://wiki.apache.org/incubator/March2014) 
-
--  [April 2014 Report](https://wiki.apache.org/incubator/April2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2014-02-10 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-12-11 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
+| 2014-02-04 | https://github.com/forcedotcom/phoenix/tree/18ba5a84bcef8780ff17194f7f9ba233890658a9 and https://github.com/forcedotcom/phoenix/tree/0a0fad29fedbcffb685b6d647125e3ff0e38957d |
 
-## Infrastructure {#Infrastructure}
+These are the two github URLs that were mentioned in the grant by David M. Simon of Saleforce on 02/03/2014.
 
-| date | item |
-|------|------|
-| 2013-12-11 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-12-11 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-12-11 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-12-11 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-01-27 | Migrate the project to our infrastructure. |
-| 2014-03-14 | Prior Github issues transferred into JIRA. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-12-11 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-12-11 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-12-11 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2014-02-04 | Grant ack'd by James Carmen, Apache Secretary |
+| 2014-02-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2014-02-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-02-24 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+- Salesforce
 
 | date | item |
 |------|------|
-| 2013-12-18 | Check that all active committers have submitted a contributors agreement. |
-| 2013-12-18 | Add all active committers in the STATUS file. |
-| 2013-12-18 | Ask root for the creation of committers' accounts on people.apache.org. |
+| 2014-02-06 | All active committers have a signed CLA on record. |
+| 2014-02-06 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-02-06 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-02-06 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-# Incubation {#Incubation}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
-These action items have to be checked for during the whole incubation process.
+Related VOTEs:
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
 
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+- The VOTE thread accepting the donation is up on the dev mailing list for phoenix: http://mail-archives.apache.org/mod_mbox/incubator-phoenix-dev/201402.mbox/browser with title "VOTE: Accept the software grant by Salesforce".
diff --git a/content/photark.md b/content/photark.md
deleted file mode 100644
index 94453bb..0000000
--- a/content/photark.md
+++ /dev/null
@@ -1,160 +0,0 @@
-Title: PhotArk Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The PhotArk project retired on 2012-12-29</span>
-
-
-PhotArk is a photo gallery application, accessible via the web and written in Java.
-
-
-ATTENTION: PhotArk has retired from the Apache Incubator. The source code as of the retirement is still available from the Apache Subversion server.
-
-
-
-- 2013-01-01 - Apache Photark retired
-
-- 2009-05-22 - Apache PhotArk M2-incubating released
-
-- 2010-05-10 - Suhothayan Sriskandaraj elected as Apache PhotArk new committer
-
-- 2010-02-01 - Avdhesh Yadav elected as Apache PhotArk new committer
-
-- 2009-09-27 - Apache PhotArk M1-incubating released
-
-- 2009-09-01 - Luciano Resende volunteers as a mentor
-
-- 2009-07-23 - Carsten Ziegeler steps down as a mentor
-
-- 2009-01-18 - Roland Weber steps down as a mentor
-
-- 2008-08-19 - PhotArk accepted into the Incubator
-
-
--  [PhotArk website](http://incubator.apache.org/photark/) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/photark/](http://incubator.apache.org/photark/)  |
-| . | wiki | . |
-| Mailing list | Deleted as of retirement |
-| Bug tracking | JIRA (read-only) |  [https://issues.apache.org/jira/browse/PHOTARK](https://issues.apache.org/jira/browse/PHOTARK)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/photark/](http://svn.apache.org/repos/asf/incubator/photark/)  |
-| Mentors | lresende | Luciano Resende |
-| Committers | acymbalak | Angela Cymbalak |
-| . | avd | Avdhesh Yadav |
-| . | lresende | Luciano Resende |
-| . | suho | Suhothayan Sriskandaraj |
-
-
--  [October 2008 Report](http://wiki.apache.org/incubator/October2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2008-08-19 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-08-19 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-09-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-09-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2008-09-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| n/a | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| n/a | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-05-22 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2009-05-22 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-09-06 | Check that all active committers have submitted a contributors agreement. |
-| 2008-09-06 | Add all active committers in the STATUS file. |
-| 2008-09-06 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-08-21 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-08-21 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-08-21 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| n/a | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pig.md b/content/pig.md
deleted file mode 100644
index 8c94c17..0000000
--- a/content/pig.md
+++ /dev/null
@@ -1,183 +0,0 @@
-Title: Pig Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-Pig is a platform for analyzing large data sets that consists of a high-level language for expressing data analysis programs, coupled with infrastructure for evaluating these programs. The salient property of Pig programs is that their structure is amenable to substantial parallelization, which in turns enables them to handle very large data sets.
-
-
-Pig has **graduated as a Hadoop subproject** , see Message-ID: &lt;f767f0600810171144w3aaff127p65766a0a2a1a9662@mail.gmail.com&gt; on general@incubator.apache.org
-
-
-<span class="graduated">The Pig project graduated on 2008-10-22</span>
-
-
- **Pig** is a platform for analyzing large data sets that consists of a high-level language for expressing data analysis programs, coupled with infrastructure for evaluating these programs. The salient property of Pig programs is that their structure is amenable to substantial parallelization, which in turns enables them to handle very large data sets.
-
-
-At the present time, Pig's infrastructure layer consists of a compiler that produces sequences of Map-Reduce programs, for which large-scale parallel implementations already exist (e.g., the Hadoop subproject). Pig's language layer currently consists of a textual language called Pig Latin, which has the following key properties:
-
-
-
--  **Ease of programming.** It is trivial to achieve parallel execution of simple, "embarrassingly parallel" data analysis tasks. Complex tasks comprised of multiple interrelated data transformations are explicitly encoded as data flow sequences, making them easy to write, understand, and maintain.
-
--  **Optimization opportunities.** The way in which tasks are encoded permits the system to optimize their execution automatically, allowing the user to focus on semantics rather than efficiency.
-
--  **Extensibility.** Users can create their own functions to do special-purpose processing.
-
-
-- October 22, 2008: Pig has graduated as a Hadoop subproject.
-
-- September 2008: Daniel Dai voted in as a Pig committer
-
-- September 2008: Pig 0.1.0 released
-
-- June 2008: Pi Song voted in as a Pig committer
-
-- October 2007: [Pig formally accepted into Apache Incubator](http://www.mail-archive.com/general@incubator.apache.org/msg15348.html) 
-
-
--  [Pig website](http://incubator.apache.org/pig/) 
-
--  [Pig committers and mentors](http://incubator.apache.org/pig/whoweare.html) 
-
--  [Pig wiki](http://wiki.apache.org/pig/) 
-
-
--  [June 2008](http://wiki.apache.org/incubator/June2008) 
-
--  [September 2008](http://wiki.apache.org/incubator/September2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| October 2007 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| Existing project (Lucene) pre-approved Fall 2007 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-
- **DONE** 
-
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| October 2007 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| November 2007 | Subscribe all Mentors on the pmc and general lists. |
-| November 2007 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| November 2007 (re-done June 2008) | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.xml' |
-
- **DONE** 
-
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| Not applicable (I think) | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| Not applicble (new project) | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| August 2008 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| August 2008 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
- **DONE** 
-
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| October 2007 (and ongoing) | Check that all active committers have submitted a contributors agreement. |
-| September 2008 | Add all active committers in the STATUS file. |
-| September 2008 | Ask root for the creation of committers' accounts on people.apache.org. |
-
- **DONE** 
-
-
-Active Committers Are
-
-
-| Committer | Email Address |
-|-------------|-----------------|
-| Daniel Dai | daijyc@gmail.com |
-| Nigel Daley | nigel@apache.org |
-| Alan Gates | gates@yahoo-inc.com |
-| Olga Natkovich | olgan@yahoo-inc.com |
-| Owen O'Malley | omalley@apache.org |
-| Chris Olston | olston@yahoo-inc.com |
-| Ben Reed | breed@yahoo-inc.com |
-| Pi Song | pi.songs@gmail.com |
-| Utkarsh Srivastava | utkarsh@yahoo-inc.com |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| October 2007 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| October 2007 | Ask infrastructure to set up and archive Mailing lists. |
-| October 2007 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| Not applicable (project starts in Apache) | Migrate the project to our infrastructure. |
-
- **DONE** 
-
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **Yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **Yes** 
-
-- Are project decisions being made in public by the committers? **Yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **Yes** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **Yes** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pinot.md b/content/pinot.md
deleted file mode 100644
index 02e00f0..0000000
--- a/content/pinot.md
+++ /dev/null
@@ -1,182 +0,0 @@
-Title: Pinot Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Pinot is a distributed columnar storage engine that can ingest data in real-time and serve analytical queries at low latency. There are two modes of data ingestion - batch and/or realtime. Batch mode allows users to generate pinot segments externally using systems such as Hadoop. These segments can be uploaded into Pinot via simple curl calls. Pinot can ingest data in near real-time from streaming sources such as Kafka. Data ingested into Pinot is stored in a columnar format. Pinot provides a SQL like interface (PQL) that supports filters, aggregations, and group by operations.
-
-
-
-- 2018-10-21 Project enters incubation.
-
-- 2020-04-09 New committer added - Haibo Wang.
-
-- 2020-07-22 New committer added - Kartik Khare.
-
-- 2020-07-22 New committer added - Ting Chen.
-
-- 2020-09-20 New committer added - Harley Jackson.
-
-- 2021-02-01 New committer added - Yupeng Fu.
-
-- 2021-02-01 New committer added - Chinmay Soman.
-
-
-- Pinot Website - https://pinot.incubator.apache.org
-
-
--  [Current Documentation](https://docs.pinot.apache.org/) 
-
--  [Releases](https://dist.apache.org/repos/dist/release/incubator/pinot/) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://pinot.incubator.apache.org/](http://pinot.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/PINOT/](https://cwiki.apache.org/confluence/display/PINOT/)  |  |
-| Mailing list | dev |  `dev`  `@`  `pinot.incubator.apache.org`  |
-| . | user |  `user`  `@`  `pinot.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `pinot.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/PINOT](https://issues.apache.org/jira/browse/PINOT)  |
-| Source code | git checkout | git clone https://gitbox.apache.org/repos/asf/incubator-pinot.git |
-| Source code | Browse | git clone https://gitbox.apache.org/repos/asf/incubator-pinot.git |
-| Source code | Github mirror | https://github.com/apache/incubator-pinot |
-| Mentors | jim | Jim Jagielski |
-| . | kishoreg | Kishore G |
-| . | olamy | Olivier Lamy |
-| . | felixcheung | Felix Cheung |
-| Committers | apache id | name |
-| . | akshayrai09 | Akshay Rai |
-| . | apucher | Alexander Pucher |
-| . | cpsoman | Chinmay Soman |
-| . | haibow | Haibo Wang |
-| . | jackie | Jackie Jiang |
-| . | jamesshao | James Shao |
-| . | jfim | Jean-Francois Im |
-| . | jenniferdai | Jennifer Dai |
-| . | jlli | Jialiang Li |
-| . | jihao | Jihao Zhang |
-| . | kharekartik | Kartik Khare |
-| . | mayanks | Mayank Shrivastava |
-| . | nehapawar | Neha Pawar |
-| . | aaronucsd | Long Huynh |
-| . | siddteotia | Siddharth Teotia |
-| . | snlee | Seunghyun Lee |
-| . | mcvsubbu | Subbu Subramaniam |
-| . | sunithabeeram | Sunitha Beeram |
-| . | tingchen | Ting Chen |
-| . | xhsun | Xiaohui Sun |
-| . | xiangfu | Xiang Fu |
-| . | yupeng | Yupeng Fu |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/pinot.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-10-18 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-10-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2018-10-18 | Ask infrastructure to set up and archive mailing lists. |
-| 2018-10-16 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2019-03-08 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-10-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2018-10-24 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-10-24 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-10-24 | Tell Mentors to track progress in the file 'incubator/projects/pinot.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2019-01-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2019-01-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2019-01-31 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2019-01-31 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-01-31 | Check that all active committers have submitted a contributors agreement. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - YES
-
-- Are project decisions being made in public by the committers? - YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pirk.md b/content/pirk.md
deleted file mode 100644
index 442de7d..0000000
--- a/content/pirk.md
+++ /dev/null
@@ -1,170 +0,0 @@
-Title: Incubation Status Pirk
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Pirk podling retired on 2017-04-17</span>
-
-
-Pirk is a framework for scalable Private Information Retrieval (PIR).
-
-
-
-- 2016-06-17 Project enters incubation.
-
-
--  [Original project proposal](https://wiki.apache.org/incubator/PirkProposal) 
-
-
--  [Project Website](http://pirk.incubator.apache.org/) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://pirk.incubator.apache.org/](http://pirk.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/PIRK](https://cwiki.apache.org/confluence/display/PIRK)  |
-| Mailing list | dev |  `dev`  `@`  `pirk.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `pirk.incubator.apache.org`  |
-| . | private |  `private`  `@`  `pirk.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/PIRK](https://issues.apache.org/jira/browse/PIRK)  |
-| Source code | GIT |  [http://git.apache.org/incubator-pirk.git/](http://git.apache.org/incubator-pirk.git/)  |
-| Source code (Github Mirror) | GitHub |  [https://github.com/apache/incubator-pirk](https://github.com/apache/incubator-pirk)  |
-| Source code (for website) | SVN |  [https://svn.apache.org/repos/asf/incubator/pirk/](https://svn.apache.org/repos/asf/incubator/pirk/)  |
-| Mentors | . | . |
-| . | billie | Billie Rinaldi |
-| . | joewitt | Joe Witt |
-| . | elserj | Josh Elser |
-| . | smarthi | Suneel Marthi |
-| . | tellison | Tim Ellison |
-| Committers | . | . |
-| . | tbrown | Tracy Brown |
-| . | charris | Christopher Harris |
-| . | raydulany | Walter Ray-Dulany |
-| . | jacobwilder | Jacob Wilder |
-| . | eawilliams | Ellison Anne Williams |
-| . | joewitt | Joe Witt |
-| . | tellison | Tim Ellison |
-| . | smarthi | Suneel Marthi |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| n/a | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| n/a | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-Infrastructure tasks are being tracked under JIRA task [INFRA-12123](https://issues.apache.org/jira/browse/INFRA-12123) 
-
-
-| date | item |
-|------|------|
-| 2016-06-27 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-06-18 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-06-20 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-06-19 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| 2016-06-20 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-07-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pivot.md b/content/pivot.md
deleted file mode 100644
index b8c8e0b..0000000
--- a/content/pivot.md
+++ /dev/null
@@ -1,160 +0,0 @@
-Title: Pivot Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Pivot project graduated on 2009-12-16</span>
-
-
-Pivot - an open-source platform for building rich internet applications in Java.
-
-
-Pivot combines the enhanced productivity and usability features of a modern RIA toolkit with the robustness of the Java platform. Pivot applications are written using a combination of Java and XML and can be run either as an applet or as a standalone, optionally offline, desktop application.
-
-
-
-- 2009-12-16 Board passes resolution graduating Pivot to a top-level project
-
-- 2009-11-20 Graduation vote passes Apache Incubator
-
-- 2009-09-22 Apache Pivot 1.3 released
-
-- 2009-07-02 New PPMC member: Noel Grandin
-
-- 2009-06-18 Apache Pivot 1.2 released
-
-- 2009-05-07 New PPMC member: Sandro Martini
-
-- 2009-05-07 New PPMC member: Christopher Brind
-
-- 2009-04-17 Apache Pivot 1.1 released
-
-- 2009-03-29 New committer: Noel Grandin
-
-- 2009-01-26 Project enters incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/pivot/](http://incubator.apache.org/pivot/)  |
-| Mailing list | dev |  `pivot-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | commits |  `pivot-commits`  `@`  `incubator.apache.org`  |
-| Mailing list | users |  `pivot-user`  `@`  `incubator.apache.org`  |
-| Mailing list | PPMC |  `pivot-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/PIVOT](http://issues.apache.org/jira/browse/PIVOT)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/pivot/](http://svn.apache.org/repos/asf/incubator/pivot/)  |
-| Proposal | Wiki |  [http://wiki.apache.org/incubator/PivotProposal](http://wiki.apache.org/incubator/PivotProposal)  |
-| Mentors | Niclas Hedhman<br></br>Martijn Dashorst<br></br> |  |
-| PMC Members | Christopher Brind<br></br>Greg Brown<br></br>Martijn Dashorst<br></br>Noel Grandin<br></br>Niclas Hedhman<br></br>Sandro Martini<br></br>Todd Volkert<br></br> |  |
-| Committers | Christopher Brind<br></br>Greg Brown<br></br>Noel Grandin<br></br>Sandro Martini<br></br>Todd Volkert<br></br> |  |
-
-
--  [March 2009](http://wiki.apache.org/incubator/March2009) 
-
--  [April 2009](http://wiki.apache.org/incubator/April2009) 
-
--  [May 2009](http://wiki.apache.org/incubator/May2009) 
-
--  [August 2009](http://wiki.apache.org/incubator/August2009) 
-
--  [November 2009](http://wiki.apache.org/incubator/November2009) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item | note |
-|------|------|------|
-| N/A | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |  |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |  |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-01-06 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-02-20 | Subscribe all Mentors on the private and development lists. |
-| 2009-03-04 | Give all initial committers access to the incubator SVN repository. (to be done by PMC chair) |
-| 2009-02-20 | Tell Mentors to track progress in the file 'incubator/projects/pivot.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-02-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-03-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-04-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2009-04-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| status | item |
-|--------|------|
-| 2009-02-20 | Check that all active committers have submitted a contributors agreement. |
-| 2009-02-20 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| status | item |
-|--------|------|
-| 2009-03-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-01-26 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-01-26 | Decide about and then ask infrastructure to setup an issue tracking system (Bugzilla, Scarab, Jira). |
-| 2009-03-14 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| status | item |
-|--------|------|
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? _Yes_ 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) _Yes_ 
-
-- Are project decisions being made in public by the committers? _Yes_ 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? _Yes_ 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? _Yes_ 
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? _N/A_ 
-
-- If graduating to a new PMC, has the board voted to accept it? _Yes_ 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? _Yes_ 
diff --git a/content/plc4x.md b/content/plc4x.md
deleted file mode 100644
index 4757eb4..0000000
--- a/content/plc4x.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: PLC4X Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The PLC4X project graduated on 2019-04-17</span>
-
-
-PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API.
-
-
-
-- 2017-12-18 PLC4X enters incubation.
-
-- 2019-04-17 PLC4X graduates to TLP.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://plc4x.incubator.apache.org/](http://plc4x.incubator.apache.org/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/PLC4X/](http://cwiki.apache.org/confluence/display/PLC4X)  |
-| Mailing list | dev |  `dev@plc4x.apache.org`  |
-| . | private |  `private@plc4x.apache.org`  |
-| . | issues |  `issues@plc4x.apache.org`  |
-| . | commits |  `commits@plc4x.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/PLC4X](https://issues.apache.org/jira/browse/PLC4X)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-plc4x.git](https://gitbox.apache.org/repos/asf/incubator-plc4x.git)  |
-| Mentors | gtrasuk | Greg Trasuk |
-| . | jmclean | Justin Mclean |
-| . | lresende | Luciano Resende |
-| . | bodewig | Stefan Bodewig |
-| Committers/PPMC | britter | Benedikt Ritter |
-| . | cdutz | Christofer Dutz |
-| . | dlaboss | Dale LaBossiere |
-| . | fstibane | Frank Stibane |
-| . | gtrasuk | Greg Trasuk |
-| . | jmclean | Justin McLean |
-| . | kherings | Kai Herings |
-| . | lfried | Lukas Friedrichsen |
-| . | keinmark | Mark Keinhörster |
-| . | sruehl | Sebastian Rühl |
-
-
--  [January 2018](http://wiki.apache.org/incubator/January2018) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase of incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-12-22 | Make sure that the requested project name does not already exist. [http://www.apache.org/foundation/m\ arks/naming.html](http://www.apache.org/foundation/marks/naming.html) Please follow the guide to ensure a suitable project/product name. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| TODO | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-19-12 | Ask infrastructure to set up and archive mailing lists. |
-| 2017-21-12 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2017-21-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2017-21-12 | Ask infrastructure to set up wiki (Confluence). |
-| 2017-23-12 | Migrate the project to Apache infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| TODO | Subscribe all Mentors on the pmc and general lists. |
-| TODO | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| TODO | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2017-12-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-12-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2017-12-22 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2017-12-22 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-30-12 | Check that all active committers have submitted a contributors agreement. |
-| 2017-30-12 | Add all active committers in the relevant section above. |
-| 2017-30-12 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pluto.md b/content/pluto.md
deleted file mode 100644
index 5d22734..0000000
--- a/content/pluto.md
+++ /dev/null
@@ -1,179 +0,0 @@
-Title: pluto
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project [website](http://jakarta.apache.org/pluto/) .
-
-
-<span class="graduated">The Pluto project graduated on 2004-05-15</span>
-
-
-Pluto is the Reference Implementation of the Java Portlet Specfication. The current version of this specification is &lt;JSR 168|http://jcp.org/en/jsr/detail?id=168]. Please read the [proposal](http://nagoya.apache.org/wiki/apachewiki.cgi?PlutoProposal) that started the project in the incubator.
-
-
-Pluto Graduated! On May 15, 2004, The Incubator PMC released Pluto to the Portals project. See thread at:
-
-
-http://mail-archives.apache.org/eyebrowse/BrowseList?listName=general@ ncubator.apache.org&amp;by=thread&amp;from=751960
-
-
-
--  [Website](http://jakarta.apache.org/pluto/) 
-
--  [Project Info](http://jakarta.apache.org/pluto/project-info.html) 
-
--  [CVS](http://cvs.apache.org/viewcvs.cgi/jakarta-pluto/) 
-
--  [Mailing Lists](http://jakarta.apache.org/site/mail2.html#Pluto) 
-
-# 2004-05-01 Pluto Status {#2004-05-01+Pluto+Status}
-
-```
-2004-05-01 Pluto Status * Is the STATUS file up to date? (also post
-link) Yes. http://incubator.apache.org/projects/pluto.html * Any
-legal, cross-project or personal issues that still need to be
-addressed? No outstanding issues. * What has been done for incubation
-since the last report? All project committers have received
-confirmation that CLA's have been received and accepted. The Pluto
-has worked hard towards 1.0 release of the Pluto Portlet Container
-reference implementation. The release is ready, pending graduation of
-Pluto from incubation. The Pluto Web Site has continued to be updated
-and built out. http://jakarta.apache.org/pluto Upon graduation from
-incubation and acceptance into Apache Portals, Pluto will be moved to
-http://portals.apache.org/pluto All source files have been modified
-to include the ASF v2.0 copyright notice. The mailing lists
-pluto-dev@jakarta.apache.org and pluto-user@jakarta.apache.org are
-now being archived at both Apache and MARC. Past list traffic has
-been imported into the Apache archives. * What are the project's
-plans and expectations for the next period? Put out release 1.0 to
-coincide with the Java Portlet API Specification. Future work will
-include refactoring and compontenization of Pluto, and support of the
-next release of the Java Portlet API Specification. Assemble a to-do
-list (roadmap) for future development and publish to the Pluto web
-site. Exit the Apache Incubator (hey, it was fun). * Any
-recommendations for how incubation could run more smoothly for you?
-The current process has worked well for us.
-
-```
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2003-09-13 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2003-09-13 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2003-09-13 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2003-10-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2003-10-03 | Subscribe all Mentors on the pmc and general lists. |
-| 2003-10-03 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2003-10-03 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-05-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-05-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2004-04-13 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2004-04-13 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2004-01-21 | Check that all active committers have submitted a contributors agreement. |
-| 2004-02-13 | Add all active committers in the STATUS file. |
-| 2004-01-21 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2003-09-13 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2003-09-13 | Ask infrastructure to set up and archive Mailing lists. |
-| 2003-09-13 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2003-09-13 | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-Yes.
-
-
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-Yes.
-
-
-
-- Are project decisions being made in public by the committers?
-
-Yes.
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-Yes.
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-Yes.
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-Yes. The Apache Portals Project PMC has voted to unanimously accept Pluto into the Apache Portals project.
-
-
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-See above.
-
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-Yes. On May 15, 2004, The Incubator PMC released Pluto to the Portals project. See thread at:
-
-
-http://mail-archives.apache.org/eyebrowse/BrowseList?listName=general@ ncubator.apache.org&amp;by=thread&amp;from=751960
-
diff --git a/content/poi-visio.md b/content/poi-visio.md
new file mode 100644
index 0000000..0af0b3f
--- /dev/null
+++ b/content/poi-visio.md
@@ -0,0 +1,70 @@
+Title: POI Visio / XDGF - Codebase Intellectual Property (IP) Clearance Status
+
+
+POI Visio (poi-visio) is an extension module for Apache POI. It adds support for the Microsoft Visio .vsdx xml-based file format. (Current Apache POI Visio support only handled the older binary .vsd format). Post-import, the component will be known as XDGF.
+
+
+
+- Which PMC will be responsible for the code: Apache POI PMC
+
+
+- Into which existing project/module: Apache POI
+
+
+- Officer or member managing donation: Nick Burch
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-08-19 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. _Module will be renamed from Visio to XDGF, following the X##F format in the normal POI manner, to avoid using a Microsoft trademark in the component name_  |
+
+Temporary URL of donated software: https://github.com/BBN-D/poi-visio/archive/0.0.3.zip
+
+
+MD5 or SHA1 sum for donated software: f6138036d3c5b3deb80866aaefe9bb26 (MD5)
+
+
+Temporary URL of donated software, updated with ASF license headers: https://github.com/BBN-D/poi-visio/archive/0.0.3-asf.tar.gz (54e9f516c63054e02cb4108cbfba1c041ae361438266f6139266db55341e629d SHA-256)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-08-19 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. _Software Grant received as part of a CCLA on 2015/08/14_  |
+| 2015-09-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. _Awaiting an updated code dump with the new headers_  |
+
+Identify name recorded for software grant: _cclas.txt: Raytheon BBN Technologies Corp for poi-visio_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2015-09-11 | Check that all active committers have a signed CLA on record. _Only one, ICLA+CCLA on file_  |
+| 2015-09-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-09-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. _One dependency, Curvesapi, 3 clause BSD, no onward dependencies, so compatible_  |
+| 2015-09-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Thread on private@poi _[VOTE] Accept POI Visio / XDGF component_ , started 2015-08-19, result on 2015-08-26
+
+- Thread on general@incubator _[IP CLEARANCE] Apache POI - Visio XDGF_ , started 2015-09-15, completed on 2015-09-20
diff --git a/content/ponymail.md b/content/ponymail.md
deleted file mode 100644
index dd6454b..0000000
--- a/content/ponymail.md
+++ /dev/null
@@ -1,147 +0,0 @@
-Title: Pony Mail Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on [the project website](http://ponymail.incubator.apache.org/) .
-
-
-Apache Pony Mail is a mail-archiving, archive viewing, and interaction service, that can be integrated with many email platforms.
-
-
-
-- 2016-05-27 Project enters incubation.
-
-- 2016-08-02 Apache Pony Mail (Incubating) 0.9 released.
-
-- 2016-10-11 Sebastian Bazley joins as committer.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://ponymail.incubator.apache.org/](http://ponymail.incubator.apache.org/)  |
-| Releases | source |  [http://www.apache.org/dyn/closer.cgi/incubator/ponymail](http://www.apache.org/dyn/closer.cgi/incubator/ponymail)  |
-| Mailing list | quick subscribe/unsubscribe | TODO |
-| . | dev |  `dev`  `@`  `ponymail.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `ponymail.incubator.apache.org`  |
-| . | private |  `private`  `@`  `ponymail.incubator.apache.org`  |
-| Bug tracking | GitHub |  [https://github.com/apache/incubator-ponymail/issues](https://github.com/apache/incubator-ponymail/issues)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-ponymail.git](https://gitbox.apache.org/repos/asf/incubator-ponymail.git)  |
-| . | github mirror |  [https://github.com/apache/incubator-ponymail](https://github.com/apache/incubator-ponymail)  |
-| Champion | smarthi | Suneel Marthi |
-| Mentors | abayer | Andrew Bayer |
-| . | johndament | John D. Ament |
-| Committers | humbedooh | Daniel Gruno |
-| . | rbowen | Rich Bowen |
-| . | ucb | Ulises Beresi |
-| . | ilgrosso | Francesco Chicchiriccò |
-| . | rubys | Sam Ruby |
-| . | curcuru | Shane Curcuru |
-| . | jim | Jim Jagielski |
-| . | sebb | Sebastian Bazley |
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ----- | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-05-30 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-05-27 | Ask infrastructure to set up and archive mailing lists. |
-| ------ | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ----- | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ------ | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ------- | Subscribe all Mentors on the pmc and general lists. |
-| ------- | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ------- | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-05-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2016-05-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-05-30 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-05-30 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ------- | Check that all active committers have submitted a contributors agreement. |
-| ------- | Add all active committers in the STATUS file. |
-| ------- | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/portals-gluecode-jetspeed.md b/content/portals-gluecode-jetspeed.md
new file mode 100644
index 0000000..b48e56d
--- /dev/null
+++ b/content/portals-gluecode-jetspeed.md
@@ -0,0 +1,51 @@
+Title: portals-gluecode-jetspeed
+
+
+The incoming code was contributed by Gluecode Software. It is contributing to the Jetspeed codebase as a patch. The patch is installed in the jakarta-jetspeed CVS, under the directory 'fusion'. Fusion is an optional feature for Jetspeed-1. It provides support for 'JSR-168' Portlets in Jetspeed-1. This feature allows for portlets to be deployed in a standard Portlet Application to Jetspeed-1, and run inside a Java Portlet API-compliant portlet container. Fusion leverages Jetspeed-2 components and pipelines embedded in the Jetspeed-1 server. Fusion was written by a Jetspeed contributor for hire, David S Taylor.
+
+
+
+- Which PMC will be responsible for the code
+
+Apache Portals PMC
+
+
+
+- Into which existing project/module
+
+Jetspeed (Jetspeed-1)
+
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2004-06-27 | Codebase is a patch to jetspeed CVS. |
+
+# Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2004-06-25 | Software Grant form received by Geir Magnusson Jr |
+| 2004-06-25 | Files that have been donated have been updated to reflect the new ASF copyright. |
+
+# Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2004-06-25 | Check that all active committers have a signed CLA on record |
+| 2004-06-25 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2004-06-25 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2004-06-25 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+
+- Has the receiving PMC voted to accept it?
+
+No
+
diff --git a/content/predictionio.md b/content/predictionio.md
deleted file mode 100644
index 4de447d..0000000
--- a/content/predictionio.md
+++ /dev/null
@@ -1,160 +0,0 @@
-Title: PredictionIO Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-PredictionIO is an open source Machine Learning Server built on top of state-of-the-art open source stack, that enables developers to manage and deploy production-ready predictive services for various kinds of machine learning tasks.
-
-
-<span class="graduated">The PredictionIO project graduated on 2017-10-18.</span>
-
-
-
-- 2016-05-26 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://predictionio.incubator.apache.org/](http://predictionio.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `predictionio.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `predictionio.incubator.apache.org`  |
-| . | user |  `user`  `@`  `predictionio.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/PREDICTIONIO](https://issues.apache.org/jira/browse/PREDICTIONIO)  |
-| Source code | Git | https://gitbox.apache.org/repos/asf/incubator-predictionio.git |
-| Champion | apurtell | Andrew Purtell |
-| Mentors | apurtell | Andrew Purtell |
-| . | jtaylor | James Taylor |
-| . | larsh | Lars Hofhansl |
-| . | smarthi | Suneel Marthi |
-| . | meng | Xiangrui Meng |
-| . | lresende | Luciano Resende |
-| Committers | pat | Pat Ferrell |
-| . | tjambor | Tamas Jambor |
-| . | yipjustin | Justin Yip |
-| . | yin | Xusen Yin |
-| . | moon | Lee Moon Soo |
-| . | donald | Donald Szeto |
-| . | kenneth | Kenneth Chan |
-| . | tchan | Tom Chan |
-| . | simonc | Simon Chan |
-| . | mvivero | Marco Vivero |
-| . | tovbinm | Matthew Tovbin |
-| . | yev | Yevgeny Khodorkovsky |
-| . | felipe | Felipe Oliveira |
-| . | vitaly | Vitaly Gordon |
-| . | emergentorder | Alex Merritt |
-| . | paulli | Paul Li |
-| . | takezoe | Naoki Takezoe |
-| . | shinsuke | Shinsuke Sugaya |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-06-16 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-06-16 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-06-16 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-06-16 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-06-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-06-17 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2016-06-17 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2016-06-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-06-17 | Check that all active committers have submitted a contributors agreement. |
-| 2016-06-17 | Add all active committers in the relevant section above. |
-| 2016-06-17 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/provisionr.md b/content/provisionr.md
deleted file mode 100644
index 5a74c1e..0000000
--- a/content/provisionr.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Provisionr project retired on 2013-11-22</span>
-
-
-Provisionr provides a service to manage pools of virtual machines on multiple clouds.
-
-
-
-- 2013-11-22 - Project requested to be withdrawn from incubation.
-
-- 2013-06-14 - Add wiki. Completed Copyright items.
-
-- 2013-04-08 - Most infrastructure items complete.
-
-- 2013-03-07 - Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://provisionr.incubator.apache.org/](http://provisionr.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/PROVISIONR](https://cwiki.apache.org/confluence/display/PROVISIONR)  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/PROVISIONR](https://issues.apache.org/jira/browse/PROVISIONR)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-provisionr.git](https://gitbox.apache.org/repos/asf/incubator-provisionr.git)  |
-| Documentation source | svn |  [https://svn.apache.org/repos/asf/incubator/provisionr/site/trunk/](https://svn.apache.org/repos/asf/incubator/provisionr/site/trunk/)  |
-| Mentors | rvs | Roman Shaposhnik |
-| . | tomwhite | Tom White |
-| . | mnour | Mohammad Nour |
-| Committers | asavu | Andrei Savu |
-| . | ieugen | Ioan Eugen Stan |
-| . | cimi | Alex Ciminian |
-| . | ak | Amandeep Khurana |
-| . | rvs | Roman Shaposhnik |
-| . | esammer | Eric Sammer |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-03-22 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-03-22 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-03-22 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-06-14 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-03-22 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-03-07 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-03-22 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-03-22 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-06-14 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-06-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-06-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-04-01 | Check that all active committers have submitted a contributors agreement. |
-| 2013-04-01 | Add all active committers in the STATUS file. |
-| 2013-04-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/pulsar-dotpulsar.md b/content/pulsar-dotpulsar.md
new file mode 100644
index 0000000..5164560
--- /dev/null
+++ b/content/pulsar-dotpulsar.md
@@ -0,0 +1,60 @@
+Title: DotPulsar Codebase Intellectual Property (IP) Clearance Status
+
+
+DotPulsar is a pulsar client library for .NET.
+
+
+
+- The Apache Pulsar PMC will be reponsible for the code.
+
+
+- The code repo will be transferred to the ASF as "apache/dotpulsar".
+
+
+- Officer or member managing donation: Sijie Guo
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-12-20 | Trademark and Google Search found no use of name as software product. |
+
+Orgin: [https://github.com/danske-commodities/dotpulsar](https://github.com/danske-commodities/dotpulsar) in a separated repo. Initiated the contribution to Apache Pulsar as Pulsar Improvement Proposal [PIP-53](https://github.com/apache/pulsar/wiki/PIP-53%3A-Contribute-DotPulsar-to-Apache-Pulsar) . Started the discussion in Pulsar dev@pulsar.apache.org mailing list: [[DISCUSS] Contribute DotPulsar to Apache Pulsar](https://lists.apache.org/thread.html/8ebe35027d818e595eec322da26a3f392324ec3d86c4c1b12b1ff498%40%3Cdev.pulsar.apache.org%3E) .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2020-02-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-02-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Danske Commodities A/S.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+Danske Commodities A/S
+| date | item |
+|------|------|
+| 2020-02-03 | Check that all active committers have a signed CLA on record. |
+| 2020-02-03 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-02-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-02-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on Apache Pulsar dev list to accept DotPulsar to Apache Pulsar.](https://lists.apache.org/thread.html/rc7bbb49a94e121b0db2e48ce0f30986d507c2589fb45d31dde736878%40%3Cdev.pulsar.apache.org%3E) 
diff --git a/content/pulsar-manager.md b/content/pulsar-manager.md
new file mode 100644
index 0000000..9c850df
--- /dev/null
+++ b/content/pulsar-manager.md
@@ -0,0 +1,60 @@
+Title: Pulsar Manager Codebase Intellectual Property (IP) Clearance Status
+
+
+Pulsar Manager is a new Pulsar web UI aiming at managing and monitoring Pulsar clusters running in different environments (on-premise data centers, cloud, and so on).
+
+
+
+- The Apache Pulsar PMC will be reponsible for the code.
+
+
+- The code repo will be transferred to the ASF as "apache/pulsar-manager".
+
+
+- Officer or member managing donation: Sijie Guo
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-08-29 | Trademark and Google Search found no use of name as software product. |
+
+Orgin: [https://github.com/streamnative/pulsar-manager](https://github.com/streamnative/pulsar-manager) in a separated repo. Initiated the contribution to Apache Pulsar as Pulsar Improvement Proposal [PIP-40](https://github.com/apache/pulsar/wiki/PIP-40%3A-Pulsar-Manager) . Started the discussion in Pulsar dev@pulsar.apache.org mailing list: [PIP-40: Contribute Pulsar Manager](https://lists.apache.org/thread.html/ec4437456d399aaefbca0b980bbfb2c63fd83ad1d15a2d05d8046962@%3Cdev.pulsar.apache.org%3E) .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-09-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-09-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: StreamNative Limited.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+StreamNative Limited
+| date | item |
+|------|------|
+| 2019-09-08 | Check that all active committers have a signed CLA on record. |
+| 2019-09-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-09-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-09-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on Apache Pulsar dev list to accept pulsar-manager to Apache Pulsar.](https://lists.apache.org/thread.html/1f6e98fd3e94c3e437a6155d7f17a80883aa96580bdfd24a1245a0aa@%3Cdev.pulsar.apache.org%3E) 
diff --git a/content/pulsar.md b/content/pulsar.md
deleted file mode 100644
index 7742497..0000000
--- a/content/pulsar.md
+++ /dev/null
@@ -1,146 +0,0 @@
-Title: Pulsar Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Pulsar project graduated on 2018-09-19</span>
-
-
-Pulsar is a highly scalable, low latency messaging platform running on commodity hardware. It provides simple pub-sub semantics over topics, guaranteed at-least-once delivery of messages, automatic cursor management for subscribers, and cross-datacenter replication.
-
-
-
-- 2017-06-01 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://pulsar.incubator.apache.org/](http://pulsar.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `pulsar.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `pulsar.incubator.apache.org`  |
-| . | users |  `users`  `@`  `pulsar.incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | GIT |  [https://github.cm/apache/incubator-pulsar/](https://github.com/apache/incubator-pulsar/)  |
-| Roster | Whimsy |  [Pulsar Roster](https://whimsy.apache.org/roster/ppmc/pulsar)  |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-07-12 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) / PODLINGNAMESEARCH-141 |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-06-01 | Ask infrastructure to set up and archive mailing lists. Done using mlreq. |
-| 2017-06-22 | Ask infrastructure to create source repository modules and grant the committers karma. GitHub with GitBox |
-| 2017-06-06 | Ask infrastructure to set up issue tracker (JIRA). (INFRA-14264). Also using GitHub Issues |
-| 2017-06-22 | Ask infrastructure to set up wiki (Confluence, Moin). Using GitHub Wiki |
-| 2017-06-22 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-06-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-06-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2017-06-12 | Tell Mentors to track progress in the file 'incubator/projects/pulsar.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2017-06-09 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-08-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2017-08-09 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2017-08-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-06-28 | Check that all active committers have submitted a contributors agreement. |
-| 2017-06-28 | Add all active committers in the relevant section above. |
-| 2017-06-28 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? Yes on 2018-09-19
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? Yes on 2018-09-14
diff --git a/content/pylucene.md b/content/pylucene.md
new file mode 100644
index 0000000..a95608a
--- /dev/null
+++ b/content/pylucene.md
@@ -0,0 +1,62 @@
+Title: PyLucene Codebase Intellectual Property (IP) Clearance Status
+
+
+PyLucene is a python-based port of the Lucene Java project. It is produced through a generation process
+
+
+
+- Which PMC will be responsible for the code: Lucene PMC
+
+
+- Into which existing project/module: New PyLucene subproject
+
+
+- Officer or member managing donation: Grant Ingersoll
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2008-12-13 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Code available at https://issues.apache.org/jira/browse/INCUBATOR-103, including the MD5 hash.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-12-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009.01.05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _The Pylucene Project: Http://plucene.osafounation.org the source code: Http://svn.osafoundation.org/pylucene_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Open Source Applications Foundation
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2008-12-13 | Check that all active committers have a signed CLA on record. |
+| 2008-12-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2009-01-05 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-01-05 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on general@incubator.a.o. Message ID: &lt;275A9ABF-578A-489B-9099-134105E15883@apache.org&gt;
diff --git a/content/qpid.md b/content/qpid.md
deleted file mode 100644
index d1d76fe..0000000
--- a/content/qpid.md
+++ /dev/null
@@ -1,234 +0,0 @@
-Title: Qpid Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Qpid project graduated on 2008-12-18</span>
-
-
-The Qpid Project provides an open and interoperable, multiple language implementations of the Advanced Messaged Queuing Protocol (AMQP) specification and related technologies including PGM, transaction management, queuing, distribution, security, management and heterogeneous multi-platform support for messaging.
-
-
-
-- Nov 08 - Jonathan Robie was voted in as new committer. He contributed the XML exchange and has done a lot of work improving examples/documentation around Qpid
-
-- Oct 08 - M3 release
-
-- Sep 08 - Lahiru Gunathilake was voted in as a new committer. He contributed a CLI management tool as part of the GSoC project
-
-- Sep 08 - Manuel Teira was voted in as a new committer. He is working on a solaris port for the c++ broker
-
-- Sep 08 - Steve Huston was voted in as a new committer. He is working on a windows port for the c++ broker
-
-- June 08 - Apache Axis2/C have AMQP support via Qpid
-
-- June 08 - Apache Synapse and Apache Axis2/Java have AMQP support via Qpid
-
-- May 08 - M2.1 release
-
-- May 08 - Addition of new committer (Ted Ross)
-
-- Feb 08 - Karma clean up, done by community process
-
-- Jan 08 - Addition of new committer (Aidan Skinner)
-
-- Jan 08 - Vote of Qpid community to request graduation as TLP
-
-- Dec 07 - Set scope and dates for M2.1
-
-- Dec 07 - Moving of build system back to Ant
-
-- Jan 07 - Addition of new committer (Nuno Santos)
-
-- Oct 07 - M2 release of Qpid
-
-- July 07 - Closing of legal questions on TCK and passing all JMS TCK tests
-
-- June 08 - Addition of new committer (Arnaud Simon)
-
-- June 07 - Added Ruby client
-
-- June 07 - Addition of .NET client
-
-- June 07 - M1 release of Qpid
-
-- Apr 07 - Addition of new committer (Tomas Restrepo)
-
-- Apr 07 - Addition of new committer (Kevin Smith)
-
-- Apr 07 - Addition of new committer (Rupert Smith)
-
-- Jan 07 - Addition of new committer (Jim Meyering)
-
-- Jan 07 - Addition of new committer (Robert Godfrey)
-
-- Jan 07 - Addition of new committer (Andrew Stitcher)
-
-- Jan 07 - New C++ build/ make system
-
-- Dec 06 - Migration of build system to Maven
-
-- Nov 06 - IP Clearance for code grant
-
-- Nov 06 - Creation of committer accounts
-
-- Sept 06 - Project setup
-
-- Aug 06 - Acceptance into Incubator
-
-| item | type | reference |
-|--------|--------|-------------|
-| Website | www |  [http://qpid.apache.org](http://qpid.apache.org)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/qpid/Index](http://cwiki.apache.org/confluence/display/qpid/Index)  |
-| Mailing list | dev |  `dev`  `@`  `qpid.apache.org`  |
-| . | svn |  `commits`  `@`  `qpid.apache.org`  |
-| . | private |  `private`  `@`  `qpid.apache.org`  |
-| Bug tracking | . |  [http://issues.apache.org/jira/browse/QPID](http://issues.apache.org/jira/browse/QPID)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/qpid/trunk/](https://svn.apache.org/repos/asf/qpid/trunk/)  |
-| Mentors | cliffs | Cliff Schmidt |
-| . | pzf | Paul Fremantle |
-| . | yoavs | Yoav Shapira |
-| . |  | Scott Deboy |
-| . |  | Craig L Russell |
-| Committers | . | . |
-| . | . | Aidan Skinner |
-| . | . | Alan Conway |
-| . | . | Arnaud Simon |
-| . | . | Andrew Stitcher |
-| . | . | Carl Trieloff |
-| . | . | Gordon Sim |
-| . | . | Jim Meyering |
-| . | . | John O'Hara |
-| . | . | Jonathan Robie |
-| . | . | Kim van der Riet |
-| . | . | Lahiru Gunathilake |
-| . | . | Marnie McCormack |
-| . | . | Martin Ritchie |
-| . | . | Manuel Teira |
-| . | . | Kim van der Riet |
-| . | . | Paul Fremantle |
-| . | . | Nuno Santos |
-| . | . | Rafael Schloming |
-| . | . | Rajith Attapattu |
-| . |  | Robert Godfrey. |
-| . | . | Robert Greig. |
-| . | . | Rupert Smith |
-| . | . | Steve Huston |
-| . | . | Yoav Shapira |
-
-
-- Latest available at http://wiki.apache.org/incubator/April2007
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|--------|--------|
-| 2006-08-27 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2006-08-27 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2006-08-27 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|--------|--------|
-| 2006-08-27 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-11-02 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-08-27 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2007-04-17 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|--------|--------|
-| 2006-11-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-11-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|--------|--------|
-| 2006-11-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2006-11-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|--------|--------|
-| 2006-09-01 | Check that all active committers have submitted a contributors agreement. |
-| 2006-09-01 | Add all active committers in the STATUS file. |
-| 2006-09-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|--------|--------|
-| 2006-09-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-09-01 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-09-30 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-09-01 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-
-
-- Understanding the details between JCP and announce compliance
-
-- Making sure we are comfortable with the working relationship between Qpid and the AMQP Working Group.
-
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/quickstep.md b/content/quickstep.md
deleted file mode 100644
index 47592d7..0000000
--- a/content/quickstep.md
+++ /dev/null
@@ -1,175 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Quickstep is a high-performance database engine. It is designed to (1) convert data to insights at bare-metal speed, (2) support multiple query surfaces including SQL (the first, and current, version only supports SQL), and (3) deliver bare-metal performance on any hardware (including running on a laptop, running on a high-end (single node) server, and running on a distributed cluster). Since its inception, the project has been planned to deliver a high-performance single node system first, followed by a distributed system.
-
-
-<span class="retired">The Quickstep podling retired on 2018-12-01</span>
-
-.
-
-- 2016-03-29 Project enters incubation.
-
-
--  [Apache Quickstep (incubating) website](http://quickstep.incubator.apache.org) 
-
-
--  [How to contribute to Apache Quickstep (incubating)](https://cwiki.apache.org/confluence/display/QUICKSTEP/) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://quickstep.incubator.apache.org/](http://quickstep.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/QUICKSTEP](https://cwiki.apache.org/confluence/display/QUICKSTEP)  |
-| Mailing list | dev |  `dev`  `@`  `quickstep.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `quickstep.incubator.apache.org`  |
-| . | user |  `user`  `@`  `quickstep.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `quickstep.incubator.apache.org`  |
-| . | private |  `private`  `@`  `quickstep.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/QUICKSTEP](https://issues.apache.org/jira/browse/QUICKSTEP)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-quickstep.git](https://gitbox.apache.org/repos/asf/incubator-quickstep.git)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-quickstep](http://github.com/apache/incubator-quickstep)  |
-| . | Website content and docs |  [https://svn.apache.org/repos/asf/incubator/quickstep](https://svn.apache.org/repos/asf/incubator/quickstep)  |
-| Mentors | cos | Konstantin Boudnik |
-| . | jhyde | Julian Hyde |
-| . | rvs | Roman Shaposhnik |
-| Committers | . | Jignesh M. Patel |
-| . | cos | Konstantin Boudnik |
-| . | . | Harshad Deshmukh |
-| . | . | Jianqiao Zhu |
-| . | . | Zuyu Zhang |
-| . | . | Marc Spehlmann |
-| . | . | Saket Saurabh |
-| . | . | Hakan Memisoglu |
-| . | . | Rogers Jeffrey |
-| . | . | Leo John |
-| . | . | Adalbert Gerald |
-| . | . | Soosai Raj |
-| . | . | Udip Pant |
-| . | . | Siddharth Suresh |
-| . | . | Rathijit Sen |
-| . | . | Craig Chasseur |
-| . | . | Qiang Zeng |
-| . | . | Shoban Chandrabose |
-| . | . | Navneet Potti |
-| . | . | Yinan Li |
-| . | . | Sangmin Shin |
-| . | . | James Paton |
-| . | . | Shixuan Fan |
-| . | rvs | Roman Shaposhnik |
-| . | jhyde | Julian Hyde |
-| . | dhruba | Dhruba Borthakur |
-
-
--  [May 2016](http://wiki.apache.org/incubator/May2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-04-11 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-04-11 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via [INFRA-11645](https://issues.apache.org/jira/browse/INFRA-11645)  |
-| 2015-04-11 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-04-11 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2015-04-11 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-04-11 | Ask infrastructure to set up svn pubsub website. |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-04-11 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-04-11 | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-04-11 | Tell Mentors to track progress in the file 'incubator/projects/quickstep.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-04-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-04-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-| ....-..-.. | The Apache RAT check was added to check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-04-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-04-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| 2016-04-11 | Add all active committers in the podling description file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| ....-..-.. | Produce first Apache Incubating release. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-| date | item |
-|------|------|
-| ....-..-.. | Figure out how to publish project documentation. |
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ranger.md b/content/ranger.md
deleted file mode 100644
index 3bdab8a..0000000
--- a/content/ranger.md
+++ /dev/null
@@ -1,201 +0,0 @@
-Title: Ranger Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Ranger project is a framework to enable, monitor and manage comprehensive data security across the Hadoop platform.
-
-
-<span class="graduated">The Ranger project graduated on 2017-01-18</span>
-
-
-
-- 2014-07-24 Project enters incubation.
-
-- 2014-11-17 Project Release: ranger-0.4-incubating
-
-- 2015-01-08 New committer: Velmurugan Periasamy
-
-- 2015-05-14 New committer: Alok Lal
-
-- 2015-06-10 Project Release: ranger-0.5-incubating
-
-- 2015-06-29 New committer: Gautam Borad
-
-- 2016-01-26 Project Release: ranger-0.5.1-incubating
-
-- 2016-02-29 Project Release: ranger-0.5.2-incubating
-
-- 2016-04-19 New Committer: Colm O hEigeartaigh
-
-- 2016-05-31 Project Release: ranger-0.5.3-incubating
-
-- 2016-07-18 Project Release: ranger-0.6.0-incubating
-
-- 2016-08-20 Project Release: ranger-0.6.1-incubating
-
-- 2016-09-05 New PMC member: Velmurugan Periasamy
-
-- 2016-11-08 Project Release: ranger-0.6.2-incubating
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://ranger.incubator.apache.org/](http://ranger.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/RANGER/](https://cwiki.apache.org/confluence/display/RANGER/)  |
-| Mailing list | dev |  `dev`  `@`  `ranger.incubator.apache.org`  |
-| . | user |  `user`  `@`  `ranger.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `commits.incubator.apache.org`  |
-| Bug tracking | . |  [Ranger Jira](https://issues.apache.org/jira/browse/ranger)  |
-| Source code | git |  [Ranger git](http://git.apache.org/incubator-ranger.git/)  |
-| Mentors | . | . |
-| . | gates | Alan Gates |
-| . | humbedooh | Daniel Gruno |
-| . | ddas | Devaraj Das |
-| . | jghoman | Jakob Homan |
-| . | omalley | Owen O'Malley |
-| Committers | . | . |
-| . | alok | Alok Lal |
-| . | bganesan | Balaji Ganesan |
-| . | dillidorai | Dilli Arumugam |
-| . | bosco | Don Bosco Durai |
-| . | coheigea | Colm O hEigeartaigh |
-| . | gautam | Gautam Borad |
-| . | kminder | Kevin Minder |
-| . | lmccay | Larry McCay |
-| . | madhan | Madhanmohan Neethiraj |
-| . | omalley | Owen O'Malley |
-| . | rmani | Ramesh Mani |
-| . | sradia | Sanjay Radia |
-| . | sneethir | Selvamohan Neethiraj |
-| . | vel | Velmurugan Periasamy |
-
-
--  [August 2014](https://wiki.apache.org/incubator/August2014) 
-
--  [September 2014](https://wiki.apache.org/incubator/September2014) 
-
--  [October 2014](https://wiki.apache.org/incubator/October2014) 
-
--  [January 2015](https://wiki.apache.org/incubator/January2015) 
-
--  [March 2015](https://wiki.apache.org/incubator/March2015) 
-
--  [June 2015](https://wiki.apache.org/incubator/June2015) 
-
--  [September 2015](https://wiki.apache.org/incubator/September2015) 
-
--  [December 2015](https://wiki.apache.org/incubator/December2015) 
-
--  [April 2016](https://wiki.apache.org/incubator/April2016) 
-
--  [June 2016](https://wiki.apache.org/incubator/June2016) 
-
--  [September 2016](https://wiki.apache.org/incubator/September2016) 
-
--  [December 2016](https://wiki.apache.org/incubator/December2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-10-13 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2014-10-13 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-07-25 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-07-25 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-07-25 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-08-14 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-08-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-08-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-08-01 | Tell Mentors to track progress in the file 'incubator/projects/ranger.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-08-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-11-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-08-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-08-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-07-31 | Check that all active committers have submitted a contributors agreement. |
-| 2014-07-25 | Add all active committers in the STATUS file. |
-| 2014-07-31 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/rat.md b/content/rat.md
deleted file mode 100644
index a62c32c..0000000
--- a/content/rat.md
+++ /dev/null
@@ -1,245 +0,0 @@
-Title: RAT Incubation Status - Apache Incubator
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The RAT project graduated on 2012-04-18</span>
-
-
-RAT is comprehension and auditing for distributions and source code.
-
-
-Project RAT will provide a focus for components, applications and integration tools for the comprehension and audit of distributions and source code. It will collect data and meta-data as required. It will create suitable schemas for this data and meta-data as required.
-
-
-
-- 17 April 2013 - Apache Rat 0.9 released. See Apache Creadur at [http://creadur.apache.org/](http://creadur.apache.org/) 
-
-- 10 June 2012 - Handover complete. Thanks to everyone who helped.
-
-- 30 May 2012 - New website in CMS
-
-- 07 May 2012 - Commence infrastructure move. Done mailing lists, subversion, JIRA.
-
-- 18 April 2012 - The Apache Creadur project is established.
-
-- 24 March 2012 - Graduation vote by IPMC.
-
-- 04 March 2012 - Graduation vote by community.
-
-- 24 December 2011 - added Sebastian Bazley as a new committer.
-
-- 15 November 2011 - apache-rat-incubating-0.8 released.
-
-- 07 October 2011 - added David Blevins as a new committer.
-
-- 10 August 2010 - apache-rat-incubating-0.7 released.
-
-- 09 December 2009 - added Brian Fox as a new committer.
-
-- 08 December 2009 - added Niall Pemberton as a new committer.
-
-- 08 December 2009 - added Gavin McDonald as a new committer.
-
-- 08 December 2009 - added David Crossley as a new committer.
-
-- 08 December 2009 - added Ross Gardler as a new committer.
-
-- 06 Jan 2008 - Project created
-
-- 07 Nov 2007 - Project RAT [accepted](http://mail-archives.apache.org/mod_mbox/incubator-general/200711.mbox/%3cf470f68e0711071546k201d2caamb9a7df257bcc96c3@mail.gmail.com%3e) 
-
-
--  [http://incubator.apache.org/rat/](http://incubator.apache.org/rat/) 
-
-
--  [Mailing-Lists](http://incubator.apache.org/rat/mail-lists.html) 
-
-
--  [Source](http://svn.apache.org/repos/asf/incubator/rat/) 
-
-
--  [Status](http://incubator.apache.org/projects/rat.html) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/rat/](http://incubator.apache.org/rat/)  |
-| Mailing list | dev |  [rat-dev@incubator.apache.org](mailto:rat-dev-subscribe@incubator.apache.org)  |
-| . | commits |  [rat-commits@incubator.apache.org](mailto:rat-commits-subscribe@incubator.apache.org)  |
-| . | private (PPMC) | rat-private@incubator.apache.org |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/RAT](http://issues.apache.org/jira/browse/RAT)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/rat](http://svn.apache.org/repos/asf/incubator/rat)  |
-| Mentors | rgardler | Ross Gardler |
-| . | hogstrom | Matt Hogstrom |
-| . | jim | Jim Jagielski |
-| Initial Committers | bodewig | Stefan Bodewig |
-| . | rdonkin | Robert Burrell Donkin |
-| . | jochen | Jochen Wiedmann |
-| . | gmcdonald | Gavin McDonald |
-| . | brianf | Brian Fox |
-| . | dennisl | Dennis Lundberg |
-| . | rgardler | Ross Gardler |
-| . | crossley | David Crossley |
-| . | dblevins | David Blevins |
-| . | sebb | Sebastian Bazley |
-| Emeritus Committers | rooneg | Garrett Rooney |
-| . | gnodet | Nodet Guillaume |
-| . | mriou | Matthieu Riou |
-| . | bayard | Henri Yandell |
-| . | pauls | Karl Pauls |
-| PPMC | . | PPMC consists of all the committers and mentors listed above |
-
-
--  [February 2008](http://wiki.apache.org/incubator/February2008#RAT) 
-
--  [March 2008](http://wiki.apache.org/incubator/March2008#RAT) 
-
--  [June 2008](http://wiki.apache.org/incubator/June2008) - not submitted.
-
--  [September 2008](http://wiki.apache.org/incubator/September2008) - not submitted.
-
--  [December 2008](http://wiki.apache.org/incubator/December2008#RAT) 
-
--  [March 2009](http://wiki.apache.org/incubator/March2009#RAT) 
-
--  [June 2009](http://wiki.apache.org/incubator/June2009#RAT) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009#RAT) 
-
--  [December 2009](http://wiki.apache.org/incubator/December2009#RAT) 
-
--  [March 2010](http://wiki.apache.org/incubator/March2010#RAT) 
-
--  [June 2010](http://wiki.apache.org/incubator/June2010#RAT) 
-
--  [September 2010](http://wiki.apache.org/incubator/September2010#RAT) 
-
--  [December 2010](http://wiki.apache.org/incubator/December2010#RAT) 
-
--  [March 2011](http://wiki.apache.org/incubator/March2011#RAT) 
-
--  [June 2011](http://wiki.apache.org/incubator/June2011#RAT) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-01-30 |  [Suitable Name Search](http://incubator.apache.org/guides/names.html) - see [PODLINGNAMESEARCH-1](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-1) and [PODLINGNAMESEARCH-4](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-4) . |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2008-01-06 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-01-06 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-01-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-01-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-01-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-01-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-01-06 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-01-06 | Check that all active committers have submitted a contributors agreement. |
-| 2008-01-06 | Add all active committers in the STATUS file. |
-| N/A | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-02-03 | Create source repository modules and grant the committers karma. |
-| 2008-02-03 | Set up and archive Mailing lists. |
-| 2008-02-03 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-02-03 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _None_ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-Completed before exit as [Apache Creadur](http://creadur.apache.org) top level project in April, 2012.
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _None_ 
-
-
-# Exit {#Exit}
-
-Exit as [Apache Creadur](http://creadur.apache.org) top level project approved by Incubator and Board in April, 2012.
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
- _Yes_ - exit as [Apache Creadur](http://creadur.apache.org) top level project approved by Incubator and Board in April, 2012.
-
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
- _Yes_ - exit as [Apache Creadur](http://creadur.apache.org) top level project approved by Incubator and Board in April, 2012.
-
diff --git a/content/ratis.md b/content/ratis.md
index 41b8b1e..8343855 100644
--- a/content/ratis.md
+++ b/content/ratis.md
@@ -1,186 +1,59 @@
-Title: Ratis Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: Ratis Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="graduated">The Ratis project graduated on 2021-2-17</span>
-
-
-The Ratis Project Ratis is an open source java implementation for RAFT consensus protocol
+Ratis is a java library that implements the RAFT protocol
 
 
 
-- 2017-01-03 Project enters incubation.
-
-- 2018-07-15 Apache Ratis 0.2.0-incubating released.
-
-- 2019-04-21 Apache Ratis 0.3.0-incubating released.
-
-- 2019-09-12 Apache Ratis 0.4.0-incubating released.
-
-- 2020-02-04 Apache Ratis 0.5.0-incubating released.
-
-- 2020-07-20 Apache Ratis 1.0.0-incubating released. A GA quality release!!
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://ratis.incubator.apache.org/](http://ratis.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/RATIS/](https://cwiki.apache.org/confluence/display/RATIS/)  |
-| Mailing list | dev |  `dev`  `@`  `ratis.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `ratis.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `ratis.incubator.apache.org`  |
-| . | user |  `user`  `@`  `ratis.incubator.apache.org`  |
-| Bug tracking | . |  [Ratis Jira](https://issues.apache.org/jira/browse/ratis)  |
-| Source code | git |  [Ratis git](https://github.com/apache/incubator-ratis)  |
-| Mentors | . | . |
-| . | arp | Arpit Agarwal |
-| . | ddas | Devaraj Das |
-| . | umamahesh | Uma Maheswara Rao G |
-| Committers | . | . |
-| . | jing9 | Jing Zhao |
-| . | szetszwo | Tsz Wo Nicholas Sze |
-| . | ddas | Devaraj Das |
-| . | enis | Enis Soztutar |
-| . | aengineer | Anu Engineer |
-| . | arp | Arpit Agarwal |
-| . | cnauroth | Chris Nauroth |
-| . | jghoman | Jakob Homan |
-| . | mayank | Mayank Bansal |
-| . | xyao | Xiaoyu Yao |
-| . | cliang | Chen Liang |
-| . | hanishakoneru | Hanisha Koneru |
-| . | liuml07 | Mingliang Liu |
-| . | umamahesh | Uma Maheswara Rao G |
-| . | jitendra | Jitendra Pandey |
-| . | elserj | Josh Elser |
-| . | ljain | Lokesh Jain |
-| . | elek | Marton Elek |
-| . | msingh | Mukul Kumar Singh |
-| . | shashikant | Shashikant Banerjee |
-| . | ankit | Ankit Singhal |
-| . | runzhiwang | Jie Wang |
-| . | huiyingkit | Kit Hui |
-| . | rajeshbabu | Rajeshbabu Chintaguntla |
-| . | ssa | Sergey Soldatov |
-| . | swagle | Siddharth Wagle |
-| . | vrodionov | Vladimir Rodionov |
+- Which PMC will be responsible for the code: Apache Ratis
 
 
-- Recent Reports.
-
--  [Aug, 2020](https://cwiki.apache.org/confluence/display/INCUBATOR/August2020) 
-
--  [May, 2020](https://cwiki.apache.org/confluence/display/INCUBATOR/May2020) 
-
--  [Feb, 2020](https://cwiki.apache.org/confluence/display/INCUBATOR/February2020) 
-
--  [Nov, 2019](https://cwiki.apache.org/confluence/display/INCUBATOR/November2019) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
+- Into which existing project/module: Apache Ratis
 
 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+- Officer or member managing donation: Enis Soztutar (enis@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2020-02-13 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) Name Search jira [PODLINGNAMESEARCH-160](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-160)  |
-| 2017-01-23 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2017-01-23 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2017-01-23 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-01-23 | Ask infrastructure to set up and archive mailing lists. |
-| 2017-01-31 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2017-01-31 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2017-02-16 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2017-01-23 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-01-31 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-01-31 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2017-02-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
+| 2017-02-10 | https://github.com/hortonworks/ratis/tree/3d71132d7c18ff64077c277e15ffeef99cec6cb5 |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2017-02-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2017-02-14 | Grant ack'd by Craig L Russell, Secretary, Apache Software Foundation. |
 | 2017-01-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
 
+Identify name recorded for software grant: _Hortonworks Inc_ 
+
+
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2017-02-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2017-02-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+Corporations and individuals holding existing distribution rights:<br></br>Hortonworks Inc<br></br>
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
 
 | date | item |
 |------|------|
-| 2017-02-15 | Check that all active committers have submitted a contributors agreement. |
-| 2017-02-15 | Add all active committers in the relevant section above. |
-| 2017-01-31 | Ask root for the creation of committers' accounts in LDAP. |
+| 2017-01-31 | Check that all active committers have a signed CLA on record. |
+| 2017-01-31 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2017-01-31 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2017-01-31 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-# Incubation {#Incubation}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
-These action items have to be checked for during the whole incubation process.
+Related VOTEs:
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
 
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+- The VOTE thread accepting the donation is up on the dev mailing list for ratis:<br>http://mail-archives.apache.org/mod_mbox/incubator-ratis-dev/201702.mbox/browser</br>with subject "[VOTE] Accept the software grant for Ratis from Hortonworks Inc"
diff --git a/content/rave.md b/content/rave.md
deleted file mode 100644
index a51a337..0000000
--- a/content/rave.md
+++ /dev/null
@@ -1,194 +0,0 @@
-Title: Rave Project Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Rave project graduated on 2012-03-21</span>
-
-
-Rave is a web and social mashup engine.
-
-
-
-- 2012-03-21 Apache Rave TLP Created
-
-- 2012-03-01 IPMC voted and accepted to propose to the board to graduate Rave to TLP<br></br>(exactly one year after project start)
-
-- 2012-02-24 PPMC voted and accepted to propose to the IPMC to graduate Rave to TLP
-
-- 2012-01-24 New Committer &amp; PPMC member: Venkat Mahadevan
-
-- 2012-01-18 Apache Rave selected for Honorable Mention in Open Source Rookie of the Year!
-
-- 2011-11-23 New Committer &amp; PPMC member: Sean Cooper
-
-- 2011-11-09 New PPMC member: Jasha Joachimsthal
-
-- 2011-06-29 New Committer: Jasha Joachimsthal
-
-- 2011-05-09 Project website published.
-
-- 2011-04-16 Initial code donations imported.
-
-- 2011-03-01 Project enters Apache Incubator.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/rave/](http://incubator.apache.org/rave/)  |
-|  | wiki | TBD |
-| Mailing list | dev |  `rave-dev`  `@`  `incubator.apache.org`  |
-|  | commits |  `rave-commits`  `@`  `incubator.apache.org`  |
-|  | private (PPMC) |  `rave-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/RAVE](https://issues.apache.org/jira/browse/RAVE)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/rave/](https://svn.apache.org/repos/asf/incubator/rave/)  |
-| Mentors | ate | Ate Douma |
-|  | hadrian | Hadrian Zbarcea |
-|  | rgardler | Ross Gardler |
-|  | sylvain | Sylvain Wallez |
-|  | upayavira | Upayavira |
-| Committers | ard | Ard Schrijvers |
-|  | ate | Ate Douma |
-|  | bas | Bas Zoetekouw |
-|  | hadrian | Hadrian Zbarcea |
-|  | jasha | Jasha Joachimsthal |
-|  | jcian | Jesse Ciancetta |
-|  | joostvandijk | Joost van Dijk |
-|  | mkremers | Maarten Kremers |
-|  | mpierce | Marlon Pierce |
-|  | mfranklin | Matt Franklin |
-|  | cthings | Niels van Dijk |
-|  | oharsta | Okke Harsta |
-|  | raminder | Raminderjeet Singh |
-|  | rgardler | Ross Gardler |
-|  | sanders | Sander van der Waal |
-|  | scottbw | Scott Wilson |
-|  | secooper | Sean Cooper |
-|  | smarru | Suresh Marru |
-|  | carlucci | Tony Carlucci |
-|  | unico | Unico Hommes |
-|  | venkatm | Venkat Mahadevan |
-|  | woonsan | Woonsan Ko |
-|  | zhguo | Zhenhua Guo |
-
-
--  [April 2011](http://wiki.apache.org/incubator/April2011) 
-
--  [May 2011](http://wiki.apache.org/incubator/May2011) 
-
--  [June 2011](http://wiki.apache.org/incubator/June2011) 
-
--  [September 2011](http://wiki.apache.org/incubator/September2011) 
-
--  [December 2011](http://wiki.apache.org/incubator/December2011) 
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-02-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-03-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-03-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-03-31 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-04-16 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-03-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-03-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-03-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-03-01 | Tell Mentors to track progress in the file 'incubator/projects/rave.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-03-09 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-02-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-07-05 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-07-05 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-03-04 | Check that all active committers have submitted a contributors agreement. |
-| 2011-05-04 | Add all active committers in the STATUS file. |
-| 2011-03-04 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? -YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) -YES
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers? -YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? -YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? -YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? -YES
diff --git a/content/rcf.md b/content/rcf.md
deleted file mode 100644
index c1f5f55..0000000
--- a/content/rcf.md
+++ /dev/null
@@ -1,158 +0,0 @@
-Title: RCF
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The RCF project retired on 2009-09-15</span>
-
-
-The RCF project represents the incubation of a comprehensive library of JavaServer Faces components. The intended destination of this project is the existing Apache MyFaces project.
-
-
-
-- Project Terminated in Sept 2009, as it never got started.
-<div class="section">
-| item | id | reference |
-|------|----|-----------|
-| Web site | www |  [RCF website (soon)](http://incubator.apache.org/rcf/)  |
-| Mailing lists | dev |  [rcf-dev@incubator.apache.org](mailto:rcf-dev@incubator.apache.org)  |
-|  | commits |  [rcf-commits@incubator.apache.org](mailto:rcf-commits@incubator.apache.org)  |
-|  | issues |  [issues-ppmc@incubator.apache.org](mailto:issues-ppmc@incubator.apache.org)  |
-| Moderators | matzew |  [Matthias Wessendorf](mailto:matzew_at_apache.org)  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/RCF](http://issues.apache.org/jira/browse/RCF)  |
-| Source code | svn |  [http://svn.apache.org/viewvc/incubator/rcf/](http://svn.apache.org/viewvc/incubator/rcf/)  |
-| Sponsor |  |  [Apache MyFaces PMC](mailto:pmc_at_myfaces.apache.org)  |
-| Mentors | mvdb |  [Martin van den Bemt](mailto:mvdb_at_apache.org)  |
-|  | henning |  [Henning Schmiedehausen](mailto:henning_at_apache.org)  |
-|  | cziegler |  [Carsten Ziegeler](mailto:cziegeler_at_apache.org)  |
-| Committers | awiner |  [Adam Winer](mailto:awiner_at_apache.org)  |
-|  | tbd | Andy Schwartz |
-|  | bommel |  [Bernd Bohmann](mailto:bommel_at_apache.org)  |
-|  | tbd | Blake Sullivan |
-|  | baranda |  [Bruno Aranda](mailto:baranda_at_apache.org)  |
-|  | cagatay |  [Cagatay Civici](mailto:cagatay_at_apache.org)  |
-|  | gcrawford |  [Gabrielle Crawford](mailto:gcrawford_at_apache.org)  |
-|  | gvanmatre |  [Gary van Matre](mailto:gvanmatre_at_apache.org)  |
-|  | gmuellan |  [Gerald Muellan](mailto:gmuellan_at_apache.org)  |
-|  | jwaldman |  [Jeanne Waldman](mailto:jwaldman_at_apache.org)  |
-|  | imario |  [Mario Ivankovits](mailto:imario_at_apache.org)  |
-|  | mvdb |  [Martin van den Bemt](mailto:mvdb_at_apache.org)  |
-|  | mmarinschek |  [Martin Marinschek](mailto:mmarinschek_at_apache.org)  |
-|  | matzew |  [Matthias Wessendorf](mailto:matzew_at_apache.org)  |
-|  | tbd | Scott Bryan |
-|  | slessard |  [Simon Lessard](mailto:slessard_at_apache.org)  |
-|  | werpu |  [Werner Punz](mailto:werpu_at_apache.org)  |
-</div>
-
--  [May 2007](http://wiki.apache.org/incubator/May2007) 
-
--  [June 2007](http://wiki.apache.org/incubator/June2007) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| 2007-03-22 (n/a) | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| (n/a) | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| (n/a) | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| (n/a) | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists, and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2007-04-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to all incubator SVN modules. (to be done by PMC chair) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/rcf.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| &gt;....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, have the right to combine with Apache-licensed code and redistribute. |
-| &gt;....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-04-03 | Check that all active committers have submitted a contributors agreement. |
-| &gt;....-..-.. | Add all active committers in the STATUS file. |
-| 2007-07-11 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-06-10 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-06-10 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/redback.md b/content/redback.md
new file mode 100644
index 0000000..9bf0b5f
--- /dev/null
+++ b/content/redback.md
@@ -0,0 +1,71 @@
+Title: Redback Codebase Intellectual Property (IP) Clearance Status
+
+
+Redback is a security framework which provide mechanism for authentication, authorization and user management. It's used by Apache Archiva and Apache Continuum.
+
+
+
+- The Archiva PMC is responsible for the code.
+
+
+- The code will be imported into http://svn.apache.org/repos/asf/archiva/redback as part a of the Archiva project.
+
+- http://svn.codehaus.org/redback/redback/ -&gt; http://svn.apache.org/repos/asf/archiva/redback/redback-core
+
+- http://svn.codehaus.org/redback/components/ -&gt; http://svn.apache.org/repos/asf/archiva/redback/redback-components
+
+
+- Olivier Lamy is the Apache member responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2012-04-03 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The code is available here :
+
+- core http://s.apache.org/redback-core-import (md5: 1a33794d321429f3c13c1f8e94127e3d )
+
+- components http://s.apache.org/redback-components-import (md5: 355f82d535f7f159fe8f8d74c4e6b492 )
+
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2012-04-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+No grant needed as the product was developed by ASF committers under ASF license at Codehaus.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Codehaus.org
+
+| date | item |
+|------|------|
+| 2012-04-03 | Check that all active committers have a signed CLA on record. |
+| 2012-04-03 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2012-04-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2012-04-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+All developers have CLAs on record with Apache
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Ip cleadance mail thread http://s.apache.org/l3G
+
+
+2012-04-06: Sources imported.
+
diff --git a/content/reef.md b/content/reef.md
deleted file mode 100644
index f2cb33e..0000000
--- a/content/reef.md
+++ /dev/null
@@ -1,187 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The REEF project graduated on 2015-11-18</span>
-
-
-REEF (Retainable Evaluator Execution Framework) is a scale-out computing fabric that eases the development of Big Data applications on top of resource managers such as Apache YARN and Mesos.
-
-
-
-- 2015-09-25 New committer: Geon-Woo Kim
-
-- 2015-08-28 New committer: Andrew Chung
-
-- 2015-08-15 REEF 0.12.0-incubating released
-
-- 2015-08-11 New committer: Mariia Mykhailova
-
-- 2015-05-22 REEF 0.11.0-incubating released
-
-- 2015-03-01 New committer: Joo Seong (Jason) Jeong
-
-- 2015-03-01 New committer: Gyewon Lee
-
-- 2015-01-14 REEF 0.10.0-incubating released
-
-- 2014-08-12 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://reef.incubator.apache.org/](http://reef.incubator.apache.org/)  |
-| . | wiki | none yet |
-| Mailing list | dev |  `dev`  `@`  `reef.incubator.apache.org`  |
-| . | private |  `private`  `@`  `reef.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `reef.incubator.apache.org`  |
-| Bug tracking | . |  [REEF Jira](https://issues.apache.org/jira/browse/REEF)  |
-| Source code | git |  [REEF git](https://gitbox.apache.org/repos/asf/incubator-reef.git)  |
-| Mentors | . | . |
-| . | cdouglas | Chris Douglas |
-| . | mattmann | Chris Mattmann |
-| . | rgardler | Ross Gardler |
-| . | omalley | Owen O'Malley |
-| Committers | . | . |
-| . | weimer | Markus Weimer |
-| . | motus | Sergiy Matusevych |
-| . | juliaw | Julia Wang |
-| . | shravan | Shravan M Narayanamurthy |
-| . | yingdachen | Yingda Chen |
-| . | tmajest | Tony Majestro |
-| . | sezgin | Beysim Sezgin |
-| . | shulmanb | Boris Shulman |
-| . | sears | Russell Sears |
-| . | jrlee | Jung Ryong Lee |
-| . | jerryjung | You Sun Jung |
-| . | dongjoon | Dong Joon Hyun |
-| . | joshrosen | Josh Rosen |
-| . | tcondie | Tyson Condie |
-| . | bmyers | Brandon Myers |
-| . | yunseong | Yunseong Lee |
-| . | taegeonum | Taegeon Um |
-| . | johnyangk | Youngseok Yang |
-| . | chobrian | Brian Cho |
-| . | bgchun | Byung-Gon Chun |
-| . | gwlee | Gyewon Lee |
-| . | jsjason | Joo Seong (Jason) Jeong |
-| . | mariia | Mariia Mykhailova |
-| . | afchung90 | Andrew Chung |
-| . | gwkim | Geon-Woo Kim |
-| . | dhruv | Dhruv Mahajan |
-
-
--  [June 2015](https://wiki.apache.org/incubator/June2015) 
-
--  [February 2015](https://wiki.apache.org/incubator/February2015) 
-
--  [October 2014](http://wiki.apache.org/incubator/October2014) 
-
--  [September 2014](http://wiki.apache.org/incubator/September2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-09-14 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2014-10-22 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-09-04 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-09-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-08-28 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-10-24 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2014-12-18 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-08-13 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-08-13 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-08-13 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-10-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-10-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-12-29 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-12-29 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-09-05 | Check that all active committers have submitted a contributors agreement. |
-| 2014-09-09 | Add all active committers in the STATUS file. |
-| 2014-09-08 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/ripple.md b/content/ripple.md
deleted file mode 100644
index 1d3e986..0000000
--- a/content/ripple.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: Ripple Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Ripple is going to be (in some circles already is) the goto emulator for rapid development of mobile web applications. This will be accomplished by quickly keeping up with the mobile web platforms as they arise (Cordova, Tizen, WAC, WebWorks, etc).
-
-
-<span class="retired">The Ripple podling retired on 2015-12-06.</span>
-
-
-
-- 2012-10-16 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/ripple](http://incubator.apache.org/ripple)  |
-| Mailing list | dev |  `dev`  `@`  `ripple.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `ripple.incubator.apache.org`  |
-| Bug tracking | Jira |  [https://issues.apache.org/jira/browse/ripple](https://issues.apache.org/jira/browse/ripple)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-ripple.git](https://gitbox.apache.org/repos/asf/incubator-ripple.git)  |
-| Source code (Website) | SVN |  [https://svn.apache.org/repos/asf/incubator/ripple/](https://svn.apache.org/repos/asf/incubator/ripple/)  |
-| Mentors | grobmeier | Christian Grobmeier |
-|  | asavory | Andrew Savory |
-|  | jukka | Jukka Zitting |
-| Committers | mwbrooks | Micheal Brooks |
-|  | raymondcamden | Raymond Camden |
-|  | axemclion | Parashuram Narasimhan |
-|  | ibuziuk | Ilya Buziuk |
-|  | timb | Tim Barham |
-|  | mdineen | Mark Dineen |
-|  | brentlintner | Brent Lintner |
-|  | filmaj | Fil Maj |
-|  | dansilivestru | Dan Silivestru |
-|  | gtanner | Gord Tanner |
-
-
--  [November 2012 Report](http://wiki.apache.org/incubator/November2012) 
-
--  [December 2012 Report](http://wiki.apache.org/incubator/December2012) 
-
--  [January 2013 Report](http://wiki.apache.org/incubator/January2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | <strike>If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names.</strike> |
-| N/A | <strike>If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.</strike> |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-01-17 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-10-25 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-10-22 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-01-23 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-03-11 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-10-16 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-01-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-01-17 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-01-17 | Tell Mentors to track progress in the file 'incubator/projects/ripple.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-03-09 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-11-12 | Check that all active committers have submitted a contributors agreement. |
-| 2012-12-05 | Add all active committers in the STATUS file. |
-| 2012-11-12 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/river.md b/content/river.md
deleted file mode 100644
index eda0b50..0000000
--- a/content/river.md
+++ /dev/null
@@ -1,190 +0,0 @@
-Title: Apache River
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The River project graduated on 2011-01-19</span>
-
-
-The River Project is a Jini technology implementation community.
-
-
-
-- 2011-01-19: Project graduated into a TLP
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/river/](http://incubator.apache.org/river/)  |
-| Mailing list | dev |  `river-dev`  `@`  `incubator.apache.org`  |
-|  | user |  `river-user`  `@`  `incubator.apache.org`  |
-|  | commits |  `river-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | jira |  [https://issues.apache.org/jira/browse/RIVER](https://issues.apache.org/jira/browse/RIVER)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/river/](http://svn.apache.org/repos/asf/incubator/river/)  |
-| Mentors | niclas | Niclas Hedhman |
-|  | jukka | Jukka Zitting |
-|  | bimargulies | Benson Margulies |
-| Former Mentors | gianugo | Gianugo Rabellino |
-|  | geirm | Geir Magnusson Jr |
-|  | psteitz | Phil Steitz |
-| Committers | bvenners | Bill Venners |
-|  | marbro | Mark Brouwer |
-|  | waldo | Jim Waldo |
-|  | pdp8 | John McClain |
-|  | btmurphy | Brian Murphy |
-|  | peter_jones | Peter Jones |
-|  | fbarnaby | Frank Barnaby |
-|  | resendes | Robert Resendes |
-|  | vinod | Vinod Johnson |
-|  | rjmann | Ron Mann |
-|  | jhurley | Jim Hurley |
-|  | jcosters | Jonathan Costers |
-|  | peter_firmstone | Peter Firmstone |
-|  | thobbs | Tom Hobbs |
-|  | sijskes | Sim IJskes |
-|  | pats | Patricia Shanahan |
-| Emeriti | rscheifler | Bob Scheifler |
-|  | dancres | Dan Creswell |
-|  | foliver | Fred Oliver |
-|  | geirm | Geir Magnusson Jr |
-|  | nigel | Nigel Daley |
-|  | psteitz | Phil Steitz |
-|  | ramirjf | Juan Ramirez |
-
-# March 2007
-
-River is aimed at the development and advancement of the Jini technology core infrastructure. Jini technology is a service oriented architecture that defines a programming model which both exploits and extends Java technology to enable the construction of secure, distributed systems which are adaptive to change.
-
-
-
-- Apache River incubator project proposal approved on Dec 26, 2006
-
-- Basic project structures created (mailing lists, web pages, jira, wiki, etc)
-
-- Much and varied discussions on direction and particulars on the river-dev list
-
-- ServiceUI contribution submitted and waiting PPMC formation and vote.
-
-Next steps include:
-
-
-
-- complete requirements and setup of initial committer list and PPMC
-
-- hold PPMC vote to accept ServiceUI contribution
-
-- Sun to submit Starter Kit contribution
-
-- hold PPMC vote to accept contribution
-
-- finalize jira categories and migrate pre-existing Sun bug reports
-
-- come to agreement on initial set of work leading to first Apache River release
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2006-12-26 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-12-26 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-12-26 | Subscribe all Mentors on the pmc and general lists. |
-| 2007-05-16 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-12-26 | Tell Mentors to track progress in the file 'incubator/projects/river.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-12-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-12-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-12-07 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2010-12-07 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-05-15 | Check that all active committers have submitted a contributors agreement. |
-| 2007-05-15 | Add all active committers in the STATUS file. |
-| 2007-05-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-05-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-05-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-05-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2010-12-07 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/rocketmq-cpp-sdk.md b/content/rocketmq-cpp-sdk.md
new file mode 100644
index 0000000..fdbab20
--- /dev/null
+++ b/content/rocketmq-cpp-sdk.md
@@ -0,0 +1,66 @@
+Title: RocketMQ CPP SDK Codebase Intellectual Property (IP) Clearance Status
+
+
+RocketMQ CPP SDK is a stable, widely used C++ client SDK of Apache RocketMQ, for Linux and Windows platform. It supports full features of RocketMQ Java client and has played an important role in many distributed applications of Alibaba Group.
+
+
+
+- Which PMC will be responsible for the code: Apache RocketMQ
+
+
+- Into which existing project/module: Apache RocketMQ
+
+
+- Officer or member managing donation: Justin Mclean and Von Gosling
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-01-11 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Available as attachment [rocketmq-cpp.zip](https://issues.apache.org/jira/secure/attachment/12905462/rocketmq-cpp.zip) on issue [ROCKETMQ-352](https://issues.apache.org/jira/browse/ROCKETMQ-352) with SHA1 sum for donated software: SHA1(rocketmq-cpp.zip) = c3553dbe3c1524fe4afb3a619e2c7acfdf9eefed.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-01-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2018-01-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Alibaba RocketMQ CPP SDK
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Beijing TaoBao Technology Co.,Ltd._ 
+
+-  _Qiwei Wang_ 
+
+| date | item |
+|------|------|
+| 2018-01-11 | Check that all active committers have a signed CLA on record. |
+| 2018-01-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-01-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-01-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Donation acceptance vote on Apache RocketMQ dev list.](https://lists.apache.org/thread.html/b997dab0a0900a20b3653578a583baa17e16f1620cccc4f3276704b2@%3Cdev.rocketmq.apache.org%3E) 
+
+-  [IP Clearance vote on IPMC list.](https://lists.apache.org/thread.html/3140945b010bfd304ddfef494934a0ed635e4d70ede6de632693e4a3@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/rocketmq.md b/content/rocketmq.md
deleted file mode 100644
index dbb49bb..0000000
--- a/content/rocketmq.md
+++ /dev/null
@@ -1,191 +0,0 @@
-Title: RocketMQ Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Apache RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability.
-
-
-<span class="graduated">The RocketMQ project graduated on 2017-09-20</span>
-
-
-
-- 2017-07-13 New PPMC member dongeforever.
-
-- 2017-07-03 Apache RocketMQ Meetup Beijing.
-
-- 2017-07-19 New committer linjunjie.
-
-- 2017-06-18 Apache RocketMQ 4.1.0-incubating has been released.
-
-- 2017-05-22 New committer vsair.
-
-- 2017-04-27 Jim Jagielski joins as mentor.
-
-- 2017-03-03 New committer shroman and dongeforever.
-
-- 2017-02-21 Apache RocketMQ 4.0.0-incubating has been released.
-
-- 2016-11-21 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://rocketmq.incubator.apache.org/](http://rocketmq.incubator.apache.org/)  |
-| . | wiki | https://cwiki.apache.org/confluence/display/ROCKETMQ/ |
-| Mailing list | dev |  `dev`  `@`  `rocketmq.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `rocketmq.incubator.apache.org`  |
-| . | user |  `user`  `@`  `rocketmq.incubator.apache.org`  |
-| Bug tracking | . |  [ROCKETMQ](https://issues.apache.org/jira/browse/ROCKETMQ)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-rocketmq.git]()  |
-| Mentors | bsnyder | Bruce Snyder |
-| . | brianm | Brian McCallister |
-| . | ningjiang | Willem Ning Jiang |
-| . | lukehan | Luke Han |
-| . | jmclean | Justin McLean |
-| . | jim | Jim Jagielski |
-| Committers | vongosling | Von Gosling |
-| . | vintagewang | Xiaorui Wang |
-| . | yukon | Xinyu Zhou |
-| . | lizhanhui | Zhanhui Li |
-| . | stevenschew | Wei Zhou |
-| . | lollipop | Jixiang Jin |
-| . | longda | Longda Feng |
-| . | dongeforever | Zhendong Liu |
-| . | shroman | Roman Shtykh |
-| . | vsair | Xue Liu |
-| . | linjunjie | Jaskey Lam |
-| Extra | . | . |
-
-
--  [19 July 2017](https://www.apache.org/foundation/records/minutes/2017/board_minutes_2017_07_19.txt) 
-
--  [19 April 2017](https://www.apache.org/foundation/records/minutes/2017/board_minutes_2017_04_19.txt) 
-
--  [15 March 2017](https://www.apache.org/foundation/records/minutes/2017/board_minutes_2017_03_15.txt) 
-
--  [27 February 2017](https://www.apache.org/foundation/records/minutes/2017/board_minutes_2017_02_27.txt) 
-
--  [18 January 2017](https://www.apache.org/foundation/records/minutes/2017/board_minutes_2017_01_18.txt) 
-
--  [21 December 2016(Mentioned Only)](https://www.apache.org/foundation/records/minutes/2016/board_minutes_2016_12_21.txt) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-08-22 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2016-12-06 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-12-05 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-12-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-12-08 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2016-12-12 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-12-19 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-12-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-12-09 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-12-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2017-02-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-02-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2017-02-21 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2017-02-21 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-12-13 | Check that all active committers have submitted a contributors agreement. |
-| 2016-12-05 | Ask root for the creation of committers' accounts in LDAP. |
-| 2017-08-03 | Add all new committers in the relevant section above. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/roller.md b/content/roller.md
deleted file mode 100644
index 379ea44..0000000
--- a/content/roller.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: Roller Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-The Apache Roller project has completed incubation (2007-02-21). Please go to the main project site :
-
-
- [http://roller.apache.org/](http://roller.apache.org/) 
-
-
-<span class="graduated">The Roller project graduated on 2007-02-21</span>
-
-
-Roller is the open source blog server that drives Sun Microsystem's blogs.sun.com employee blogging site, the Javalobby's JRoller Java community site, and hundreds of other sites. If you want to set up a blog server for yourself or for several thousand of your closest friends, then Roller is the perfect choice..
-
-
-
-- none yet
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/roller/](http://incubator.apache.org/roller/)  |
-| . | wiki |  [http://cwiki.apache.org/ROLLER/](http://cwiki.apache.org/ROLLER/)  |
-| Mailing list | dev | roller-dev@incubator.apache.org |
-| . | user | roller-user@incubator.apache.org |
-| . | commits | roller-commits@roller.apache.org |
-| Bug tracking | jira |  [http://opensource2.atlassian.com/projects/roller/](http://opensource2.atlassian.com/projects/roller/)  |
-| Source code | SVN | incubator/roller |
-| Mentors | rubys | Sam Ruby |
-| . | bayard | Henri Yandell |
-| Committers | . | . |
-| . | agilliland | Allen Gilliland |
-| . | gangolli | Anil Gangolli |
-| . | snoopdave | David Johnson |
-| . | bayard | Henri Yandell |
-| . | eliast | Elias Torres |
-| . | lance | Lance Lavandowska |
-| . | mraible | Matt Raible |
-| . | mattschmidt | Matthew Schmidt |
-| Extra | . | . |
-<u>2005Q4</u>
-
-- Developed minor Roller 1.3 release and voted to release it
-
-- Developed major Roller 2.0 release with group blogging an new UI
-
-- Added new committer Elias Torres
-
-- Added status page on incubator site
-<u>2006Q1</u>
-
-- JDO implementation started by Craig Russell ( [svn:link](http://svn.apache.org/repos/asf/incubator/roller/trunk/sandbox/jdobackend/) ). When finished, should be able to replace Hibernate.
-
-- 1.3, 2.0, 2.0.1 released at rollerweblogger.org
-
-- New committer added: Matt Schmidt
-
-- FindBugs dependency removed (LGPL)
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item | comment |
-|-------|-------|----------|
-| 2006-05-16 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. | We believe the Roller Weblogger name to be free of trademark issues. |
-| skip | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |  |
-| skip | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |  |
-| 2006-01-18 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |  |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item | comment |
-|-------|-------|----------|
-| 2006-01-18 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |  |
-| 2006-01-18 | Subscribe all Mentors on the pmc and general lists. |  |
-| 2006-01-18 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |  |
-| 2006-01-18 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |  |
-
-## Copyright {#Copyright}
-
-| date | item | comment |
-|-------|-------|----------|
-| 2005-05-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |  |
-| 2007-01-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |  |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item | comment |
-|-------|-------|----------|
-| 2006-11-10 | Check and make sure that for all code included with the distribution that is not under the Apache license has the right to combine with Apache-licensed code and redistribute. | LGPL + BCL must be downloaded separately |
-| 2006-11-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |  |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item | comment |
-|-------|-------|----------|
-| 2006-01-18 | Check that all active committers have submitted a contributors agreement. |  |
-| 2006-01-18 | Add all active committers in the STATUS file. | Taking 'STATUS file' to imply this page |
-| 2006-01-18 | Ask root for the creation of committers' accounts on people.apache.org. |  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item | comment |
-|-------|-------|----------|
-| 2006-01-18 | Ask infrastructure to create source repository modules and grant the committers karma. |  |
-| 2006-01-18 | Ask infrastructure to set up and archive Mailing lists. |  |
-| skip | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). | Jira will be migrated later |
-| 2007-01-30 | Migrate the project to our infrastructure. | Website and wiki have been created, key pages have been migrated. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? Yes
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) Yes
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/rya.md b/content/rya.md
deleted file mode 100644
index 6bd4fbd..0000000
--- a/content/rya.md
+++ /dev/null
@@ -1,193 +0,0 @@
-Title: Rya Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Rya project graduated on 2019-09-18</span>
-
-
-Rya (pronounced "ree-uh" /rēə/) is a cloud-based RDF triple store that supports SPARQL queries. Rya is a scalable RDF data management system built on top of Accumulo. Rya uses novel storage methods, indexing schemes, and query processing techniques that scale to billions of triples across multiple nodes. Rya provides fast and easy access to the data through SPARQL, a conventional query mechanism for RDF data.
-
-
-
-- 2019-09-18 Apache Rya graduates to Top Level Project
-
-- 2019-07-27 Apache Rya (incubating) version 4.0.0 released.
-
-- 2018-03-04 Apache Rya (incubating) version 3.2.12 released.
-
-- 2017-10-10 Apache Rya (incubating) version 3.2.11 released.
-
-- 2017-01-03 Caleb Meier is elected as PPMC member.
-
-- 2016-11-10 Welcome new mentor Billie Rinaldi.
-
-- 2016-10-28 First Apache Incubator Release for Rya (version 3.2.10).
-
-- 2016-10-25 Welcome new committer and PPMC member David Lotts.
-
-- 2016-08-31 Welcome new committer Caleb Meier.
-
-- 2015-09-18 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://rya.apache.org/](http://rya.apache.org/)  |
-| . | wiki | http://cwiki.apache.org/confluence/display/RYA |
-| Mailing list | dev |  `dev`  `@`  `rya.apache.org`  |
-| . | commits |  `commits`  `@`  `rya.apache.org`  |
-| . | private |  `private`  `@`  `rya.apache.org`  |
-| Bug tracking | . |  [Rya Jira](https://issues.apache.org/jira/browse/RYA)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-rya.git](https://gitbox.apache.org/repos/asf?p=incubator-rya.git)  |
-| Mentors | elserj | Josh Elser |
-| . | billie | Billie Rinaldi |
-| Committers | adina | Adina Crainiceanu |
-| . | dnrapp | David N Rapp |
-| . | jbrown | Jennifer Brown |
-| . | mihalik | Aaron Mihalik |
-| . | pujav65 | Puja Valiyil |
-| . | roshanp | Roshan Punnoose |
-| . | swagner | Steve Wagner |
-| . | caleb | Caleb Meier |
-| . | dlotts | David Lotts |
-
-
--  [July 2019](https://cwiki.apache.org/confluence/display/incubator/July2019) 
-
--  [April 2019](https://cwiki.apache.org/confluence/display/incubator/April2019) 
-
--  [January 2019](https://cwiki.apache.org/confluence/display/incubator/January2019) 
-
--  [October 2018](https://wiki.apache.org/incubator/October2018) 
-
--  [July 2018](https://wiki.apache.org/incubator/July2018) 
-
--  [April 2018](https://wiki.apache.org/incubator/April2018) 
-
--  [January 2018](https://wiki.apache.org/incubator/January2018) 
-
--  [October 2017](https://wiki.apache.org/incubator/October2017) 
-
--  [July 2017](https://wiki.apache.org/incubator/July2017) 
-
--  [April 2017](https://wiki.apache.org/incubator/April2017) 
-
--  [January 2017](https://wiki.apache.org/incubator/January2017) 
-
--  [October 2016](https://wiki.apache.org/incubator/October2016) 
-
--  [July 2016](https://wiki.apache.org/incubator/July2016) 
-
--  [April 2016](https://wiki.apache.org/incubator/April2016) 
-
--  [January 2016](https://wiki.apache.org/incubator/January2016) 
-
--  [December 2015](https://wiki.apache.org/incubator/December2015) 
-
--  [November 2015](https://wiki.apache.org/incubator/November2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-11-16 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) Completed [PODLINGNAMESEARCH-135](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-135)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-10-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-10-06 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-10-05 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2015-10-14 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-10-30 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2018-11-05 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-11-05 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-11-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-03-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-12-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-10-28 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-10-28 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-10-14 | Check that all active committers have submitted a contributors agreement. |
-| 2015-10-14 | Add all active committers in the STATUS file. |
-| 2015-10-14 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? Yes!
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/s2graph.md b/content/s2graph.md
deleted file mode 100644
index 027403d..0000000
--- a/content/s2graph.md
+++ /dev/null
@@ -1,148 +0,0 @@
-Title: S2Graph Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The S2Graph podling retired on 2020-11-29</span>
-
-
-S2Graph is a distributed and scalable OLTP graph database built on Apache HBase to support fast traversal of extremely large graphs.
-
-
-
-- 2015-11-29 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://s2graph.incubator.apache.org/](http://s2graph.incubator.apache.org/)  |
-| . | wiki | http://cwiki.apache.org/confluence/display/S2GRAPH |
-| Mailing list | dev |  `dev`  `@`  `s2graph.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `s2graph.incubator.apache.org`  |
-| . | users |  `users`  `@`  `s2graph.incubator.apache.org`  |
-| . | private |  `private`  `@`  `s2graph.incubator.apache.org`  |
-| Bug tracking | . |  [S2Graph Jira](https://issues.apache.org/jira/browse/S2GRAPH)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-s2graph.git](https://gitbox.apache.org/repos/asf?p=incubator-s2graph.git)  |
-| Mentors | apurtell | Andrew Purtell |
-| . | hyunsik | Hyunsik Choi |
-| . | venkatesh | Seetharam Venkatesh |
-| . | wikier | Sergio Fernández |
-| Committers | bzz | Alexander Bezzubov |
-| . | elric | Chul Kang |
-| . | daewon | Daewon Jeong |
-| . | steamshon | Do Yung Yoon |
-| . | rain | Hwansung Yu |
-| . | jaesang | Jaesang Kim |
-| . | lukehan | Luke Han |
-| . | mskim | Min-Seok Kim |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-11-29 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-11-29 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-11-29 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2015-11-29 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-12-16 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-11-29 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-12-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-12-16 | Check that all active committers have submitted a contributors agreement. |
-| 2015-12-16 | Add all active committers in the STATUS file. |
-| 2015-12-16 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/s4.md b/content/s4.md
deleted file mode 100644
index 0babf43..0000000
--- a/content/s4.md
+++ /dev/null
@@ -1,162 +0,0 @@
-Title: S4 Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The S4 project retired on 2014-06-19</span>
-
-
-S4 (Simple Scalable Streaming System) is a general-purpose, distributed, scalable, partially fault-tolerant, pluggable platform that allows programmers to easily develop applications for processing continuous, unbounded streams of data.
-
-
-
-- 2011-09-26 Project enters incubation.
-
-- 2012-08-16 S4 0.5.0-incubating is released.
-
-- 2013-06-03 S4 0.6.0-incubating is released.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/s4/](http://incubator.apache.org/s4/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/S4/](https://cwiki.apache.org/confluence/display/S4/)  |
-| Mailing list | dev |  `s4-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `s4-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/S4](https://issues.apache.org/jira/browse/S4)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf?p=incubator-s4.git](https://gitbox.apache.org/repos/asf?p=incubator-s4.git)  |
-| Mentors | phunt | Patrick Hunt |
-| . | acmurthy | Arun Murthy |
-| Committers | kishoreg | Kishore Gopalakrishna |
-| . | fpj | Flavio Junqueira |
-| . | mmorel | Matthieu Morel |
-| . | leoneu | Leo Neumeyer |
-| . | robbins | Bruce Robbins |
-| . | dferro | Daniel Gómez Ferro |
-| Extra | . | . |
-
-
--  [http://wiki.apache.org/incubator/October2011](http://wiki.apache.org/incubator/October2011) 
-
--  [http://wiki.apache.org/incubator/December2011](http://wiki.apache.org/incubator/December2011) 
-
--  [http://wiki.apache.org/incubator/March2012](http://wiki.apache.org/incubator/March2012) 
-
--  [http://wiki.apache.org/incubator/June2012](http://wiki.apache.org/incubator/June2012) 
-
--  [http://wiki.apache.org/incubator/September2012](http://wiki.apache.org/incubator/September2012) 
-
--  [http://wiki.apache.org/incubator/December2012](http://wiki.apache.org/incubator/December2012) 
-
--  [http://wiki.apache.org/incubator/March2013](http://wiki.apache.org/incubator/March2013) 
-
--  [http://wiki.apache.org/incubator/June2013](http://wiki.apache.org/incubator/June2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.<br></br>See [PODLINGNAMESEARCH-10](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-10)  |
-| 2012-01-03 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the GIT module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2012-09-26 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-12-25 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-10-07 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-10-09 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-11-23 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-01-12 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-09-20 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-10-07 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-01-10 | Give all Mentors access to the incubator GIT repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-10-09 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-10-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-07-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-07-31 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-07-31 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| 2011-10-07 | Add all active committers in the STATUS file. |
-| 2011-10-07 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/samoa.md b/content/samoa.md
deleted file mode 100644
index 32dccad..0000000
--- a/content/samoa.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: SAMOA Incubation Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The SAMOA podling retired on 2021-03-11</span>
-
-
-SAMOA provides a collection of distributed streaming algorithms for the most common data mining and machine learning tasks such as classification, clustering, and regression, as well as programming abstractions to develop new algorithms that run on top of distributed stream processing engines (DSPEs). It features a pluggable architecture that allows it to run on several DSPEs such as Apache Storm, Apache S4, and Apache Samza.
-
-
-
-- 2014-12-16 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://samoa.incubator.apache.org/](http://samoa.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `samoa.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `samoa.incubator.apache.org`  |
-| Bug tracking | . |  [Jira: SAMOA](https://issues.apache.org/jira/browse/SAMOA)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-samoa.git](https://gitbox.apache.org/repos/asf/incubator-samoa.git)  |
-| Champion | daijy | Daniel Dai |
-| Mentors | gates | Alan Gates |
-| . | hashutosh | Ashutosh Chauhan |
-| . | enis | Enis Soztutar |
-| . | tdunning | Ted Dunning |
-| Committers | gdfm | Gianmarco De Francisci Morales |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/samza.md b/content/samza.md
deleted file mode 100644
index f68ba4f..0000000
--- a/content/samza.md
+++ /dev/null
@@ -1,175 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Samza project graduated on 2015-01-21</span>
-
-
-Samza provides a system for processing stream data from publish-subscribe systems such as Apache Kafka. The developer writes a stream processing task, and executes it as a Samza job. Samza then routes messages between stream processing tasks and the publish-subscribe systems that the messages are addressed to.
-
-
-
-- 2013-07-30 Project enters incubation.
-
-- 2014-07-11 Samza 0.7 [released](https://blogs.apache.org/samza/entry/announcing_the_release_of_apache) 
-
-- 2014-12-09 Samza 0.8 [released](https://blogs.apache.org/samza/entry/announcing_the_release_of_apache1) 
-
-- 2014-01-02 Samza graduates to Top Level Project status.
-
-
--  [link to the main website](http://samza.incubator.apache.org/) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://samza.incubator.apache.org/](http://samza.incubator.apache.org/)  |
-| . | wiki |  [http://wiki.apache.org/samza/](http://wiki.apache.org/samza/)  |
-| Mailing list | dev |  `dev`  `@`  `samza.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `samza.incubator.apache.org`  |
-| . | private |  `private`  `@`  `samza.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/SAMZA](https://issues.apache.org/jira/browse/SAMZA)  |
-| Source code | Git |  [http://gitbox.apache.org/repos/asf/incubator-samza.git](http://gitbox.apache.org/repos/asf/incubator-samza.git)  |
-| Mentors | acmurthy | Arun Murthy |
-| . | cdouglas | Chris Douglas |
-| . | jghoman | Jakob Homan |
-| . | rvs | Roman Shaposhnik |
-| Committers | cpsoman | Chinmay Soman |
-| . | criccomini | Chris Riccomini |
-| . | jkreps | Jay Kreps |
-| . | jghoman | Jakob Homan |
-| . | sriramsub | Sriram Subramanian |
-| . | garryturk | Garry Turkington |
-| . | martinkl | Martin Kleppmann |
-| . | yanfang | Yan Fang |
-| . | zjshen | Zhijie Shen |
-
-
--  [October 2014](http://wiki.apache.org/incubator/October2014) 
-
--  [July 2014](http://wiki.apache.org/incubator/July2014) 
-
--  [April 2014](http://wiki.apache.org/incubator/April2014) 
-
--  [January 2014](http://wiki.apache.org/incubator/January2014) 
-
--  [October 2013](http://wiki.apache.org/incubator/October2013) 
-
--  [September 2013](http://wiki.apache.org/incubator/September2013) 
-
--  [August 2013](http://wiki.apache.org/incubator/August2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-04-29 | Make sure that the requested project name does not already exist: [PODLINGNAMESEARCH-46](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-46) . |
-| 2013-07-13 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2013-07-13 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-08-06 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-08-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-08-06 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-08-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-08-10 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-08-06 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-08 | Give all Mentors access to the incubator git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-08 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-04-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-04-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-04-13 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-04-13 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-04-13 | Check that all active committers have submitted a contributors agreement. |
-| 2014-04-13 | Add all active committers in the STATUS file. |
-| 2014-04-13 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/sanselan.md b/content/sanselan.md
index e53b420..7bd37bd 100644
--- a/content/sanselan.md
+++ b/content/sanselan.md
@@ -1,161 +1,62 @@
-Title: Sanselan Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: Sanselan Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="graduated">The Sanselan project graduated on 2009-06-30</span>
-
-
-The Sanselan Project is a pure-java image library for reading and writing a variety of image formats.
+Sanselan is a pure-java image library for reading and writing a variety of image formats. The initial work on Sanselan was begun in 2004 by Charles M. Chen, and was open sourced soon after. Much of the code was finished by the end of 2004, and work since then has been primarily been bug fixes, simplification of the API, and addition of optional parameters to allow finer-grained control.
 
 
 
-- June 2009 Sanselan successfully passed the vote to graduate from the incubator into Commons
-
-- May 2009 Sanselan was accepted into Commons as a proper subproject
-
-- July 2008 Sanselan made its first incubating code release
-
-- December 2007 Code base was imported
-
-- October 2007 Confluence site was set up [incubator.apache.org/sanselan/site](http://incubator.apache.org/sanselan/site/index.html) 
+- Which PMC will be responsible for the code: Apache Incubator PMC
 
 
-- Main site: [http://incubator.apache.org/sanselan/](http://incubator.apache.org/sanselan/) 
+- Into which existing project/module: Apache Incubator
 
 
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
+- Officer or member managing donation: Carsten Ziegeler (cziegeler)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/sanselan/](http://incubator.apache.org/sanselan/)  |
-| . | wiki | . |
-| Mailing list | dev |  `sanselan-dev`  `@`  `incubator.apache.org`  |
-| . | private (PPMC) |  `sanselan-private`  `@`  `incubator.apache.org`  |
-| . | commits |  `sanselan-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/SANSELAN](http://issues.apache.org/jira/browse/SANSELAN)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/sanselan](https://svn.apache.org/repos/asf/incubator/sanselan)  |
-| Champion | cziegeler | Carsten Ziegeler |
-| Mentors | clr | Craig Russell |
-| . | yoavs | Yoav Shapira |
-| . | jeremias | Jeremias Maerki |
-| Committers | cziegeler | Carsten Ziegeler |
-| . | cmchen | Charles M. Chen |
-| . | pkoch | Philipp Koch |
-| . | clr | Craig Russell |
-| . | yoavs | Yoav Shapira |
-| . | jeremias | Jeremias Maerki |
-| Extra | . | . |
-
-
-- See [http://svn.apache.org/repos/asf/incubator/sanselan/board/](http://svn.apache.org/repos/asf/incubator/sanselan/board/) .
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2008-07-25 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2007-09-10 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
+| 2007-09-10 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
 
-## Interim responsibility {#Interim+responsibility}
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
 
-| date | item |
-|------|------|
-| 2007-09-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-07-25 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-07-25 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2007-09-10 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2007-07-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-07-25 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2007-09-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-08-20 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2008-07-25 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-07-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
 
 | date | item |
 |------|------|
-| 2008-07-25 | Check that all active committers have submitted a contributors agreement. |
-| 2007-09-20 | Add all active committers in the STATUS file. |
-| 2007-09-20 | Ask root for the creation of committers' accounts on people.apache.org. |
+| 2008-08-20 | Check that all active committers have a signed CLA on record. |
+| 2008-08-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-08-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-08-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-09-12 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-09-12 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-09-20 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2007-10-12 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-# Incubation {#Incubation}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
-These action items have to be checked for during the whole incubation process.
+Related VOTEs:
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
 
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/sdap.md b/content/sdap.md
deleted file mode 100644
index 68752ba..0000000
--- a/content/sdap.md
+++ /dev/null
@@ -1,177 +0,0 @@
-Title: Apache SDAP Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Science Data Analytics Platform (SDAP) establishes an integrated data analytic center for Big Science problems. It focuses on technology integration, advancement and maturity.
-
-
-
-- 2017-10-22 Project enters incubation.
-
-
-- SDAP Website - http://sdap.incubator.apache.org
-
-
--  [Community Pages](http://sdap.incubator.apache.org/community/) 
-
--  [Current Documentation](http://sdap.incubator.apache.org/docs/) 
-
--  [Releases](http://sdap.incubator.apache.org/releases/) 
-
--  [Wiki](https://cwiki.apache.org/confluence/display/sdap) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://sdap.incubator.apache.org](http://sdap.incubator.apache.org)  |
-| . | wiki |  [Wiki](https://cwiki.apache.org/confluence/display/sdap)  |
-| Mailing list | dev |  `dev`  `@`  `sdap.incubator.apache.org`  |
-| . | user |  `user`  `@`  `sdap.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `sdap.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/sdap |
-| Source code | . | . |
-| . | incubator-sdap-nexus | https://gitbox.apache.org/repos/asf/incubator-nexus.git |
-| . | incubator-sdap-doms | https://gitbox.apache.org/repos/asf/incubator-doms.git |
-| . | incubator-sdap-mudrod | https://gitbox.apache.org/repos/asf/incubator-mudrod.git |
-| Mentors |  | . |
-| . | joern | Jörn Rottmann |
-| . | rbircher | Raphael Bircher |
-| . | smarthi | Suneel Marthi |
-| Committers | . | . |
-| . | tsontos | Vardis M. Tsontos |
-| . | lewismc | Lewis John McGibbney |
-| . | jacob | Joseph C. Jacob |
-| . | armstrong | Ed Armstrong |
-| . | greguska | Frank Greguska |
-| . | wilson | Brian Wilson |
-| . | yang | Chaowe Phil Yang |
-| . | jiang | Yongyao Jiang |
-| . | li | Yun Li |
-| . | smith | Shawn R. Smith |
-| . | elya | Jocelyn Elya |
-| . | bourassa | Mark Bourassa |
-| . | cram | Thomas Cram |
-| . | huang | Thomas Huang |
-| . | worley | Steven Worley |
-| . | ji | Zaihua Ji |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/sdap.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-10-22 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2017-10-22 | Ask infrastructure to set up and archive mailing lists. |
-| 2017-10-22 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2017-10-22 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| N/A | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-10-25 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-10-25 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2017-10-25 | Tell Mentors to track progress in the file 'incubator/projects/sdap.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2017-10-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| N/A | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| N/A | Check that all active committers have submitted a contributors agreement. |
-| N/A | Add all active committers in the STATUS file. |
-| N/A | Ask root for the creation of committers' accounts on home.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-
-
-- 
-
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/sedona.md b/content/sedona.md
deleted file mode 100644
index 343ea7e..0000000
--- a/content/sedona.md
+++ /dev/null
@@ -1,144 +0,0 @@
-Title: Apache Sedona Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Sedona is a big geospatial data processing engine. It provides an easy to use Scala, SQL, and Python APIs for spatial data scientists to manage, wrangle, and process geospatial data.
-
-
-
-- 2020-07-19 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://sedona.apache.org/](http://sedona.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `sedona.apache.org`  |
-| . | commits |  `commits`  `@`  `sedona.apache.org`  |
-| . | issues |  `issues`  `@`  `sedona.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/projects/SEDONA/issues](https://issues.apache.org/jira/projects/SEDONA/issues)  |
-| Source code | incubator-sedona | https://github.com/apache/incubator-sedona.git |
-| Website | incubator-sedona-website | https://github.com/apache/incubator-sedona-website.git |
-| Roster | people.apache |  [SEDONA Roster](http://people.apache.org/phonebook.html?podling=sedona)  |
-| Mentors | felixcheung | Felix Cheung |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | percivall | George Percivall |
-| . | vongosling | Von Gosling |
-| Committers | jiayu | Jia Yu |
-| . | jinxuanw | Jinxuan Wu |
-| . | imbruced | Paweł Kociński |
-| . | zongsizhang | Zongsi Zhang |
-| . | malka | Netanel Malka |
-| . | mosarwat | Mo Sarwat |
-
-
--  [SEDONA Board Reports](https://whimsy.apache.org/board/minutes/sedona.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2020-07-19 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2020-07-19 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2020-07-21 | Request DNS (first step after creating podling status page) |
-| 2020-07-29 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator) Completed |
-| 2020-07-24 | Request [git repositories](https://reporeq.apache.org/) Completed |
-| 2020-07-22 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) ). |
-| N/A | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). Not Required |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2020-08-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2020-07-24 | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/sedona.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-08-15 | Check that all active committers have submitted a contributors agreement. |
-| 2020-08-22 | Add all active committers in the relevant section above. |
-| 2020-08-15 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/sentry.md b/content/sentry.md
deleted file mode 100644
index 0cba3ab..0000000
--- a/content/sentry.md
+++ /dev/null
@@ -1,202 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-<span style="background-color: #FFFF00">The Sentry project graduated on 2016-03-16</span>
-<span class="graduated">The Sentry project graduated on 2016-03-16</span>
-
-
-Sentry is a highly modular system for providing fine grained role based authorization to both data and metadata stored on an Apache Hadoop cluster.
-
-
-
-- 2016-01-29 Hao Hao has been voted as committer!
-
-- 2015-12-21 Community voted to make Committer == PPMC. To simplify logistics, this takes effect at the time of graduation.
-
-- 2015-11-27 Anne Yu has been voted as committer!
-
-- 2015-11-04 Olivier Lamy resigned as mentor
-
-- 2015-09-22 Sentry 1.6.0-incubating released!
-
-- 2015-07-15 Sentry 1.5.1-incubating released!
-
-- 2014-12-24 Colin Ma, Dapeng Sun, Guoquan Shen and Xiaomeng Huang have been voted as committers!
-
-- 2014-09-02 Arun Suresh and Tuong Truong have been voted as committers!
-
-- 2014-08-18 Sentry 1.4.0-incubating released!
-
-- 2014-05-15 Sentry 1.3.0-incubating released!
-
-- 2014-03-28 Vamsee Yarlagadda has been voted as a committer!
-
-- 2013-09-25 Sentry 1.2.0-incubating released! First Apache version!
-
-- 2013-08-08 Project enters incubation.
-
-
--  [Project Website: Home of Apache Sentry](http://sentry.incubator.apache.org) 
-
-
--  [How to Contribute](https://cwiki.apache.org/confluence/display/SENTRY/How+to+Contribute) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://sentry.incubator.apache.org/](http://sentry.incubator.apache.org/)  |
-| Wiki | wiki |  [https://cwiki.apache.org/confluence/display/SENTRY/Home](https://cwiki.apache.org/confluence/display/SENTRY/Home)  |
-| Mailing lists | . |  [http://sentry.incubator.apache.org/community/mailing_lists.html](http://sentry.incubator.apache.org/community/mailing_lists.html)  |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/SENTRY |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-sentry.git](https://gitbox.apache.org/repos/asf/incubator-sentry.git)  |
-| Mentors | arvind | Arvind Prabhakar |
-| . | jzb | Joe Brockmeier |
-| . | ke4qqq | David Nalley |
-| . | phunt | Patrick Hunt |
-| . | tomwhite | Thomas White |
-| Committers | ali | Ali Rizvi |
-| . | anneyu | Anne Yu |
-| . | asuresh | Arun Suresh |
-| . | arvind | Arvind Prabhakar |
-| . | brock | Brock Noland |
-| . | ctang | Chaoyu Tang |
-| . | colin | Colin Ma |
-| . | daisy | Daisy Zhou |
-| . | sdp | Dapeng Sun |
-| . | ke4qqq | David Nalley |
-| . | erickt | Erick Tryzelaar |
-| . | gchanan | Gregory Chanan |
-| . | gqshen | Guoquan Shen |
-| . | hadi | Hadi Nahari |
-| . | hahao | Hao Hao |
-| . | jarcec | Jarek Jarcec Cecho |
-| . | jzb | Joe Brockmeier |
-| . | dreambird | Johnny Zhang |
-| . | kramachandran | Karthik Ramachandran |
-| . | mark | Mark Grover |
-| . | milo | Milo Polte |
-| . | lskuff | Lenni Kuff |
-| . | daly | Patrick Daly |
-| . | phunt | Patrick Hunt |
-| . | prasadm | Prasad Mujumdar |
-| . | raghu_mani | Raghu Mani |
-| . | mackrorysd | Sean Mackrory |
-| . | shreepadma | Shreepadma Venugopalan |
-| . | sravya | Sravya Tirukkovalur |
-| . | tomwhite | Thomas White |
-| . | tuongtruong | Tuong Truong |
-| . | vamsee | Vamsee Yarlagadda |
-| . | xiaom | Xiaomeng Huang |
-| . | xuefu | Xuefu Zhang |
-
-
--  [Project Status Reports](https://cwiki.apache.org/confluence/display/SENTRY/Project+Status+Reports) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-09-23 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-08-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-08-14 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-08-14 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-08-23 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-08-30 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-09-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-08-28 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-09-11 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-08-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-09-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-09-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-09-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-09-11 | Check that all active committers have submitted a contributors agreement. |
-| 2013-09-17 | Add all active committers in the STATUS file. |
-| 2013-09-11 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/servicecomb-mesher.md b/content/servicecomb-mesher.md
new file mode 100644
index 0000000..93998ff
--- /dev/null
+++ b/content/servicecomb-mesher.md
@@ -0,0 +1,74 @@
+Title: ServiceComb Mesher Codebase Intellectual Property (IP) Clearance Status
+
+
+The ServiceComb Mesher project provides services mesh feature based on a sidecar proxy, it works within ServiceComb eco system by leveraging the services governace features that ServiceComb provides.
+
+
+
+- The Apache ServiceComb PMC will be responsible for the code
+
+
+- It will be integrated with ServiceComb project as a submodule
+
+
+- Officer or member managing donation: Willem Ning Jiang
+
+ _Completed tasks are shown by the completion date 2019-07-10._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2019-07-05 | Source codebase is from [GitHub commit](https://github.com/go-mesh/mesher/commit/7eede6c969a6f461e25fb6f8ed036b1821d36675)  **Confirmed.**  |
+|------------|-------------------------------------------------|
+
+Git commit SHA for donated software: 7eede6c969a6f461e25fb6f8ed036b1821d36675. MD5 of the Zip file is 9cbbc1a5ba09e1720c703614f158500e.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-07-05 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-07-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: **ServiceComb Mesher** 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Huawei Technologies CO.,Ltd. (SGA on file)
+
+- Tian xiaoliang (tianxiaoliang) (ICLA on file)
+
+- Ju Zheng (crystaldust) (ICLA is on file)
+
+- Rajadeepan D Ramesh (Rajadeepan) (ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-07-5 | Check that all active committers have a signed CLA on record. **Confirmed, SGA and ICLAs on file as noted above.**  |
+| 2019-07-5 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution, and 3rd-party code downloaded and use as part of the build complies with ASF license policy (mainly MIT and BSD licenses).**  |
+| 2019-07-5 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance IPMC request: https://lists.apache.org/thread.html/76c90a1c9ff7d7c6da4440d4ead8263913bca4de30147157710e580b@%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance IPMC result: https://lists.apache.org/thread.html/d0a957684ea24594f14e573de7c3ebe42d721193b56f28a735990e6b@%3Cgeneral.incubator.apache.org%3E
+
+- ServiceComb PMC acceptance vote: https://lists.apache.org/thread.html/b2205334b6abf7fdde38830c3b40f114a736abb3e69b05ed367eaa8e@%3Cdev.servicecomb.apache.org%3E
+
+- ServiceComb PMC vote result: https://lists.apache.org/thread.html/186266ed60fc3a74710d537a615b12656660d0f8f2a04a7ce9bc4056@%3Cdev.servicecomb.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-241
diff --git a/content/servicecomb-oas-validator.md b/content/servicecomb-oas-validator.md
new file mode 100644
index 0000000..d4493cc
--- /dev/null
+++ b/content/servicecomb-oas-validator.md
@@ -0,0 +1,70 @@
+Title: ServiceComb osa-validator Codebase Intellectual Property (IP) Clearance Status
+
+
+It's OpenAPI V3 Spec validator tool which could help user to check the changes of his OpenAPI specs.
+
+
+
+- The Apache ServiceComb PMC will be responsible for the code
+
+
+- It will be integrated with ServiceComb project as a submodule
+
+
+- Officer or member managing donation: Willem Ning Jiang
+
+ _Completed tasks are shown by the completion date (TO-DO)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2019-10-22 | Source codebase is from [GitHub commit]()  **Confirmed.**  |
+|------------|-------------------------------------------------|
+
+Github repo https://github.com/NewCapec-Institute/oas-validator Git commit SHA for donated software: eb073aea2a80ccfe7abecdd34f62e7d2182d7199. MD5 of the Zip file is d2e12edf4cbe0024a48b647757367851.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-10-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-10-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: **ServiceComb Toolkit** 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- . (SGA on file)
+
+- (ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-10-22 | Check that all active committers have a signed CLA on record. **Confirmed, SGA and ICLAs on file as noted above.**  |
+| 2019-10-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution, and 3rd-party code downloaded and use as part of the build complies with ASF license policy (mainly MIT and BSD licenses).**  |
+| 2019-10-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance IPMC request: https://lists.apache.org/thread.html/b592b910bb1e6f01c0e0e39a0dadb02f01346b5e6e47df5446b6e132@%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance IPMC result: https://lists.apache.org/thread.html/13407a5c6487877e76da178c4e83b15e397005d3c8931d2b075367d7@%3Cgeneral.incubator.apache.org%3E
+
+- ServiceComb PMC acceptance vote: https://lists.apache.org/thread.html/704967302e2f3c093441bf197bfe83b7aee34c210e0c3bb3898d4170@%3Cdev.servicecomb.apache.org%3E
+
+- ServiceComb PMC vote result: https://lists.apache.org/thread.html/062cf6e67add1061aad3b106543842a8ac95959da8cd45bf2f88d597@%3Cdev.servicecomb.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-247
diff --git a/content/servicecomb-toolkit.md b/content/servicecomb-toolkit.md
new file mode 100644
index 0000000..e1528db
--- /dev/null
+++ b/content/servicecomb-toolkit.md
@@ -0,0 +1,72 @@
+Title: ServiceComb Toolkit Codebase Intellectual Property (IP) Clearance Status
+
+
+The ServiceComb Toolkit project is a microservice development tool to help users quickly build microservices projects, it supports generating microservice project which is based on some popular microservices frameworks (such as ServiceComb and SpringCloud), programming models (such as SpringMVC, POJO and JAX-RS) or Springboot， and supports automatic extraction of contracts, contract verification, automatic generation of code and documentation.
+
+
+
+- The Apache ServiceComb PMC will be responsible for the code
+
+
+- It will be integrated with ServiceComb project as a submodule
+
+
+- Officer or member managing donation: Willem Ning Jiang
+
+ _Completed tasks are shown by the completion date (2019-06-18)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| 2019-06-11 | Source codebase is from [GitHub commit](https://github.com/MabinGo/toolkit/commit/8c1b0f8a24243500082f0fc8ba148e1e9f7fc955)  **Confirmed.**  |
+|------------|-------------------------------------------------|
+
+Git commit SHA for donated software: 8c1b0f8a24243500082f0fc8ba148e1e9f7fc955. MD5 of the Zip file is 8bbf00a59e0476192d3dced20e2565ef.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-06-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-06-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: **ServiceComb Toolkit** 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Huawei Technologies CO.,Ltd. (SGA on file)
+
+- Bin Ma (ICLA on file)
+
+- Lisen Sun (ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-06-12 | Check that all active committers have a signed CLA on record. **Confirmed, SGA and ICLAs on file as noted above.**  |
+| 2019-06-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution, and 3rd-party code downloaded and use as part of the build complies with ASF license policy (mainly MIT and BSD licenses).**  |
+| 2019-06-12 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance IPMC request: https://lists.apache.org/thread.html/2f594db8765c0e66f29002b8bf262698177bf718f70c7559eb232806@%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance IPMC result: https://lists.apache.org/thread.html/19bf2061be6e6ad77c9f325b3bd8354665272b611eec87006e58d73a@%3Cgeneral.incubator.apache.org%3E
+
+- ServiceComb PMC acceptance vote: https://lists.apache.org/thread.html/8baf77f540cb0f1658050cf0002167562d4646ee9f6341aa4fd106dd@%3Cdev.servicecomb.apache.org%3E
+
+- ServiceComb PMC vote result: https://lists.apache.org/thread.html/29acc44f49470b71b0f57c0c0d93d5fe5481e1a9ebb57d635c8bb20a@%3Cdev.servicecomb.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-239
diff --git a/content/servicecomb.md b/content/servicecomb.md
deleted file mode 100644
index f7de068..0000000
--- a/content/servicecomb.md
+++ /dev/null
@@ -1,211 +0,0 @@
-Title: Apache ServiceComb Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The ServiceComb project graduated on 2018-10-17</span>
-
-
-ServiceComb is a microservice framework that provides a set of tools and components to make development and deployment of cloud applications easier.
-
-
-
-- 2017-11-22 Project enters incubation.
-
-- 2017-03-26 ServiceComb Service Center 1.0.0-m1 is released.
-
-- 2017-03-26 ServiceComb Saga 0.1.0 is released.
-
-- 2017-04-02 ServiceComb Java Chassis 1.0.0-m1 is released.
-
-- 2018-06-08 New committer: Zheng yangyong
-
-- 2018-06-11 New committer: Li Dagang(Eric)
-
-- 2017-06-22 ServiceComb Service Center 1.0.0-m2 released
-
-- 2017-06-22 ServiceComb Java Chassis 1.0.0-m2 released
-
-- 2017-06-22 ServiceComb Saga 0.2.0 released
-
-- 2018-07-15 New committer: Feng Zheng
-
-- 2018-08-03 ServiceComb Service Center 1.0.0-m1 released
-
-- 2018-08-03 ServiceComb Java Chassis released
-
-- 2018-09-10 All Committer are part of PPMC
-
-
--  [ServiceComb Website](http://servicecomb.incubator.apache.org) 
-
-
--  [Community Pages](http://servicecomb.incubator.apache.org/developers/) 
-
-
--  [Current Users guide Documentation](http://servicecomb.incubator.apache.org/users/) 
-
-
--  [Releases](http://servicecomb.incubator.apache.org/release/) 
-
-
--  [Wiki](https://cwiki.apache.org/confluence/display/servicecomb) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://servicecomb.incubator.apache.org/](http://servicecomb.incubator.apache.org/)  |
-| . | wiki |  [Wiki](http://cwiki.apache.org/confluence/display/servicecomb)  |
-| Mailing list | issues |  `issues`  `@`  `servicecomb.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `servicecomb.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `servicecomb.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/SCB |
-| Source code | . | . |
-| . | incubator-servicecomb-java-chassis | https://github.com/apache/incubator-servicecomb-java-chassis.git |
-| . | incubator-servicecomb-service-center | https://github.com/apache/incubator-servicecomb-service-center.git |
-| . | incubator-servicecomb-saga | https://github.com/apache/incubator-servicecomb-saga.git |
-| . | incubator-servicecomb-docs | https://github.com/apache/incubator-servicecomb-docs.git |
-| . | incubator-servicecomb-website | https://github.com/apache/incubator-servicecomb-website.git |
-| Roster | Whimsy |  [ServiceComb Roster](https://whimsy.apache.org/roster/ppmc/servicecomb)  |
-| Mentors |  | . |
-| . | rvs | Roman Shaposhnik |
-| . | jbonofre | Jean-Baptiste Onofre |
-| . | tnachen | Timothy Chen |
-| Committers |  | . |
-| . | ningjiang | Ning(Willem) Jiang |
-| . | zhangqi | QiZhang |
-| . | seanyin | Xiang Yin |
-| . | wujimin | JiMin Wu |
-| . | liubao | Bao Liu |
-| . | asif | Mohammad Asif Siddiqui |
-| . | cuiyihua | Yihua Cui |
-| . | sukesh | Sukesh A C |
-| . | ericlee | Eric Lee |
-| . | zhengyangyong | Yangyong Zheng |
-| . | zhfeng | Zheng Feng |
-| Extra | . | . |
-
-
--  [ServiceComb Board Reports](https://whimsy.apache.org/board/minutes/servicecomb.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (2017-12-22)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-11-22 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-11-30 | Request DNS (first step after creating podling status page) |
-| 2017-12-06 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2017-12-05 | Request [git repositories](https://reporeq.apache.org/)  |
-| 2017-12-05 | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2017-12-05 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2017-12-05 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2017-12-22 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-12-06 | Subscribe all Mentors on the pmc and general lists. |
-| 2017-12-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2017-12-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2017-12-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2017-12-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-04-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-04-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-12-11 | Check that all active committers have submitted a contributors agreement. |
-| 2017-12-11 | Add all active committers in the relevant section above. |
-| 2017-12-11 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- Yes
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-- Yes
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-- Yes
diff --git a/content/servicemix.md b/content/servicemix.md
index 6e70107..a724055 100644
--- a/content/servicemix.md
+++ b/content/servicemix.md
@@ -1,164 +1,81 @@
-Title: ServiceMix Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
+Title: ServiceMix Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="graduated">The ServiceMix project graduated on 2007-09-19</span>
-
-
-The ServiceMix project is an ESB and component suite based on the Java Business Interface (JBI) standard - JSR 208.
+Apache ServiceMix is an open source distributed Enterprise Service Bus (ESB) and SOA toolkit built from the ground up on the semantics and APIs of the Java Business Integration (JBI) specification JSR 208.
 
 
 
-- 2005-12-09 Project announced publicly.
-
-- 2005-11-18 Project proposed and accepted for incubation in Apache.
-
-If the project website and code repository are not yet setup, use the following table:
+- Which PMC will be responsible for the code: Apache Geronimo PMC
 
 
-| item | type | reference |
-|---------------------------|---------------------------|--------------------------------|
-| Website | www |  [http://incubator.apache.org/servicemix/](http://incubator.apache.org/servicemix/)  |
-| Mailing list | dev | servicemix-dev@geronimo.apache.org |
-|  | users | servicemix-users@geronimo.apache.org |
-|  | commits | servicemix-commits@geronimo.apache.org |
-| Bug tracking | JIRA<br></br> |  [https://issues.apache.org/activemq/browse/SM](https://issues.apache.org/activemq/browse/SM) <br></br> |
-| Source code | SVN<br></br> |  [http://svn.apache.org/repos/asf/incubator/servicemix/](http://svn.apache.org/repos/asf/incubator/servicemix/) <br></br> |
-| Proposal | Wiki<br></br> |  [http://wiki.apache.org/incubator/ServiceMixProposal](http://wiki.apache.org/incubator/ServiceMixProposal) <br></br> |
-| Mentors |  | James Strachan |
-|  |  | Jason van Zyl |
-| Committers | adc | Alan D. Cabrera |
-|  | bsnyder | Bruce Snyder |
-|  | dain | Dain Sundstrom |
-|  | dandiep | Dan Diephouse |
-|  | dblevins | David Blevins |
-|  | gregw | Greg Wilkins |
-|  | chirino | Hiram Chirino |
-|  | jstrachan | James Strachan |
-|  | janb | Jan Bartel |
-|  | jvanzyl | Jason van Zyl |
-|  | jgenender | Jeff Genender |
-|  | aco | Adrian Co |
-|  | dflores | Darwin Flores |
-|  | foconer | Frederick Oconer |
-|  | gnodet | Guillaume Nodet |
-|  | jlim | Jonas Lim |
-|  | jgapuz | Joseph Gapuz |
-|  | pvillacorta | Patrick Villacorta |
-|  | pdodds | Philip Dodds |
-|  | rajdavies | Rob Davies |
+- Into which existing project/module: ServiceMix will go into its own project
 
 
-- 2005-12-12 Code base imported into the ASF Subversion repo
+- Officer or member managing donation: James Strachan
 
-- 2006-04-10 Currently preparing the ServiceMix 3.0 M1 milestone release
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2005-12-05 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2005-11-18 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2005-11-18 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-03-17 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-02-01 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2005-12-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
+| 2006-02-18 | Trademark, ServiceMix, assigned to ASF |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
 | 2006-02-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2005-12-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2005-12-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_  **DONE** 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2005-12-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2005-12-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
 
 | date | item |
 |------|------|
-| 2005-12-15 | Check that all active committers have submitted a contributors agreement. |
-| 2006-02-01 | Add all active committers in the STATUS file. |
-| 2005-12-15 | Ask root for the creation of committers' accounts on people.apache.org. |
+| 2006-01-20 | 
+Check that all active committers have a signed CLA on record.
 
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2005-12-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-12-05 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-03-22 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2005-12-12 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+svn log https://svn.codehaus.org/activemq/branches/activemq-4-0 | grep "r[0-9][0-9]* | " | sed "s/r[0-9][0-9]* | \(.*\) | .* | .*$/\1/" | sort | uniq
+All of the committers have a CLA on file at Apache. The following table maps the unix user names to real names:
 
 
-# Incubation {#Incubation}
+ | bsnyder | Bruce Snyder|
+ | chirino | Hiram Chirino|
+ | dandiep | Daniel Diephouse|
+ | foconer | Frederick OConer|
+ | gastaldi | George Gastaldi|
+ | gnt | Guillaume Nodet|
+ | gregw | Gregory Wilkins|
+ | janb | Jan Bartel|
+ | jgapuz | Joseph Gapuz|
+ | jlim | Jonas Lim|
+ | jstrachan | James Strachan|
+ | maguro | Alan Cabrera|
+ | myap | Merwin Yap|
+ | pdodds | Philip Dodds|
+ | rajdavies | Robert Davies|
+ |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
 
-These action items have to be checked for during the whole incubation process.
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
 
 
-## Collaborative Development {#Collaborative+Development}
 
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? **DONE** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) **DONE** 
-
-- Are project decisions being made in public by the committers? **DONE** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? **DONE** 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **DONE** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/shale-444-clay-plugin-for-eclipse.md b/content/shale-444-clay-plugin-for-eclipse.md
new file mode 100644
index 0000000..6c6b533
--- /dev/null
+++ b/content/shale-444-clay-plugin-for-eclipse.md
@@ -0,0 +1,70 @@
+Title: Shale Clay Plugin for Eclipse Intellectual Property (IP) Clearance Status
+
+
+The Shale Clay Plugin for the Eclipse IDE is a visual editor targeted at creating and maintaining Shale Clay component meta-data. The Shale Clay XML component meta-data is used to create JavaSever Faces (JSF) managed views. The plugin supports auto-detection of Clay component definitions in an Eclipse workspace. It allows XML component definitions to be extended through drag-and-drop from a component palette. It also provides auto-completion of managed bean names and methods. The tool supports both visual and text modes.
+
+
+The plugin is a significant contribution donated by Ryan Wynn and can be found attached to the [SHALE-444 JIRA ticket](https://issues.apache.org/struts/browse/SHALE-444) . The codebase consists of a single Eclipse plugin project that has dependencies with several Apache Commons libraries besides the shale-core and shale-clay libraries.
+
+
+
+- The Shale PMC will be responsible for the code contribution.
+
+
+- We foresee this codebase becoming a separate project within the tools offerings under the Shale community.
+
+
+- Officer or member managing donation:
+
+
+- Wendy Smoak (ASF Member)
+
+- Gary VanMatre (Shale PMC)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2007-07-11 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. (No existing product. Complies with Eclipse Foundation naming guidelines.) |
+
+MD5 sum for donated software: b038c63fced4b25024c5d41f995296e9 .
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-07-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. (ICLA on file from Ryan Wynn.) |
+| 2007-07-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _N/A - single contributor with ICLA on file._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Ryan Wynn_ 
+
+| date | item |
+|------|------|
+| 2007-07-11 | Check that all active committers have a signed CLA on record. |
+| 2007-07-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| N/A | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. (N/A - all included items are under the Apache license.) |
+| 2007-07-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [[VOTE] Accept the Shale Clay Plugin for Eclipse contribution](http://www.nabble.com/-VOTE--Accept-the-Shale-Clay-Plugin-for-Eclipse-contribution-t4065440.html) 
diff --git a/content/shardingsphere-elasticjob.md b/content/shardingsphere-elasticjob.md
new file mode 100644
index 0000000..7466bd0
--- /dev/null
+++ b/content/shardingsphere-elasticjob.md
@@ -0,0 +1,65 @@
+Title: ShardingSphere ElasticJob Intellectual Property (IP) Clearance Status
+
+
+A distributed scheduling framework has been developed outwith the ASF and the developers would like to contribute it to the Apache ShardingSphere project.
+
+
+
+- The Apache ShardingSphere PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache ShardingSphere project, replace the existing scheduling framework.
+
+
+- Liang Zhang (Apache ShardingSphere V.P.) will be managing this contribution.
+
+ _Completed tasks are shown by the completion date (2020-05-28)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 22 Apr, 2019 | Source codebase is from this [GitHub commit](https://github.com/elasticjob/elastic-job-lite/commit/c7ab2b4f652dab0920a7174e296e443ec8ec3532)  **Confirmed.**  |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 28 May 2020 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. **Confirmed, grant via email with PDF sent from Liang Zhang of ShardingSphere V.P. at 12:53 on 28 May 2020, acknowledged by Craig L Russell ASF Secretary at 06:26 on 30 May 2020.**  |
+
+Identify name recorded for software grant: **ShardingSphere ElasticJob** 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Dangdang Information Technology CO.,Ltd. (SGA on file)
+
+- Liang Zhang (ICLA on file)
+
+- Hao Cao (ICLA on file)
+
+- Hongtao Gao (ICLA on file)
+
+- Guangyun Li (ICLA on file)
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- Donation Proposal: https://cwiki.apache.org/confluence/display/SHARDINGSPHERE/ElasticJob+Donation+Proposal
+
+- ShardingSphere PMC acceptance vote: https://lists.apache.org/thread.html/r427b355c63376386e6444cb7849e77a1ce16877d5b0bee62fffca77a%40%3Cdev.shardingsphere.apache.org%3E
+
+- ShardingSphere PMC vote result: https://lists.apache.org/thread.html/rbbc1d5fa7bf69d8e75476154d635774cb432943aade21d7a01eba11c%40%3Cdev.shardingsphere.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-237
diff --git a/content/shardingsphere.md b/content/shardingsphere.md
deleted file mode 100644
index ad8785a..0000000
--- a/content/shardingsphere.md
+++ /dev/null
@@ -1,197 +0,0 @@
-Title: Apache ShardingSphere Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The ShardingSphere project graduated on 2020-04-16</span>
-
-
-ShardingSphere related to a database clustering system providing data sharding, distributed transactions, and distributed database management.
-
-
-
-- 2020-01-13 ShardingSphere 4.0.0 released
-
-- 2020-01-08 New committer: Jiang Xiaofeng
-
-- 2020-12-12 New committer: Dong ZongLei
-
-- 2020-12-06 New committer: Ouyang Wen
-
-- 2019-11-26 ShardingSphere 4.0.0-RC3 released
-
-- 2020-11-13 New committer: Yan Zhiyi
-
-- 2020-10-22 New committer: Li Ya
-
-- 2020-09-24 New committer: Wang Qi
-
-- 2019-09-20 New committer: Wang Guangyuan
-
-- 2019-09-17 New committer: Sun Haisheng
-
-- 2020-09-12 New committer: Zhao Yanan
-
-- 2019-09-04 ShardingSphere officially docker repositories have transfered to Apache Docker Hub organization
-
-- 2019-08-23 ShardingSphere 4.0.0-RC2 released
-
-- 2019-04-21 ShardingSphere 4.0.0-RC1 released
-
-- 2019-02-02 New PPMC: Yang Yi
-
-- 2019-02-02 New PPMC: Du Hongjun
-
-- 2019-01-19 ShardingSphere website on ASF
-
-- 2018-11-10 Project enters incubation
-
-
-- ShardingSphere Website - https://shardingsphere.incubator.apache.org
-
-
--  [Community Pages](https://shardingsphere.incubator.apache.org/community/) 
-
-
--  [Current Documentation](https://shardingsphere.apache.org/document/current/) 
-
-
--  [Releases](https://shardingsphere.apache.org/document/current/en/downloads/) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://shardingsphere.incubator.apache.org/](https://shardingsphere.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `shardingsphere.incubator.apache.org`  |
-| . | private |  `private`  `@`  `shardingsphere.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `shardingsphere.incubator.apache.org`  |
-| Source code | . | . |
-| . | incubator-shardingsphere | https://github.com/apache/incubator-shardingsphere.git |
-| . | incubator-shardingsphere-example | https://github.com/apache/incubator-shardingsphere-example.git |
-| . | incubator-shardingsphere-doc | https://github.com/apache/incubator-shardingsphere-doc.git |
-| Roster | Whimsy |  [ShardingSphere Roster](https://whimsy.apache.org/roster/ppmc/shardingsphere)  |
-| Mentors |  | see [ShardingSphere Roster Mentors](https://whimsy.apache.org/roster/ppmc/shardingsphere#mentors)  |
-| PMC and Committers |  | see [ShardingSphere Roster PMC + Committers](https://whimsy.apache.org/roster/ppmc/shardingsphere#ppmc)  |
-
-
--  [ShardingSphere Board Reports](https://whimsy.apache.org/board/minutes/shardingsphere.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (2018-11-10)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-11-10 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2018-11-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-11-18 | Request DNS (first step after creating podling status page) |
-| 2018-11-18 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2019-01-16 | Request [git repositories](https://reporeq.apache.org/)  |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| N/A | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2019-06-03 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| N/A | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file ' [incubator/contents/projects/shardingsphere.xml](https://svn.apache.org/repos/asf/incubator/public/trunk/content/projects/shardingsphere.xml) ' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2019-01-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2019-01-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2019-04-21 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2019-04-21 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-09-18 | Check that all active committers have submitted a contributors agreement. |
-| 2019-09-18 | Add all active committers in the relevant section above. |
-| 2019-09-18 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- YES
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-- YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/shenyu.md b/content/shenyu.md
deleted file mode 100644
index c1e9d13..0000000
--- a/content/shenyu.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Title: ShenYu Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-ShenYu is a high performance Microservices API gateway in Java ecosystem, compatible with a variety of mainstream framework systems, it supports hot plugins loading.
-
-
-
-- 2021-05-03 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://shenyu.apache.org/](http://shenyu.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `shenyu.apache.org`  |
-| . | commits |  `commits`  `@`  `shenyu.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | . | . |
-| incubator-shenyu |  [https://github.com/apache/incubator-shenyu](https://github.com/apache/incubator-shenyu/)  |
-| incubator-dashboard |  [https://github.com/apache/incubator-shenyu-dashboard](https://github.com/apache/incubator-shenyu-dashboard)  |
-| incubator-shenyu-website |  [https://github.com/apache/incubator-shenyu-website](https://github.com/apache/incubator-shenyu-website)  |
-| Roster | Whimsy |  [ShenYu Roster](https://whimsy.apache.org/roster/ppmc/shenyu)  |
-
-
--  [ShenYu Board Reports](https://whimsy.apache.org/board/minutes/shenyu.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2021-05-20 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/shindig.md b/content/shindig.md
deleted file mode 100644
index 794ee99..0000000
--- a/content/shindig.md
+++ /dev/null
@@ -1,160 +0,0 @@
-Title: Shindig Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-The Apache Shindig project has completed incubation (2009-01-21). Please go to the main project site :
-
-
- [http://shindig.apache.org/](http://shindig.apache.org/) 
-
-
-<span class="graduated">The Shindig project graduated on 2010-01-21</span>
-
-
-Shindig is an OpenSocial container
-
-
-
-- 2009-08-26 New committer: Eiji Kitamura
-
-- 2009-07-17 New committer: Pan Jie
-
-- 2009-02-05 New committer: Adam Winer
-
-- 2009-02-05 New committer: Chico Charlesworth
-
-- 2009-02-05 New committer: Vincent Siveton
-
-- 2008-06-30 New committer: Ian Boston
-
-- 2008-05-30 New committer: Brian Eaton
-
-- 2008-05-12 New committer: Daniel Peterson
-
-- 2008-04-11 New committer: Chris Chabot
-
-- 2008-01-04 New committer: Louis Ryan
-
-
--  [Shindig website](http://incubator.apache.org/shindig/) 
-
--  [Shindig on Confluence](http://cwiki.apache.org/SHINDIGxSITE) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/shindig/](http://incubator.apache.org/shindig/)  |
-| Mailing list | dev |  `shindig-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | commits |  `shindig-commits`  `@`  `incubator.apache.org`  |
-| Mailing list | issues |  `shindig-issues`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/SHINDIG](http://issues.apache.org/jira/browse/SHINDIG)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/shindig](https://svn.apache.org/repos/asf/incubator/shindig)  |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007-12-03 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2007-12-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2007-12-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2007-12-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2007-12-10 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-06-09 | Tell Mentors to track progress in the file 'incubator/projects/shindig.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2007-12-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2007-12-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-01-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-01-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-12-12 | Check that all active committers have submitted a contributors agreement. |
-| 2007-12-12 | Add all active committers in the STATUS file. |
-| 2007-12-12 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-12-03 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-12-03 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-12-03 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2007-12-12 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2008-06-06 | Full OpenSocial 0.7 compliance |
-| ....-..-.. | OpenSocial 0.8 compliance |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/shiro.md b/content/shiro.md
deleted file mode 100644
index ff1f636..0000000
--- a/content/shiro.md
+++ /dev/null
@@ -1,191 +0,0 @@
-Title: Apache Shiro Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Shiro project graduated on 2010-09-22</span>
-
-
-Shiro is a powerful and flexible open-source Java security framework that cleanly handles authentication, authorization, enterprise session management and cryptography. Shiro entered the Apache Incubator in June, 2008.
-
-
-
-- 2010-08-16 Project starts the graduation vote!
-
-- 2010-08-16 Project releases version 1.0.0-incubating
-
-- 2009-09-18 New Committer: Kalle Korhonen
-
-- 2009-06-10 Project changes its name from Ki to Shiro.
-
-- 2009-03-04 Project changes its name from JSecurity to Ki.
-
-- 2008-05-20 Project enters incubation.
-
-
--  [Shiro ASF Project Official Website](http://incubator.apache.org/shiro/) 
-
-
--  [How to contribute](http://incubator.apache.org/shiro/how-to-contribute.html) 
-
-
--  [Project status](http://svn.apache.org/repos/asf/incubator/shiro/STATUS) 
-
-Project info in a nutshell:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Official Website | www |  [http://incubator.apache.org/shiro/](http://incubator.apache.org/shiro/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/SHIRO](http://cwiki.apache.org/confluence/display/SHIRO)  |
-| Developers Mailing List | dev |  [shiro-dev@incubator.apache.org](mailto:shiro-dev-subscribe@incubator.apache.org)  |
-| Commits Mailing List | commits |  [shiro-commits@incubator.apache.org](mailto:shiro-commits-subscribe@incubator.apache.org)  |
-| User Mailing List | user |  [shiro-user@incubator.apache.org](mailto:shiro-user-subscribe@incubator.apache.org)  |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/browse/SHIRO](http://issues.apache.org/jira/browse/SHIRO)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/incubator/shiro/](http://svn.apache.org/repos/asf/incubator/shiro/)  |
-| Mentors | adc | Alan D. Cabrera |
-|  | pzf | Paul Fremantle |
-|  | elecharny | Emmanuel Lecharny |
-|  | clr | Craig Russell |
-| Committers | aditzel | Allan Ditzel |
-|  | jhaile | Jeremy Haile |
-|  | lhazlewood | Les Hazlewood |
-|  | pledbrook | Peter Ledbrook |
-|  | tveil | Tim Veil |
-
-
--  [July 2008](http://wiki.apache.org/incubator/July2008) 
-
--  [August 2008](http://wiki.apache.org/incubator/August2008) 
-
--  [September 2008](http://wiki.apache.org/incubator/September2008) 
-
--  [October 2008](http://wiki.apache.org/incubator/October2008) 
-
--  [November 2008](http://wiki.apache.org/incubator/November2008) 
-
--  [January 2009](http://wiki.apache.org/incubator/January2009) 
-
--  [April 2009](http://wiki.apache.org/incubator/April2009) 
-
--  [July 2009](http://wiki.apache.org/incubator/July2009) 
-
--  [October 2009](http://wiki.apache.org/incubator/October2009) 
-
--  [January 2010](http://wiki.apache.org/incubator/January2010) 
-
--  [April 2010](http://wiki.apache.org/incubator/April2010) 
-
--  [July 2010](http://wiki.apache.org/incubator/July2010) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-05-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-06-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-06-19 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| DONE | Tell Mentors to track progress in the file 'incubator/projects/shiro.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-05-25 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-09-18 | Check that all active committers have submitted a contributors agreement. |
-| 2010-07-13 | Add all active committers in the STATUS file. |
-| 2008-06-16 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-06-19 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-06-11 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-06-02 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
- **yes** 
-
-
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
- **yes** 
-
-
-
-- Are project decisions being made in public by the committers?
- **yes** 
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
- **yes** 
-
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
- **yes** 
-
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Project is graduating to a new PMC. Has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/singa.md b/content/singa.md
deleted file mode 100644
index 7c79921..0000000
--- a/content/singa.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: SINGA Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status during incubation. For more details, please visit the project website.
-
-
-<span class="graduated">The SINGA project graduated on 2019-10-16</span>
-
-
-SINGA is a distributed, scalable platform for deep learning.
-
-
-
-- 2015-03-17 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://singa.incubator.apache.org/](http://singa.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `singa.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `singa.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/singa](https://issues.apache.org/jira/browse/singa)  |
-| Source code | Git |  [https://github.com/apache/incubator-singa](https://github.com/apache/incubator-singa)  |
-| Mentors | gates | Alan Gates |
-| . | tdunning | Ted Dunning |
-| . | thejas | Thejas Nair |
-| Committers | wangwei | Wang Wei |
-| . | dinhtta | Anh Dinh |
-| . | wangsh | Wang Sheng |
-| . | jinyang | Jinyang Gao |
-| . | kaiping | Zheng Kaiping |
-| . | zhaojing | Luo Zhaojing |
-| . | zhongle | Xie Zhongle |
-| . | ooibc | Ooi Beng Chin |
-| . | tankl | Tan Kian-Lee |
-| . | cg | Chen Gang |
-| . | moaz | Moaz Reyad |
-
-
--  [May 2015](http://wiki.apache.org/incubator/May2015) 
-
-
--  [April 2015](http://wiki.apache.org/incubator/April2015#SINGA) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-04-03 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-03-31 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-03-31 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-03-31 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-03-31 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-04-18 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-03-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-03-01. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-03-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-04-03 | Check that all active committers have submitted a contributors agreement. |
-| 2015-04-17 | Add all active committers in the STATUS file. |
-| 2015-04-07 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/sirona.md b/content/sirona.md
deleted file mode 100644
index b0abb45..0000000
--- a/content/sirona.md
+++ /dev/null
@@ -1,140 +0,0 @@
-Title: Sirona Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Sirona podling retired on 2017-07-03</span>
-
-
-Commons-monitoring aims to provide a simple but extensible monitoring solution for Java applications..
-
-
-
-- 2013-12-06: First release 0.1-incubating done
-
-- 2013-10-22: JIRA, mailing lists, SVN space created.
-
-- 2013-10-15: Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://sirona.incubator.apache.org](http://sirona.incubator.apache.org/)  |
-| . | wiki | ? |
-| Mailing list | dev |  `dev`  `@`  `sirona.incubator.apache.org`  |
-| . | user |  `user`  `@`  `sirona.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `sirona.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/SIRONA](https://issues.apache.org/jira/browse/SIRONA)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/sirona/](https://svn.apache.org/repos/asf/incubator/sirona/)  |
-| Mentors | olamy | Olivier Lamy |
-| . | hgomez | Henri Gomez |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | vanto | Tammo van Lessen |
-| . | struberg | Mark Struberg |
-| Committers | rmannibucau | Romain Manni-Bucau |
-| . | jlmonteiro | Jean-Louis Monteiro |
-| . | fredzh | Fred Zhang |
-| . | TBD | Fabrice Bacchella |
-
-
-- 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-10-18 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-10-18 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ? | Ask infrastructure to set up wiki (Confluence, Moin). |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-10-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-10-20 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-11-05 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-10-20 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-10-20 | Check that all active committers have submitted a contributors agreement. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - YES
-
-- Are project decisions being made in public by the committers? - YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? - ?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? - ?
diff --git a/content/sis.md b/content/sis.md
deleted file mode 100644
index 0e4c743..0000000
--- a/content/sis.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The SIS project graduated on 2012-09-19</span>
-
-
-The Spatial Information System (SIS) Project is a toolkit that spatial information system builders or users can leverage to build applications containing location context.
-
-
-
-- 2010-11-09 First RC produced. VOTE'ing now.
-
-- 2010-09-01 New committer: Nga Chung.
-
-- 2010-02-21 Project enters incubation.
-
-
--  [Spatial Information Systems project website](http://incubator.apache.org/sis/) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/sis/](http://incubator.apache.org/sis/)  |
-| . | wiki | . |
-| Mailing list | dev |  `sis-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `sis-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `sis-commits`  `@`  `incubator.apache.org`  |
-| . | private |  `sis-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA | https://issues.apache.org/jira/browse/SIS |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/sis/](https://svn.apache.org/repos/asf/incubator/sis/)  |
-| Mentors | greddin | Greg Reddin |
-| . | joes | Joe Schaefer |
-| . | kevan | Kevan Miller |
-| Committers | pjaol | Patrick O'Leary |
-| . | nchung | Nga Chung |
-| . | mattmann | Chris A. Mattmann |
-| . | smcclees | Sean McCleese |
-| . | pramirez | Paul Ramirez |
-| Extra | Proposal |  [SpatialProposal](http://wiki.apache.org/incubator/SpatialProposal)  |
-
-
--  [August 2010](http://wiki.apache.org/incubator/August2010#SIS) .
-
--  [June 2010](http://wiki.apache.org/incubator/June2010#SIS) .
-
--  [May 2010](http://wiki.apache.org/incubator/May2010#SIS) .
-
--  [April 2010](http://wiki.apache.org/incubator/April2010#SIS) .
-
--  [March 2010](http://wiki.apache.org/incubator/March2010#SIS) .
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-09-11 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. Searched [here](http://tess2.uspto.gov/bin/showfield?f=toc&amp;state=4009%3Aio611u.1.1&amp;p_search=searchss&amp;p_L=50&amp;BackReference=&amp;p_plural=yes&amp;p_s_PARA1=&amp;p_tagrepl~%3A=PARA1%24LD&amp;expr=PARA1+AND+PARA2&amp;p_s_PARA2=SIS&amp;p_tagrepl~%3A=PARA2%24COMB&amp;p_op_ALL=AND&amp;a_default=search&amp;a_search=Submit+Query&amp;a_search=Submit+Query) and didn't find any software called SIS. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-02-26 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-02-26 | Ask infrastructure to set up and archive mailing lists ( [INFRA-2512](https://issues.apache.org/jira/browse/INFRA-2512) ). |
-| 2010-02-26 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2010-10-03 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-02-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-26-02 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-26-02 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-26-02 | Tell Mentors to track progress in the file 'incubator/projects/sis.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-25-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-25-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-09-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-09-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-02-21 | Check that all active committers have submitted a contributors agreement. |
-| 2010-02-21 | Add all active committers in the STATUS file. |
-| 2010-25-02 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/skywalking-rocketbot-ui.md b/content/skywalking-rocketbot-ui.md
new file mode 100644
index 0000000..f575a73
--- /dev/null
+++ b/content/skywalking-rocketbot-ui.md
@@ -0,0 +1,77 @@
+Title: SkyWalking RocketBot UI Intellectual Property (IP) Clearance Status
+
+
+A new UI of SkyWalking has been developed outwith the ASF and the developers would like to contribute it to the Apache SkyWalking project.
+
+
+
+- The Apache SkyWalking PMC will be responsible for the code.
+
+
+- It will be integrated into the Apache SkyWalking project, replace the existing UI.
+
+
+- Sheng Wu (Apache SkyWalking V.P.) will be managing this contribution.
+
+ _Completed tasks are shown by the completion date (2019-04-28)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 22 Apr, 2019 | Source codebase is from this [GitHub commit](https://github.com/TinyAllen/rocketbot/tree/9b66a8606f41d15b0c040506a703ebd82665d48b)  **Confirmed.**  |
+
+
+- Contributed software: https://issues.apache.org/jira/browse/INCUBATOR-237
+
+- MD5 sum for donated software: fd05ed7e5ffae52ac1b9763cbe0e9d71
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 23 Apr 2019 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. **Confirmed, grant via email with PDF sent from Grissom Wang CAO of DaoCloud at 03:43 on 22 Apr 2019, acknowledged by Matt Sicker ASF Secretary at 16:14 on 23 Apr 2018.**  |
+| 25 Apr 2019 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. **Confirmed. ASF header added and checked.**  |
+
+Identify name recorded for software grant: **SkyWalking RocketBot UI** 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- DaoCloud Network Technology CO.,Ltd. (SGA on file)
+
+- Yao Wang (ICLA on file)
+
+- Jian Tan (ICLA on file)
+
+- Zhenxu Ke (ICLA on file)
+
+| date | item |
+|------|------|
+| 23 Apr 2019 | Check that all active committers have a signed CLA on record. **Confirmed, SGA and ICLAs on file as noted above.**  |
+| 25 Apr 2018 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. **Confirmed, there is no 3rd-party code included with the source distribution, and 3rd-party code downloaded and use as part of the build complies with ASF license policy (mainly MIT and BSD licenses).**  |
+| 25 Jul 2018 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. **Confirmed, third party dependencies reviewed and are compliant.**  |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs and references:
+
+
+
+- IP Clearance request: https://lists.apache.org/thread.html/8360e530a4c1af90e29796aef8ee4cc9800bf17af18ea7bb7d6af7f8@%3Cgeneral.incubator.apache.org%3E
+
+- IP Clearance result: https://lists.apache.org/thread.html/ab51c11060047e6a93a861f40e4afacdacae6f98ef88620dd4b38c58@%3Cgeneral.incubator.apache.org%3E
+
+- SkyWalking PMC acceptance vote: https://lists.apache.org/thread.html/5417e903e110d11b363d93c7c5baf32fe48ce6c439d3d5ec2eb46ec9@%3Cdev.skywalking.apache.org%3E
+
+- SkyWalking PMC vote result: https://lists.apache.org/thread.html/012809090092459b910cc7098d88caa59631d8fc5e50bf3e76f7df1c@%3Cdev.skywalking.apache.org%3E
+
+- Jira issue for tracking the contribution: https://issues.apache.org/jira/browse/INCUBATOR-237
diff --git a/content/skywalking.md b/content/skywalking.md
deleted file mode 100644
index 64abec1..0000000
--- a/content/skywalking.md
+++ /dev/null
@@ -1,179 +0,0 @@
-Title: Apache SkyWalking Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The SkyWalking project graduated on 2019-04-17</span>
-
-
-Skywalking is an APM (application performance monitor), especially for microservice, Cloud Native and container-based architecture systems. Support observing and monitoring system from different sources, such as distributed tracing agents/SDKs, through Service Mesh telemetry data.
-
-
-
-- 2019-02-17 SkyWalking officially docker repositories have transfered to Apache Docker Hub organization.
-
-- 2019-01-29 SkyWalking 6.0.0-GA released. SkyWalking 6 core is production ready.
-
-- 2018-12-25 SkyWalking 6.0.0-beta released. New protocols for distributed tracing are provided and recommended to update.
-
-- 2018-11-14 SkyWalking 6.0.0-alpha released. Service mesh telemetry data format, including Istio telemetry format, are supported
-
-- 2018-10-29 Podling name search complete. [JIRA Ticket](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-151) 
-
-- 2018-10-17 SkyWalking 5.0.0-GA released
-
-- 2018-09-12 SkyWalking 5.0.0-RC2 released
-
-- 2018-07-28 New Mentor Ignasi Barrera added
-
-- 2018-07-13 Additional git repo added: incubator-skywalking-oal-tool
-
-- 2018-07-11 SkyWalking 5.0.0-beta2 released
-
-- 2018-05-23 SkyWalking 5.0.0-beta released
-
-- 2018-04-03 SkyWalking 5.0.0-alpha released
-
-- 2018-01-14 SkyWalking website on ASF
-
-- 2017-12-08 Project enters incubation
-
-
-- SkyWalking Website - http://skywalking.incubator.apache.org
-
-
-- SkyWalking Twitter - https://twitter.com/AsfSkyWalking
-
-
-- The project status file is [here](https://svn.apache.org/repos/asf/incubator/public/trunk/content/projects/skywalking.xml) .
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://skywalking.incubator.apache.org/](http://skywalking.incubator.apache.org/)  |
-| . | dev |  `dev`  `@`  `skywalking.incubator.apache.org`  |
-| Mailing list | private |  `private`  `@`  `skywalking.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `skywalking.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `skywalking.incubator.apache.org`  |
-| Bug tracking | . | https://github.com/apache/incubator-skywalking/issues |
-| Source code | . | . |
-| . | incubator-skywalking | https://github.com/apache/incubator-skywalking.git |
-| . | incubator-skywalking-ui | https://github.com/apache/incubator-skywalking-ui.git |
-| . | incubator-skywalking-oal-tool | https://github.com/apache/incubator-skywalking-oal-tool.git |
-| . | incubator-skywalking-data-collect-protocol | https://github.com/apache/incubator-skywalking-data-collect-protocol.git |
-| . | incubator-skywalking-query-protocol | https://github.com/apache/incubator-skywalking-query-protocol.git |
-| . | incubator-skywalking-docker | https://github.com/apache/incubator-skywalking-docker.git |
-| . | incubator-skywalking-kubernetes | https://github.com/apache/incubator-skywalking-kubernetes.git |
-| Roster | Whimsy |  [SkyWalking Roster](https://whimsy.apache.org/roster/ppmc/skywalking)  |
-| Mentors |  | see [SkyWalking Roster Mentors](https://whimsy.apache.org/roster/ppmc/skywalking#mentors)  |
-| PMC and Committers |  | see [SkyWalking Roster PMC + Committers](https://whimsy.apache.org/roster/ppmc/skywalking#ppmc)  |
-
-
--  [SkyWalking Board Reports](https://whimsy.apache.org/board/minutes/skywalking.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-12-08 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2017-12-10 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-12-08 | Request DNS (first step after creating podling status page). ref: INFRA-15628 |
-| 2017-12-10 | Request [Mailing Lists](https://selfserve.apache.org/)  |
-| 2017-12-10 | Request [gitbox repositories. ref: INFRA-15649](https://gitbox.apache.org/)  |
-| 2017-12-15 | Grant the committers karma (corresponding github apache team). ref: INFRA-15649 |
-| 2017-12-15 | Migrate the project to our infrastructure. ref: INFRA-15649 |
-| 2018-01-18 | Migrate the website to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2017-12-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2018-01-18 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2018-01-18 | Tell Mentors to track progress in the file ' [incubator/contents/projects/skywalking.xml](https://svn.apache.org/repos/asf/incubator/public/trunk/content/projects/skywalking.xml) ' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-04-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2018-04-03 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2018-04-03 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2018-04-03 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-12-10 | Check that all active committers have submitted a contributors agreement. |
-| 2017-12-08 | Add all active committers in the relevant section above. |
-| 2017-12-15 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/slider-koya.md b/content/slider-koya.md
new file mode 100644
index 0000000..5d03291
--- /dev/null
+++ b/content/slider-koya.md
@@ -0,0 +1,68 @@
+Title: Kafka on YARN (KOYA) Codebase Intellectual Property (IP) Clearance Status
+
+
+Kafka on YARN (KOYA) is an "app-package" built for use with Apache Slider (incubating). An app-package is a bundle which Slider can automatically deploy and manage on top of YARN. The KOYA app-package provides the ability deploy and manage Apache Kafka instances on top of YARN.
+
+
+
+- Which PMC will be responsible for the code: Apache Slider PMC
+
+
+- Into which existing project/module: Apache Slider
+
+
+- Officer or member managing donation: Josh Elser (elserj)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2016-01-16 | https://github.com/apache/incubator-slider/pull/3 or http://people.apache.org/~elserj/KOYA-grant.patch |
+
+MD5 or SHA1 sum for donated software: 8bfc66150b0ef6fc3f1f962e0878f0ae ( _sha1sum_ ), 7ecbdfcb8064e65f51fe25f849a9d141373add20 ( _git_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2016-01-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2016-01-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Thomas Weise
+
+- Siyuan Hua
+
+- Jean-Baptiste Note
+
+- Datatorrent Inc.
+
+| date | item |
+|------|------|
+| 2016-01-16 | Check that all active committers have a signed CLA on record. jbnote does not have ICLA on file and has been unresponsive to attempts to obtain one. Code was already licensed under ASLv2 so this is being bypassed. |
+| 2015-11-14 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-11-14 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-11-14 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Incubator General: http://mail-archives.apache.org/mod_mbox/incubator-general/201601.mbox/%3C569E91B0.2000602%40apache.org%3E
diff --git a/content/slider.md b/content/slider.md
deleted file mode 100644
index ac78439..0000000
--- a/content/slider.md
+++ /dev/null
@@ -1,202 +0,0 @@
-Title: Slider Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Slider podling retired on 2018-05-24</span>
-
-
-Slider is a collection of tools and technologies to package, deploy, and manage long running applications on Apache Hadoop YARN clusters.
-
-
-
-- 2018-05-24 Project retired.
-
-- 2018-02-21 New committer Kyungwan Nam.
-
-- 2015-07-07 New committer Thomas Liu.
-
-- 2015-05-18 Release version 0.80.0
-
-- 2015-03-31 Release version 0.70.1
-
-- 2015-02-19 Release version 0.61.0
-
-- 2014-11-24 Release version 0.60.0
-
-- 2014-09-22 New committer Gour Saha.
-
-- 2014-07-21 Release version 0.40.
-
-- 2014-06-02 Release version 0.30.
-
-- 2014-04-29 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://slider.incubator.apache.org/](http://slider.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `slider.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `slider.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/SLIDER](https://issues.apache.org/jira/browse/SLIDER)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-slider.git](https://gitbox.apache.org/repos/asf/incubator-slider.git)  |
-| Mentors | vinodkv | Vinod Kumar Vavilapalli |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | mahadev | Mahadev Konar |
-| . | acmurthy | Arun Murthy |
-| . | ddas | Devaraj Das |
-| Committers | stevel | Steve Loughran |
-| . | billie | Billie Rinaldi |
-| . | tedyu | Ted Yu |
-| . | elserj | Josh Elser |
-| . | smohanty | Sumit Mohanty |
-| . | jmaron | Jon Maron |
-| . | gourksaha | Gour Saha |
-| . | yuliu | Thomas (Yu) Liu |
-| . | kwnam | Kyungwan Nam |
-
-
--  [November 2017](https://wiki.apache.org/incubator/November2017) 
-
--  [August 2017](https://wiki.apache.org/incubator/August2017) 
-
--  [June 2017](https://wiki.apache.org/incubator/June2017) 
-
--  [February 2017](https://wiki.apache.org/incubator/February2017) 
-
--  [November 2016](https://wiki.apache.org/incubator/November2016) 
-
--  [August 2016](https://wiki.apache.org/incubator/August2016) 
-
--  [May 2016](https://wiki.apache.org/incubator/May2016) 
-
--  [February 2016](https://wiki.apache.org/incubator/February2016) 
-
--  [November 2015](https://wiki.apache.org/incubator/November2015) 
-
--  [September 2015](https://wiki.apache.org/incubator/September2015) 
-
--  [May 2015](https://wiki.apache.org/incubator/May2015) 
-
--  [February 2015](https://wiki.apache.org/incubator/February2015) 
-
--  [November 2014](https://wiki.apache.org/incubator/November2014) 
-
--  [August 2014](https://wiki.apache.org/incubator/August2014) 
-
--  [July 2014](https://wiki.apache.org/incubator/July2014) 
-
--  [June 2014](https://wiki.apache.org/incubator/June2014) 
-
--  [May 2014](https://wiki.apache.org/incubator/May2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2016-04-04 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) (See [PODLINGNAMESEARCH-47](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-47) .) |
-| 2014-04-29 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-04-30 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-05-01 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-05-02 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-05-01 | Ask infrastructure to set up site(svnpubsub). |
-| 2014-05-20 | Ask infrastructure to set up wiki (Confluence). |
-| 2014-05-20 | Ask infrastructure to set up git repo |
-| 2014-06-16 | set up Jenkins builds/tests |
-| 2014-05-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| 2014-04-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/slider.html' |
-| 2014-05-20 | allow issues@ apache and jenkins to email the dev mailing list |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2018-05-24 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-05-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-05-27 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-05-27 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-04-29 | Check that all active committers have submitted a contributors agreement. |
-| 2014-05-02 | Add all active committers in the STATUS file. |
-| 2014-04-29 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/sling-distribution-journal.md b/content/sling-distribution-journal.md
new file mode 100644
index 0000000..9aea6bb
--- /dev/null
+++ b/content/sling-distribution-journal.md
@@ -0,0 +1,77 @@
+Title: Sling Journal-based Content Distribution - Intellectual Property (IP) Clearance Status
+
+
+The Sling Journal-based Content Distribution module provides:
+
+- an implementation of SCD agents on top of a journal &amp; Journal messaging API
+
+- an implementation of the Journal messaging API on Apache Kafka
+
+- a definition of the messages exchanged by the SCD agents
+
+- integration tests for the journal distribution modules
+
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be pushed to a new GitBox repo.
+
+
+- Officer or member managing donation: Robert Munteanu (rombert@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2018-04-02 | source code is attached to the [SLING-8326](https://issues.apache.org/jira/browse/SLING-8326) ticket as org.apache.sling.distribution.journal.tar.gz, org.apache.sling.distribution.journal.kafka.tar.gz, org.apache.sling.distribution.journal.messages.tar.gz, and org.apache.sling.distribution.journal.it.tar.gz. |
+
+SHA1 sum for donated software: SHA1(org.apache.sling.distribution.journal.it.tar.gz) = bea916c7428dabf6dc66048087dbc3a4e0a7c610<br></br>SHA1(org.apache.sling.distribution.journal.kafka.tar.gz) = 9be2740511619bc91832c24f00e093ce61f1f128<br></br>SHA1(org.apache.sling.distribution.journal.messages.tar.gz) = c75bd3feafd335b23c169e57bb8b298ab25aed76<br></br>SHA1(org.apache.sling.distribution.journal.tar.gz) = b49dbcd182765b2351b9204df095a64ae2beb598<br></br>
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2018-04-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>Software grant registered as _private/documents/grants/adobe-sling-journal.pdf_ on 2018-04-04. |
+| 2018-04-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright: done, all source code files have the ASF header in the supplied archive. |
+
+Identify name recorded for software grant: _Adobe Systems_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems_ 
+
+| date | item |
+|------|------|
+| 2018-04-08 | Check that all active committers have a signed CLA on record. |
+| 2018-04-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2018-04-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2018-04-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on dev@sling: [Message-ID: &lt;CA+joGu_X7T9DP+BjQ5D2JNaNG8_x5Po=SZ_wNuF8m_73cOQOSw@mail.gmail.com&gt;](https://lists.apache.org/thread.html/57f74edccc459bd0554d7551c71675929057843d71477595b81ad65e@%3Cdev.sling.apache.org%3E) 
+
+- Vote result on dev@sling: [Message-ID: &lt;CA+joGu_zLrjJrfg5vkt9tm3ONvU37aF9f5K2C-RNPXKiwvyBqg@mail.gmail.com&gt;](https://lists.apache.org/thread.html/3e2becb103d938f6f7a588a26fa2a42a804f3617bf4f7907cf6226ff@%3Cdev.sling.apache.org%3E) 
+
+- Lazy consensus vote on general@incubator: [&lt;49efb401496dcd677c6eac6bfededd0161c6c738.camel@apache.org&gt;](https://lists.apache.org/thread.html/f5a226e8f6b28c07b3f9dace0bdc46e440de50bb3caece17bf00e114@%3Cgeneral.incubator.apache.org%3E) 
+
+- Lazy consensus vote result on general@incubator: [&lt;cf49a02c71cee9d1ba78b6488d741d6acf2fa366.camel@apache.org%gt;](https://lists.apache.org/thread.html/3ff33edd66d6dbd9c58276fed4d0461a6bc6e5e7627ef5a81b3dc8f0@%3Cgeneral.incubator.apache.org%3E) 
diff --git a/content/sling-dynamic-includes.md b/content/sling-dynamic-includes.md
new file mode 100644
index 0000000..3751b5e
--- /dev/null
+++ b/content/sling-dynamic-includes.md
@@ -0,0 +1,68 @@
+Title: Sling Dynamic Includes - Intellectual Property (IP) Clearance Status
+
+
+The Sling Dynamic Includes module replaces Sling presentation components with server-side include tags
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be placed under contrib
+
+
+- Officer or member managing donation: Bertrand Delacretaz (bdelacretaz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2016-03-30 | source code is attached to the SLING-5594 ticket as sling-dynamic-include.zip |
+
+SHA1 sum for donated software:<br></br>SHA1(sling-dynamic-include.zip)= b294fad33068dfe374fb1605b4fb3d98e1a8a1ce
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2016-03-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>Software grant registered as _private/documents/grants/cognifide-sling-dynamic-include.pdf_ on 2016-03-24. |
+| 2016-03-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright: done, all source code files have the ASF header in the supplied archive. |
+
+Identify name recorded for software grant: _Cognifide LTD_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Cognifide LTD_ 
+
+| date | item |
+|------|------|
+| 2016-03-30 | Check that all active committers have a signed CLA on record. |
+| 2016-03-30 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2016-03-30 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2016-03-30 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on dev@sling:Message-ID: &lt;CAEWfVJ=55P2V8OapwsmuX6KDCa4_uVk3uk2Fe+No3Tr+HqSepg@mail.gmail.com&gt;
+
+- Vote result on dev@sling: Message-ID: &lt;CAEWfVJ=8A1cd4fz0bELr226d=NNy1euNoWEbDNuGP4KaE4+4Xg@mail.gmail.com&gt;
+
+- Lazy consensus vote on general@incubator: Message-ID: &lt;CAEWfVJm4h6wLTa-AXxWi7WWbK_YEE_U1kcZSsrfgsBXX=YRgdw@mail.gmail.com&gt;
+
+- Lazy consensus vote result on general@incubator: Message-ID: &lt;CAEWfVJm+G+Lx2CHWt-TtLLZa7iV+Pbk=4yKqkoB8R988c_Q9GQ@mail.gmail.com&gt;
diff --git a/content/sling-hapi.md b/content/sling-hapi.md
new file mode 100644
index 0000000..b07245e
--- /dev/null
+++ b/content/sling-hapi.md
@@ -0,0 +1,68 @@
+Title: Sling HApi Tools - Intellectual Property (IP) Clearance Status
+
+
+The Sling HApi Tools provide a set of Hypermedia API tools for Sling
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be placed under contrib
+
+
+- Officer or member managing donation: Bertrand Delacretaz (bdelacretaz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-11-03 | source code is attached to the SLING-4513 ticket as hapi.tar.gz |
+
+SHA1 sum for donated software:<br></br>SHA1(hapi.tar.gz)= 321dd447d956d1766d9d3d36a056e02b7220afc2
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-08-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>Software grant registered as _private/documents/grants/adobe-hapi.pdf_ on August 13, 2015. |
+| 2015-08-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright: done, one of the donated files still had the Adobe copyright, this was not on purpose as confirmed by Andrei Dulvac in SLING-4778 - he has authorized the ASF to make the change after importing the code. |
+
+Identify name recorded for software grant: _Adobe Systems Inc._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems Inc._ 
+
+| date | item |
+|------|------|
+| 2015-08-17 | Check that all active committers have a signed CLA on record. |
+| 2015-08-17 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-08-17 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-08-17 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on dev@sling: Message-ID: &lt;CACfebH9p6J3CAyHOWUrgmcicBKV3Orb_kBOPNZDK3Gb9ePR9wA@mail.gmail.com&gt; on dev@sling.a.o
+
+- Vote result on dev@sling: Message-ID: &lt;CACfebH8153g6ZCyYhefuEyc+R78TwGfZYeaEGyvZiOZKpMu-SQ@mail.gmail.com&gt;
+
+- Lazy consensus vote on general@incubator: Message-ID: &lt;CAEWfVJkM46fjSeNt+1mZ=RyzTgRXA4rDBQhsgt6JNz=FDfEZ6w@mail.gmail.com&gt;
+
+- Lazy consensus vote result on general@incubator: Message-ID: &lt;CAEWfVJmUnqKYdF1TZmDtUCR3_VWSTyYvtOhnLaPCA6Uuw=4J6w@mail.gmail.com&gt;
diff --git a/content/sling-pipes.md b/content/sling-pipes.md
new file mode 100644
index 0000000..6d9ddae
--- /dev/null
+++ b/content/sling-pipes.md
@@ -0,0 +1,68 @@
+Title: Sling Pipes - Intellectual Property (IP) Clearance Status
+
+
+The Sling Pipes module provides a set of bulk content transformation tools for Sling
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be placed under contrib
+
+
+- Officer or member managing donation: Bertrand Delacretaz (bdelacretaz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-12-01 | source code is attached to the SLING-5134 ticket as sling-pipes.tar.gz |
+
+SHA1 sum for donated software:<br></br>SHA1(sling-pipes.tar.gz)= fdf8052425fa6a66199f8fd5bec8bf6f420983b1
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-12-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>Software grant registered as _private/documents/grants/nicolas-peltier-sling-pipes.pdf_ on 2015-11-09. |
+| 2015-12-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright: done, all source code files have the ASF header in the supplied archive. |
+
+Identify name recorded for software grant: _Nicolas Peltier_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Nicolas Peltier_ 
+
+| date | item |
+|------|------|
+| 2015-12-01 | Check that all active committers have a signed CLA on record. |
+| 2015-12-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-12-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-12-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on dev@sling: Message-ID: &lt;E60159F0-2A9C-4B27-A564-868F7ED87226@adobe.com&gt;
+
+- Vote result on dev@sling: Message-ID: &lt;2959710.xvZ5yjI4ld@madness&gt;
+
+- Lazy consensus vote on general@incubator: Message-ID: &lt;CAEWfVJkh-tzz6BsaNjdxmtbLMaaevAZz40qukn9ny45Ycyxr-Q@mail.gmail.com&gt;
+
+- Lazy consensus vote result on general@incubator: Message-ID: &lt;CAEWfVJ=-E=o0WZCHsRRLVnQK=FsVvh0UPrNzg3g9zNz6QJ-NRQ@mail.gmail.com&gt;
diff --git a/content/sling-query.md b/content/sling-query.md
new file mode 100644
index 0000000..f039c0f
--- /dev/null
+++ b/content/sling-query.md
@@ -0,0 +1,65 @@
+Title: SlingQuery Codebase Intellectual Property (IP) Clearance Status
+
+
+SlingQuery extension is a jQuery-inspired repository traversal tool for Apache Sling.
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be placed under contrib/extensions
+
+
+- Officer or member managing donation: Bertrand Delacretaz (bdelacretaz () apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-06-13 | source code provided as a zip package on SLING-3667 (https://issues.apache.org/jira/secure/attachment/12650338/sling-query.zip). |
+
+MD5 or SHA1 sum for donated software: SHA1= 4a0488f00ac81f6ce29eb87e15255418b39bd5a4
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-07-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2014-07-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright.<br></br> |
+
+Identify name recorded for software grant: _tomasz-rekawek-slinq-query.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Tomasz Rekawek_ 
+
+| date | item |
+|------|------|
+| 2014-07-22 | Check that all active committers have a signed CLA on record. |
+| 2014-07-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-07-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-07-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: Message-ID: &lt;CAEWfVJmWw_5F4SJjwRUVOLC3+G=BnBs89EuFmn5q+PcKo+Ow+w@mail.gmail.com&gt; on dev@sling.apache.org
+
+
+Incubator PMC vote result: Message-ID: &lt;CAEWfVJm_HdSbR7NZU9dDZ3x9o3=Ahny2CWvA_t+dTq57hTF0iw@mail.gmail.com&lt; on general@incubator.a.o
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy consensus is acceptable but not recommended._ 
diff --git a/content/sling-replication.md b/content/sling-replication.md
new file mode 100644
index 0000000..addcdeb
--- /dev/null
+++ b/content/sling-replication.md
@@ -0,0 +1,68 @@
+Title: Sling Replication Intellectual Property (IP) Clearance Status
+
+
+The Sling replication module allows resources to be replicated between Sling instances.
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be placed under contrib/extensions
+
+
+- Officer or member managing donation: Tommaso Teofili (tommaso@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-11-05 | source code provided as a patch on SLING-3223 (https://issues.apache.org/jira/secure/attachment/12612201/SLING-3223.patch). |
+
+MD5 or SHA1 sum for donated software: SHA1(SLING-3223.patch.txt)= ee628f4556c71c19fa09ae4e58fc7b32182da11b.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-11-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-11-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _adobe-sling-replication-grant_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems Incorporated_ 
+
+| date | item |
+|------|------|
+| 2013-11-21 | Check that all active committers have a signed CLA on record. |
+| 2013-11-22 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-11-22 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-11-21 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on dev@sling](http://s.apache.org/f9) 
+
+-  [Vote result on dev@sling](http://s.apache.org/MdJ) 
+
+-  [Lazy consensus vote on general@incubator](http://s.apache.org/YdF) 
+
+-  [Lazy consensus vote result on general@incubator](http://markmail.org/thread/q3odwcdmw6ak5yui) 
diff --git a/content/sling-resource-editor.md b/content/sling-resource-editor.md
new file mode 100644
index 0000000..4a2a678
--- /dev/null
+++ b/content/sling-resource-editor.md
@@ -0,0 +1,68 @@
+Title: Sling Resource Editor Intellectual Property (IP) Clearance Status
+
+
+The Sling resource editor allows for editing Sling resources in a browser.
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be placed under contrib/explorers
+
+
+- Officer or member managing donation: Bertrand Delacretaz (bdelacretaz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-10-13 | source code is attached to the SLING-4001 issue as apache _sling_resource_editor.zip |
+
+MD5 or SHA1 sum for donated software: SHA1(apache _sling_resource_editor.zip)= 65dd93cfb932915a232ef576c6580685907449de
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-10-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| N/A | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright: will be done once the donation is incorporated in the Sling codebase, before releasing the software. |
+
+Identify name recorded for software grant: _sandro-boehme-sling-resource-editor.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Sandro Boehme_ 
+
+| date | item |
+|------|------|
+| 2014-10-13 | Check that all active committers have a signed CLA on record. |
+| 2014-10-13 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-10-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br>As per the NOTICE in the source archive, all dependencies have ASF-compatible licenses. |
+| 2014-10-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br>As per the NOTICE in the source archive, all dependencies have ASF-compatible licenses. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on dev@sling](http://s.apache.org/pYc) 
+
+-  [Vote result on dev@sling](http://s.apache.org/y3g) 
+
+- Lazy consensus vote on general@incubator: Message-ID: &lt;CAEWfVJkY9QQfcxVZH16Sa1nUtfW=s8HAOB50dpfTBQXkKHRjnw@mail.gmail.com&gt;
+
+- Lazy consensus vote result on general@incubator: Message-ID: &lt;CAEWfVJ=jnoUkFMadLztHuPsbGUtO6kw9D2uREwWJXzovqrHfgw@mail.gmail.com&gt;
diff --git a/content/sling-sightly-xss.md b/content/sling-sightly-xss.md
new file mode 100644
index 0000000..546d8db
--- /dev/null
+++ b/content/sling-sightly-xss.md
@@ -0,0 +1,68 @@
+Title: Sightly and XSS modules for Sling - Intellectual Property (IP) Clearance Status
+
+
+The Sling Sightly and XSS modules implement an XSS-aware templating and scripting language
+
+
+
+- Apache Sling PMC will be responsible for the code
+
+
+- This contribution will be placed under contrib
+
+
+- Officer or member managing donation: Bertrand Delacretaz (bdelacretaz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-11-03 | source code is attached to the SLING-3959 issue as org.apache.sling.scripting.sightly.zip and org.apache.sling.xss.zip |
+
+SHA1 sum for donated software:<br></br>SHA1(org.apache.sling.scripting.sightly.zip)= 0b392fca9d3042504a3b0e9fd45f50c07aef1298<br></br>SHA1(org.apache.sling.xss.zip)= 2049a48ff24ca0e5e3ee8af9f54ce3fb4db2d288
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-11-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.<br></br>Software grant registered as _adobe-sightly.pdf_ . |
+| N/A | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright: will be done once the donation is incorporated in the Sling codebase, before releasing the software. |
+
+Identify name recorded for software grant: _Adobe Systems Inc._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Adobe Systems Inc._ 
+
+| date | item |
+|------|------|
+| 2014-11-03 | Check that all active committers have a signed CLA on record. |
+| 2014-11-03 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2014-11-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2014-11-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.<br></br>As per the NOTICE in the source archive, all dependencies have ASF-compatible licenses. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on dev@sling: Message-ID: &lt;CAEWfVJ=qk2tsji_CFSOdpdUEZeNpPPcxd=Hrh2PMDgSGAmiZmQ@mail.gmail.com&gt;
+
+- Vote result on dev@sling: Message-ID: &lt;CAEWfVJnU6xdDOjn1n0SztZ5bWfAub4CpoGjskuKG8cHcwnPkoQ@mail.gmail.com&gt;
+
+- Lazy consensus vote on general@incubator: Message-ID: &lt;CAEWfVJknHvTYjRkbbROoLSbb-jxsshU=dHV_f-FdJ9UbBH01rA@mail.gmail.com&gt;
+
+- Lazy consensus vote on general@incubator: Message-ID: &lt;CAEWfVJnxRCz=uJ4g5x0dXxXM24gV2=zcKx8z61xX+gJSsptZSQ@mail.gmail.com&gt;
diff --git a/content/sling.md b/content/sling.md
deleted file mode 100644
index cb1e6eb..0000000
--- a/content/sling.md
+++ /dev/null
@@ -1,181 +0,0 @@
-Title: Sling Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the [project website](http://incubator.apache.org/sling) .
-
-
-<span class="graduated">The Sling project graduated on 2009-06-17</span>
-
-
-Sling is a framework to develop content centric web applications based on the idea of modularizing the rendering of HTTP resources.
-
-
-
-- 2009-06-17: Board passed resolution to establish Apache Sling as a TLP
-
-- 2009-05-18: Release of Apache Sling Commons MIME support 2.1.0-incubator
-
-- 2009-05-13: Second Release of Apache Sling
-
-- 2009-03-30: New committer: Vidar Ramdal
-
-- 2008-06-26: First Release of Apache Sling
-
-- 2008-04-07: Sling present at ApacheCon EU 08: Fast Feather Track and BOF
-
-- 2008-01-16: New committer: Padraic Hannon
-
-- 2007-11-06: Sling present at ApacheCon US 07: Fast Feather Track and BOF
-
-- 2007-11-06: Sling API replaces Component API
-
-- 2007-09-10: Source code is now available in the Apache SVN repository
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/sling/](http://incubator.apache.org/sling/)  |
-|  | wiki |  [http://cwiki.apache.org/SLING/](http://cwiki.apache.org/SLING/)  |
-| Mailing list | dev |  `sling-dev`  `@`  `incubator.apache.org`  |
-|  | private (PPMC) |  `sling-private`  `@`  `incubator.apache.org`  |
-|  | commits |  `sling-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/SLING](http://issues.apache.org/jira/browse/SLING)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/sling/](http://svn.apache.org/repos/asf/incubator/sling/)  |
-| Sponsor |  |  [Jackrabbit PMC](http://jackrabbit.apache.org)  |
-| Mentors | jukka | Jukka Zitting |
-|  | gianugo | Gianugo Rabellino |
-|  | farra | J Aaron Farr |
-| Committers |   | See up to date list on the [Sling website](http://incubator.apache.org/sling/site/project-team.html)  |
-
-
--  [May 2009](http://cwiki.apache.org/SLING/incubator-status-report-may-2009.html) : New Committer Vidar S. Ramdal; Second Sling release
-
--  [February 2009](http://cwiki.apache.org/SLING/incubator-status-report-february-2009.html) : OpenID contribution, preparing next release.
-
--  [November 2008](http://cwiki.apache.org/SLING/incubator-status-report-november-2008.html) : Sling presented at openexpo.ch and ApacheCon US.
-
--  [August 2008](http://cwiki.apache.org/SLING/incubator-status-report-november-2008.html) : First Sling release
-
--  [May 2008](http://cwiki.apache.org/SLING/incubator-status-report-may-2008.html) : Sling won the 5th prize at the JAX Innovation Award
-
--  [February 2008](http://cwiki.apache.org/SLING/incubator-status-report-february-2008.html) : New Committer Padraic Hannon; Sling API finalized
-
--  [November 2007](http://cwiki.apache.org/SLING/incubator-status-report-november-2007.html) : Migration of Component API to Sling API
-
--  [October 2007](http://cwiki.apache.org/SLING/incubator-status-report-october-2007.html) : Site is up; Discussion on replacing Component API by Sling API
-
--  [September 2007](http://wiki.apache.org/incubator/September2007) : Project started and setting up infrastructure
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007-06 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2007-09-02 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2007-09 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2007-08-07 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2007-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2007-08 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2007-08 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2007-08-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2007-08-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-06 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-06 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-09-09 | Check that all active committers have submitted a contributors agreement. |
-| 2007-09-10 | Add all active committers in the STATUS file. |
-| 2007-09-09 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-09-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-09-09 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-09-09 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2007-09-10 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2007-09-11 | Setup basic site. |
-| 2008-01 | Care for nightly builds. |
-| 2007-09-10 | Ask infrastrucure for SLING space on Confluence. |
-| 2007-11 | Migrate existing documentation from Jackrabbit Wiki to own space. |
-| 2008-02-11 | Move Site Source to new Confluence Space and create open Confluence Wiki Space |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/socialsite.md b/content/socialsite.md
deleted file mode 100644
index 6e8513b..0000000
--- a/content/socialsite.md
+++ /dev/null
@@ -1,159 +0,0 @@
-Title: Apache SocialSite Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The SocialSite project retired on 2010-10-17</span>
-
-
-The SocialSite Project is a wonderful project that does things and goes places.
-
-
-
-- 2010-10-17 Enters retired state
-
-- 2009-05-12 Incubation status page setup
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/socialsite/](http://incubator.apache.org/socialsite/)  |
-| . | wiki | . |
-| Mailing list | dev |  `socialsite-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `socialsite-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . | . |
-| Source code | SVN | incubator/socialsite |
-| Mentors | snoopdave | Dave Johnson |
-| . | henning | Henning Schmiedehausen |
-| Committers | ? | Bobby Bissett |
-| . | ? | Rogrigo Gallardo |
-| . | snoopdave | Dave Johnson |
-| . | rameshm | Ramesh Mandava |
-| . | ? | Leandro Milmanda |
-| . | ? | Bruno Rovagnati |
-| . | henning | Henning Schmiedehausen |
-| . | ? | Jamey Wood |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date_ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/solr.md b/content/solr.md
deleted file mode 100644
index 50d45ff..0000000
--- a/content/solr.md
+++ /dev/null
@@ -1,187 +0,0 @@
-Title: Solr Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-<span class="graduated">The Solr project graduated on 2007-01-17</span>
-
-
-Solr is a search server focused on full-text search, relevancy, and performance. It builds on the Apache Lucene search library, adding features such as
-
-
-
-- Query and update interfaces over HTTP and XML or JSON.
-
-- Hit Highlighting
-
-- Faceted Search
-
-- Replication based on index snapshots and rsync.
-
-- A schema allowing declarative specification of fields and their types, including specification of text analysis filter chains.
-
-- External configuration for Lucene parameters, stopword lists, and synonym lists.
-
-- A web based admin interface with statistics and debugging.
-
-- An extensive caching framework for filters, queries, documents, and user caches.
-
-- Plugins for customizing query handling, caching and many other server aspects.
-<br></br><br></br>
-
-- See [Solr's Website](http://incubator.apache.org/solr/) for more news
-
-- 2007-01-17: Solr graduates from Incubator to become a Lucene sub-project!
-
-- 2006-12-22: Solr 1.1.0 Released
-
-- 2006-11-11: Solr PPMC votes in a new committer, Bertrand Delacretaz!
-
-- 2006-08-14: Solr PPMC votes in a new committer, Mike Klaas!
-
-- 2006-01-17: Incubator accepts Solr
-
-- 2006-01-03: Lucene votes to sponsor Solr
-
-
-- Project Website: [http://incubator.apache.org/solr/](http://incubator.apache.org/solr/) 
-
-- Project Mailing Lists: [http://incubator.apache.org/solr/mailing_lists.html](http://incubator.apache.org/solr/mailing_lists.html) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/solr](http://incubator.apache.org/solr)  |
-| Wiki | wiki |  [http://wiki.apache.org/solr](http://wiki.apache.org/solr)  |
-| Mailing list | dev | solr-dev@lucene.apache.org |
-|  | user | solr-user@lucene.apache.org |
-|  | commits | solr-commits@lucene.apache.org |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/browse/SOLR](http://issues.apache.org/jira/browse/SOLR)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/solr/](https://svn.apache.org/repos/asf/incubator/solr/)  |
-| Mentors | cutting | Doug Cutting |
-|  | ehatcher | Erik Hatcher |
-|  | ianh | Ian Holsman (retired) |
-| Committers | yonik | Yonik Seeley |
-|  | billa | Bill Au |
-|  | hossman | Chris Hostetter |
-|  | yoavs | Yoav Shapira |
-|  | cutting | Doug Cutting |
-|  | otis | Otis Gospodnetic |
-|  | ehatcher | Erik Hatcher |
-|  | klaas | Mike Klaas |
-|  | bdelacretaz | Bertrand Delacretaz |
-
-
--  [April2006](http://wiki.apache.org/incubator/April2006) 
-
--  [August2006](http://wiki.apache.org/incubator/August2006) 
-
--  [November2006](http://wiki.apache.org/incubator/November2006) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| DONE | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| DONE | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| DONE | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc and general lists. |
-| DONE | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| DONE | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| DONE 4/18/06 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? YES
-
-- If graduating to a new PMC, has the board voted to accept it? N/A
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? YES
diff --git a/content/spamassassin.md b/content/spamassassin.md
deleted file mode 100644
index fff1763..0000000
--- a/content/spamassassin.md
+++ /dev/null
@@ -1,304 +0,0 @@
-Title: spamassassin
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The SpamAssassin project graduated on 2004-06-23</span>
-
-
-SpamAssassin(tm) is a mail filter to identify spam.
-
-
-Using its rule base, it uses a wide range of heuristic tests on mail headers and body text to identify "spam", also known as unsolicited commercial email.
-
-
-
-- none yet
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://spamassassin.org/](http://spamassassin.org/)  |
-| . | wiki |  [http://wiki.apache.org/spamassassin/](http://wiki.apache.org/spamassassin/)  |
-| Mailing list | dev | spamassassin-dev@incubator.apache.org |
-| . | cvs | spamassassin-cvs@incubator.apache.org |
-| . | ppmc | spamassassin-ppmc@incubator.apache.org |
-| . | users | spamassassin-users@incubator.apache.org |
-| . | devel-br | spamassassin-devel-br@incubator.apache.org |
-| . | devel-de | spamassassin-devel-de@incubator.apache.org |
-| . | announce | spamassassin-announce@lists.sourceforge.net |
-| . | . | (replacement spamassassin-announce exists on incubator, but will not be used until graduation) |
-| Bug tracking | . |  [http://bugzilla.spamassassin.org/](http://bugzilla.spamassassin.org/)  |
-| Source code | SVN | incubator/spamassassin/ |
-| Mentors | striker | Sander Striker |
-| PPMC | felicity | Theo Van Dinter |
-| . | jm | Justin Mason |
-| . | quinlan | Daniel Quinlan |
-| Committers | duncf | Duncan A. Findlay |
-| . | felicity | Theo Van Dinter |
-| . | jm | Justin Mason |
-| . | mss | Malte Sebastian Stretz |
-| . | parker | Michael Parker |
-| . | quinlan | Daniel Quinlan |
-| . | sidney | Sidney Markowitz |
-| Extra | DNS | spamassassin.org |
-
-# 2004-04-22 {#2004-04-22}
-
-```
-* is the Incubation Status file up to date? (also post link) Yep --
-http://cvs.apache.org/viewcvs.cgi/*checkout*/incubator/site/projects/s
-amassassin.cwiki * any legal, cross-project or personal issues that
-still need to be addressed? Copyright and distribution rights still
-remain to be verified by ASF. The trademark issue on the
-"SpamAssassin" name is still in progress. * what has been done for
-incubation since the last report? news.spamassassin.org has been shut
-down; it was becoming just a dumping-ground for third-party press
-releases, and Wiki pages were more appropriate. We're still waiting
-for trademark assignment to be taken care of. Also unsure if the ASF
-have vetted the CLA coverage of the current codebase. Mostly, the
-ball is in the ASF's court ;) Have received agreement from current
-domain holder of "spamassassin.org" that it will be transferred to
-the ASF. * plans and expectations for the next period? Hopefully
-we'll get the TM assignment taken care of, and the CLAs vetted; then
-we'll be ready (at least in terms of ASF procedures) to issue a 3.0.0
-release of SpamAssassin as an ASF project. * any recommendations for
-how incubation could run more smoothly for you? * etc (your own
-thoughts on what is important would be helpful!)
-
-```
-
-# 2004-03-?? {#2004-03-%3F%3F}
-
-```
-* STATUS is up to date
-http://cvs.apache.org/viewcvs.cgi/*checkout*/incubator/site/projects/s
-amassassin.cwiki is now the canonical STATUS file and it is now
-up-to-date. The trunk copy points at it now. * 3.0.0 tree under
-development at ASF * 2.6x not under development at ASF
-
-```
-
-# 2004-01-21 {#2004-01-21}
-
-```
-* is the STATUS file up to date? (also post link)
-http://cvs.apache.org/viewcvs.cgi/*checkout*/incubator/site/projects/s
-amassass in.cwiki Not quite -- the two 'Establish a list of active
-committers' items are not up to date. All active committers are now
-signed up, so that can be closed off. The second item is 'Add all
-active committers in the STATUS file.' However, I'm now confused.
-Which is the canonical STATUS file --
-/incubator/spamassassin/trunk/STATUS, or
-/incubator/site/projects/spamassassin.cwiki? Some signs seem to be
-pointing to the latter... so, if the latter, some cut and paste from
-the former to the latter is then required (and note, I don't think I
-or anyone else on the SpamAssassin PPMC have write access to it). I'm
-kind of taking the approach that the latter is the incubation
-checklist, and the former is tracking our assets and people. That may
-be wrong though BTW the former is here:
-http://svn.apache.org/repos/asf/incubator/spamassassin/trunk/STATUS
-Also, the two tasks under 'Verify distribution rights', should be
-complete. All code in the trunk is covered by CLAs, and the
-non-covered branches have README files noting their non-Apache status
-and presence for historical purposes only. However, perhaps this may
-need to be verified by the ASF before the task can be marked as
-complete, I'm not sure. * any legal, cross-project or personal issues
-that still need to be addressed? Copyright and distribution rights
-still remain to be verified, although all CLAs should now be in. --
-so it's up to ASF legal now. The trademark issue on the
-"SpamAssassin" name is still in progress; as far as I know, NAI legal
-still need to provide some documentation to DW, Jim Jagielski et al.
-* what has been done for incubation since the last report? Lots! - -
-all committer accounts are set up; - - source code is now running
-from the Apache Incubator SVN repository; - - all of the
-developer-oriented mailing lists are now at the Incubator - although
-some user-oriented lists are still external, to avoid user confusion;
-- - all code has been vetted for CLA coverage, and removed or
-clean-roomed if a CLA could not be provided, and this is now awaiting
-verification by the ASF; - - and all major code or rules files in SVN
-are tagged with the ASL 1.1. - - The Wiki has been moved to
-wiki.apache.org. * plans and expectations for the next period? We
-need to transition more infrastructure, including our main website,
-Wiki and Bugzilla. Bugzilla uses some custom code to track CLAs,
-which would be nice to bring over. We also plan to finish up the
-legal situation, by getting the CLA coverage verified by the ASF,
-then the trademark. Also we have several cron scripts that are used
-to perform distributed rule QA, and a very large rsync server contain
-2.7Gb of data, which will need to be migrated. What to do with these
-is still a topic of discussion, since they're *big* in terms of disk
-space usage, and there may not be room at the ASF infrastructure for
-this! There's also a spamtrap server which almost definitely should
-*not* come along -- it handles approx 1 Gbit of traffic per day (in
-spam reports) and would be a waste of ASF hardware and bandwidth,
-IMO. * any recommendations for how incubation could run more smoothly
-for you? A little more introductory doco would be nice; I hadn't
-heard of http://www.apache.org/dev/ until quite late in the process,
-and there were a few other issues where I had to hop around the
-apache.org website to figure out what things meant or what a given
-procedure was. Also, one thing I'm concerned about is how many
-aspects of our infrastructure will wind up with "incubator" in their
-URL or hostname; as a mature project, it'd be much easier to
-transition with the minimum of changes for the existing community,
-and this scoping of URLs and hostnames as in incubation means an
-additional change once we leave the incubator. As a result, it gives
-us a bit of an incentive to *not* set things up (lists, etc.) until
-we leave.
-
-```
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2004-02-16 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| DONE | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
- _NOTE_ 
-
-
-```
-There is a trademark
-
-```
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2003-12-20 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| N/A | Subscribe all Mentors on the pmc and general lists. |
-| N/A | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2003-12-29 | Tell Mentors to track progress in the file 'incubator/projects/spamassassin.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2004-02-16 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-02-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| DONE | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| 2004-01-21 | Check that all active committers have submitted a contributors agreement. |
-| 2004-01-21 | Add all active committers in the STATUS file. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| 2003-12-23 | Ask root for the creation of committers' accounts on svn.apache.org. |
-| 2004-01-07 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2003-12-25 | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
- _NOTES_ 
-
-
-```
-Discussion is underway to whether SA wants to use Jira, or wants to
-import their BZ database into the existing ASF installation.
-
-```
-
-```
-The moving to the ASF infrastructure is partly delayed by the limited
-resources available in the ASF Infrastructure team (time). Also, this
-mature project has quite a lot of infrastructure to move. I suggest
-we don't let this be one of the points to keep SA in the Incubator;
-the intent to move to the ASF infrastructure is there.
-
-```
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-Yes.
-
-
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-Yes.
-
-
-
-- Are project decisions being made in public by the committers?
-
-Yes.
-
-
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-Yes.
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-Two trademarks are being assigned to the ASF:
-
-
-SpamAssassin: http://assignments.uspto.gov/assignments/q?db=tm&amp;sno=78148991
-
-
-Powered by SpamAssassin: http://assignments.uspto.gov/assignments/q?db=tm&amp;sno=78213077
-
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/spark.md b/content/spark.md
deleted file mode 100644
index df784e5..0000000
--- a/content/spark.md
+++ /dev/null
@@ -1,181 +0,0 @@
-Title: Spark Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Spark project graduated on 2014-02-19</span>
-
-
-The Apache Spark is an open source system for fast and flexible large-scale data analysis. Spark provides a general purpose runtime that supports low-latency execution in several forms. These include interactive exploration of very large datasets, near real-time stream processing, and ad-hoc SQL analytics (through higher layer extensions).
-
-
-
-- 2014-02-19 Project [established as an Apache Top Level Project](http://mail-archives.apache.org/mod_mbox/incubator-spark-dev/201402.mbox/%3cCF2B6FE6.135CAE%25chris.a.mattmann@jpl.nasa.gov%3e) .
-
-- 2014-02-15 [Graduation Vote passes](http://mail-archives.apache.org/mod_mbox/incubator-general/201402.mbox/%3CCF25A0C8.13469B%25chris.a.mattmann@jpl.nasa.gov%3E) on incubator-general mailing list.
-
-- 2013-06-19 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://spark.incubator.apache.org](http://spark.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `spark.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `spark.incubator.apache.org`  |
-| Bug tracking | . |  [http://issues.apache.org/jira/browse/SPARK](http://issues.apache.org/jira/browse/SPARK)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-spark.git](https://gitbox.apache.org/repos/asf/incubator-spark.git)  |
-| Mentors | mattmann | Chris Mattmann |
-| . | pramirez | Paul Ramirez |
-| . | ahart | Andrew Hart |
-| . | tomdz | Thomas Dudziak |
-| . | smarru | Suresh Marru |
-| . | hsaputra | Henry Saputra |
-| . | rvs | Roman Shaposhnik |
-| Committers | matei | Matei Zaharia |
-| . | ankurdave | Ankur Dave |
-| . | tdas | Tathagata Das |
-| . | haoyuan | Haoyuan Li |
-| . | joshrosen | Josh Rosen |
-| . | rxin | Reynold Xin |
-| . | shivaram | Shivaram Venkataraman |
-| . | mosharaf | Mosharaf Chowdhury |
-| . | woggle | Charles Reiss |
-| . | andrew | Andy Konwinski |
-| . | pwendell | Patrick Wendell |
-| . | irashid | Imran Rashid |
-| . | ryanlecompte | Ryan LeCompte |
-| . | harsha | Ram Sriharsha |
-| . | bobby | Robert Evans |
-| . | mridulm80 | Mridul Muralidharan |
-| . | tomdz | Thomas Dudziak |
-| . | markhamstra | Mark Hamstra |
-| . | stephenh | Stephen Haberman |
-| . | jasondai | Jason Dai |
-| . | shane_huang | Shane Huang |
-| . | xiajunluan | Andrew Xia |
-| . | mlnick | Nick Pentreath |
-| . | mcnamara | Sean McNamara |
-| . | prashant | Prashant Sharma |
-| . | tgraves | Thomas Graves |
-| . | kayousterhout | Kay Ousterhout |
-| . | adav | Aaron Davidson |
-| Extra | . | . |
-
-
--  [January Report](https://wiki.apache.org/incubator/January2014) 
-
--  [September Report](https://wiki.apache.org/incubator/September2014) 
-
--  [August Report](https://wiki.apache.org/incubator/August2014) 
-
--  [July Report](https://wiki.apache.org/incubator/July2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-06-19 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2013-06-01 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-06-19 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-06-19 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-06-19 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-06-19 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-06-29. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-06-19 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-06-19 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2014-01-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-01-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-06-19 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-06-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-01-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-01-30 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-01-30 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-01-30 | Check that all active committers have submitted a contributors agreement. |
-| 2014-01-30 | Add all active committers in the STATUS file. |
-| 2014-01-30 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-| date | item |
-|------|------|
-| 2014-02-15 | If graduating to an existing PMC, has the PMC voted to accept it? [see here](http://mail-archives.apache.org/mod_mbox/incubator-general/201402.mbox/%3CCF25A0C8.13469B%25chris.a.mattmann@jpl.nasa.gov%3E)  |
-| 2014-02-19 | If graduating to a new PMC, has the board voted to accept it? [see here](http://mail-archives.apache.org/mod_mbox/incubator-spark-dev/201402.mbox/%3cCF2B6FE6.135CAE%25chris.a.mattmann@jpl.nasa.gov%3e)  |
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/spot.md b/content/spot.md
deleted file mode 100644
index dc68851..0000000
--- a/content/spot.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Title: Spot Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Apache Spot is a platform for network telemetry built on an open data model and Apache Hadoop.
-
-
-
-- 2016-09-23: Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://spot.incubator.apache.org/](http://spot.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `spot.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `spot.incubator.apache.org`  |
-| Bug tracking | . |  [SPOT](https://issues.apache.org/jira/browse/SPOT)  |
-| Source code | Git |  [incubator-spot.git](https://gitbox.apache.org/repos/asf?p=incubator-spot.git;a=summary)  |
-| Mentors | jarcec | Jarek Jarcec Cecho |
-| . | brock | Brock Noland |
-| . | asavu | Andrei Savu |
-| . | umamahesh | Uma Maheswara Rao G |
-| Committers | (ICLA not submitted) | Grant Babb |
-| . | rabarona | Ricardo Barona |
-| . | cesar | Cesar Berho |
-| . | jarcec | Jarek Jarcec Cecho |
-| . | (ICLA not submitted) | Michael Czerny |
-| . | (ICLA not submitted) | Nick Gamb |
-| . | vganji | Sai Ganji |
-| . | ledagl | Leda Gabriela Lima Garza |
-| . | vgonzale | Victor Gonzalez |
-| . | mark | Mark Grover |
-| . | . | Morris Hicks |
-| . | (ICLA not submitted) | Ritu Kama |
-| . | leahy | Austin Leahy |
-| . | ashrith | Ashrith Mekala |
-| . | daortizh | Diego Ortiz |
-| . | sudarshan.rao.p | Sudharshan Rao PakalaSai |
-| . | vsr | Srinivasa Reddy |
-| . | alan | Alan Ross |
-| . | everlosa | Everardo Lopez Sandoval |
-| . | . | Nathan Segerlind |
-| . | vsingh | Vartika Singh |
-| . | . | Nathanael Smith |
-| . | solrac901 | Carlos Villavicencio |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/sqoop-quest-data-connector.md b/content/sqoop-quest-data-connector.md
new file mode 100644
index 0000000..fac07aa
--- /dev/null
+++ b/content/sqoop-quest-data-connector.md
@@ -0,0 +1,48 @@
+Title: Quest Data Connector Codebase Intellectual Property (IP) Clearance Status
+
+
+The current built-in Oracle connector in Sqoop suffers from various performance problems as it does not use any knowledge of how Oracle stores and represents data on the underlying filesystem. Quest Data Connector, created by Quest Software (later acquired by Dell), is an improved Sqoop connector that optimizes the data transfer with a reduced overhead on the Oracle database.
+
+
+
+- Sqoop PMC will be responsible for the code.
+
+
+- Into which existing project/module: The connector will be merge into Sqoop "trunk" branch.
+
+
+- Officer or member managing donation: Arvind Prabhakar
+
+ _Completed tasks are shown by the completion date (2014-06-29)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2014-01-22 | Quest Data Connector was independently developed and maintained by Quest Software who owned all the associated trademarks and rights. The software itself has been released multiple times and open sourced under Apache License Version 2.0 at https://github.com/QuestSoftwareTCD/OracleSQOOPconnector |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2014-02-03 | Software grant received by ASF Secretary. |
+| 2014-02-04 | Verified ownership of existing code commit by commit. |
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2012-02-04 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2012-02-04 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTE RESULT Message ID: 86D9B2BCB5DB0A44B392EB9AD6CF2AA312430C98@ALVMBXW02.prod.quest.corp on dev@sqoop.apache.org mailing list, on 01/28/2014.
+
diff --git a/content/sqoop.md b/content/sqoop.md
deleted file mode 100644
index 9a6485c..0000000
--- a/content/sqoop.md
+++ /dev/null
@@ -1,191 +0,0 @@
-Title: Sqoop Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Sqoop project graduated on 2012-03-21</span>
-
-
-Sqoop is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases.
-
-
-
-- 2012-03-21 Apache Sqoop graduates from the Incubator.
-
-- 2012-02-24 Sqoop PPMC voted in Kathleen Ting as a new committer.
-
-- 2012-02-18 Sqoop PPMC voted in Jarek Jarcec Cecho (Jarsolav Cecho) as PPMC member.
-
-- 2012-02-16 Sqoop releases it's second incubator release - version 1.4.1-incubating.
-
-- 2011-12-08 Sqoop PPMC voted in Bilung Lee as PPMC member.
-
-- 2011-11-29 Sqoop releases it's first incubator release - version 1.4.0-incubating.
-
-- 2011-10-21 Sqoop PPMC voted in Jarek Jarcec Cecho (Jaroslav Cecho) as a new committer.
-
-- 2011-10-12 Sqoop PPMC voted in Alex Newman as a new committer.
-
-- 2011-10-04 Sqoop web site created.
-
-- 2011-08-30 Sqoop PPMC voted in Bilung Lee as a new committer.
-
-- 2011-07-23 Transition from Cloudera complete.
-
-- 2011-07-22 Code transfer to Apache SVN completed.
-
-- 2011-07-14 Code transfer rights document received by ASF.
-
-- 2011-06-21 Wiki space created.
-
-- 2011-06-14 JIRA, mailing lists, SVN space created.
-
-- 2011-06-13 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/sqoop/](http://incubator.apache.org/sqoop)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/SQOOP](https://cwiki.apache.org/confluence/display/SQOOP)  |
-| Mailing list | dev |  `sqoop-dev`  `@`  `incubator.apache.org` ( [How to subscribe](https://cwiki.apache.org/confluence/display/SQOOP/Mailing+Lists) ) |
-| . | user |  `sqoop-user`  `@`  `incubator.apache.org` ( [How to subscribe](https://cwiki.apache.org/confluence/display/SQOOP/Mailing+Lists) ) |
-| . | commits |  `sqoop-commits`  `@`  `incubator.apache.org` ( [How to subscribe](https://cwiki.apache.org/confluence/display/SQOOP/Mailing+Lists) ) |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/SQOOP](https://issues.apache.org/jira/browse/SQOOP)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/sqoop/](https://svn.apache.org/repos/asf/incubator/sqoop/)  |
-| Mentors | phunt | Patrick Hunt |
-| . | olamy | Olivier Lamy |
-| . | mnour | Mohammad Nour El-Din |
-| . | tomwhite | Tom White |
-| Committers | arvind | Arvind Prabhakar |
-| . | ahmed | Ahmed Radwan |
-| . | jmhsieh | Jonathan Hsieh |
-| . | kimballa | Aaron Kimball |
-| . | gcottman | Greg Cottman |
-| . | guylemar | Guy le Mar |
-| . | rvs | Roman Shaposhnik |
-| . | abayer | Andrew Bayer |
-| . | pzimdars | Paul Zimdars |
-| . | blee | Bilung Lee |
-| . | posix4e | Alex Newman |
-| . | jarcec | Jaroslav Cecho |
-| . | kathleen | Kathleen Ting |
-
-
--  [March 2012](https://cwiki.apache.org/confluence/display/SQOOP/Incubator+Status+Report+%28March+2012%29) 
-
--  [December 2011](https://cwiki.apache.org/confluence/display/SQOOP/Incubator+Status+Report+%28December+2011%29) 
-
--  [September 2011](https://cwiki.apache.org/confluence/display/SQOOP/Incubator+Status+Report+%28September+2011%29) 
-
--  [August 2011](https://cwiki.apache.org/confluence/display/SQOOP/Incubator+Status+Report+%28August+2011%29) 
-
--  [July 2011](https://cwiki.apache.org/confluence/display/SQOOP/Incubator+Status+Report+%28July+2011%29) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2011-08-08 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2011-08-08 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2011-08-08 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2011-08-08 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2011-06-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2011-06-14 | Ask infrastructure to set up and archive mailing lists. |
-| 2011-06-14 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2011-06-21 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2011-08-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2011-06-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2011-06-13 | Subscribe all Mentors on the pmc and general lists. |
-| 2011-06-17 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2011-06-13 | Tell Mentors to track progress in the file 'incubator/projects/sqoop.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-07-14 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-10-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2011-11-05 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2011-11-06 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2011-08-08 | Check that all active committers have submitted a contributors agreement. |
-| 2011-08-01 | Add all active committers in the STATUS file. |
-| 2011-07-06 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - YES
-
-- Are project decisions being made in public by the committers? - YES
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? - YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? - YES
diff --git a/content/stanbol.md b/content/stanbol.md
deleted file mode 100644
index b5f4efc..0000000
--- a/content/stanbol.md
+++ /dev/null
@@ -1,419 +0,0 @@
-Title: Stanbol Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Stanbol project graduated on 2012-09-19</span>
-
-
-Stanbol is a modular software stack and reusable set of components for semantic content management.
-
-
-
-- 2010-11-15 Project enters incubation.
-
-- 2011-07-25 Project elected Florent André as a new committer
-
-- 2011-12-16 Project elected Reto Bachmann Gmuer as a new committer
-
-- 2012-01-25 Project elected Ali Anil Sinaci as a new committer
-
-- 2012-05-06 Project made its first release of Apache Stanbol 0.9.0-incubating
-
-- 2012-07-10 Project released Apache Stanbol Entityhub 0.10.0-incubating
-
-- 2012-09-19 Project graduated to TLP
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/stanbol/](http://incubator.apache.org/stanbol/)  |
-| Mailing lists | developer |  `stanbol-dev`  `@`  `incubator.apache.org`  |
-|  | private (PPMC) |  `stanbol-private`  `@`  `incubator.apache.org`  |
-|  | commits |  `stanbol-commits`  `@`  `incubator.apache.org`  |
-|  | user | No user mailing list at the moment |
-| Bug tracking |  |  [https://issues.apache.org/jira/browse/STANBOL](https://issues.apache.org/jira/browse/STANBOL)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/stanbol](http://svn.apache.org/repos/asf/incubator/stanbol)  |
-| Champion | Bertrand Delacrétaz |
-| Mentors | Ted Dunning, Ross Gardler, Tommaso Teofili |
-| Committers | See the [Stanbol team page](http://stanbol.apache.org/team.html)  |
-
-
--  [December 2010](http://wiki.apache.org/incubator/December2010) 
-Stanbol is a modular software stack and reusable set of components for semantic content management.
-
-
-Stanbol just entered incubation, on 2010-11-15.
-
-
-Mailing lists, SVN and JIRA are ready, most user accounts created, pre-existing code from the IKS project has been imported under a code grant.
-
-
-The Stanbol community has been invited to participate in a free workshop organized by the IKS project (*). It is a good opportunity to establish best practices for collaboration and communication between IKS (an EU-funded research project in which most current Stanbol committers are involved, http://iks-project.eu/) and the Stanbol podling.
-
-
-Branding requirements checked, see https://issues.apache.org/jira/browse/STANBOL-14
-
-
-Next steps:
-
-- leanup dependencies and code as per ASF requirements
-
-- Make an initial release
-
-- Start establishing and growing the community
-
-
-
-(*) Workshop URL: http://wiki.iks-project.eu/index.php/Workshops/EAworkshopAmsterdam
-
-
-
--  [February 2011](http://wiki.apache.org/incubator/February2011) 
-Stanbol is a modular software stack and reusable set of components for semantic content management. Entered incubation on 2010-11-15.
-
-
-Community development:
-
-- Five new committers mentioned in the previous report elected, accounts requested.
-
-
-
-Project activities:
-
-- Java packages renamed org.apache.stanbol for enhancer and entityhub modules
-
-- Work on removing LGPL dependencies in the Kres module ongoing
-
-- Integration tests added to enhancer module via reusable testing tool
-
-
-
-Next steps:
-
-- Finish package renaming
-
-- Finish LGPL dependencies cleanup
-
-- Setup Hudson (Jenkins?) continuous integration
-
-- Make a first release, possibly omitting modules with ASF-incompatible dependencies
-
-- Grow the community
-
-
-
-Signed off by mentor: bdelacretaz (champion)
-
-
-
--  [May 2011](http://wiki.apache.org/incubator/May2011) 
-Stanbol is a modular software stack and reusable set of components for semantic content management. Entered incubation on 2010-11-15.
-
-
-Community development:
-
-- some new users started playing with Stanbol and asking for guidance on the mailing lists
-
-
-
-Project activities:
-
-- lots of package/module refactoring
-
-- added a benchmark tool for Enhancer
-
-- KReS module build and tests fixed
-
-- setup continuous integration with Jenkins
-
-- added JCR module of CMS Adapter
-
-
-
-Next steps:
-
-- Make a first release, possibly omitting modules with ASF-incompatible dependencies
-
-- Grow the community
-
-
-
-Signed off by mentor: Tommaso Teofili
-
-
-
--  [August 2011](http://wiki.apache.org/incubator/August2011) 
-Stanbol is a modular software stack and reusable set of components for semantic content management. Entered incubation on 2010-11-15.
-
-
-
-1. A list of the three most important issues to address in the move towards graduation.
-
-
-- make a first release (depends on a first release of Apache Clerezza to eliminate SNAPSHOT dependencies)
-
-- create demos showing the power of Stanbol to grow the community
-
-- improve documentation and web site to lower the barrier for new users
-
-1. Any issues that the Incubator PMC or ASF Board might wish/need to be aware of
-
-
-- none
-
-1. How has the community developed since the last report
-
-
-- Florent André was elected as a new committer
-
-- some new users showed up on the mailing list
-
-- Potentially new users from the CMS industry were attracted in a Stanbol hands-on session during a CMS community workshop organized by the IKS project in Paris (http://www.iks-project.eu/news-and-events/events/mycms-and-web-data-iks-community-workshop)
-
-1. How has the project developed since the last report.
-
-
-- Code preparations for first release (solved incompatible license issues, license headers, release profile, etc.)
-
-- Added new component "FactStore"
-
-- Integration tests added to EntityHub
-
-- CMIS module added to CMS Adapter
-
-Signed off by mentor: rgardler
-
-
-
--  [November 2011](http://wiki.apache.org/incubator/November2011) 
-Stanbol is a modular software stack and reusable set of components for semantic content management. Entered incubation on 2010-11-15.
-
-
-There are no issues that require the Incubator PMC or ASF Board attention at this time.
-
-
-
-1. Three most important issues to address in the move towards graduation.
-
-
-- Make a first release (depends on a first release of Apache Clerezza to eliminate SNAPSHOT dependencies).<br></br>No concrete progress here.
-
-- Create demos showing the power of Stanbol to grow the community<br></br>Demo server at http://dev.iks-project.eu, should be moved to Apache servers.
-
-- Improve documentation and web site to lower the barrier for new users<br></br>Work in progress, docs are now available for the enhancer, entity hub, content hub, cms adapter and reasoners components, and for multi-language support.
-
-1. How has the community developed since the last report?
-
-
-- No new committers, some new users have shown up on the mailing list.
-
-- Ali Anil Sinaci provided a number of patches which cover all current functionalities of Contenthub.
-
-- Stanbol was presented at various events: Nuxeo Wold, ApacheCon, "Smart Content = Smart Business" workshop at the [J. Boye](http://jboye.com/conferences/aarhus11/) conference in Aarhus, Denmark.
-
-1. How has the project developed since the last report.
-
-
-- Integration with the Linked Media Framework (http://code.google.com/p/kiwi/) is in progress.
-
-- Integration of the Semantic Search capabilities with the Stanbol ContentHub.
-
-- New EnhancementEngine for extracting Keywords from Controlled vocabularies.
-
-- Improved multi language support.
-
-- Bidirectional mapping feature between JCR/CMIS content repositories and RDF data.
-
-- Implementation of long term operations for reasoners is in progress.
-
-Signed off by mentor: bdelacretaz
-
-
-
--  [February 2012](http://wiki.apache.org/incubator/February2012) 
-Apache Stanbol is an open source modular software stack and reusable set of components for semantic content management. Incubating since November, 2010.
-
-
-
-1. Three most important issues to address in the move towards graduation.
-
-
-- Make a first release (depends on a first release of Apache Clerezza to eliminate SNAPSHOT dependencies)
-
-- Auditing/clarifying multiple maven repositories and corresponding dependencies
-
-- Make the data models downloadable independently from the ASF repositories to avoid gray copyright / licensing issues (for instance for the OpenNLP models).
-
-1. How has the community developed since the last report?
-
-
-- Reto Bachmann Gmuer and Ali Anil Sinaci has been elected as new committers.
-
-- Alberto Musetti has contributed to the project by providing patches
-
-- David Riccitelli provided patch that uses the Stanbol Commons Jobs to implement an Asynchronous RESTful API for the Stanbol Enhancer.
-
-1. How has the project developed since the last report.
-
-Features:
-- LDPath (http://code.google.com/p/ldpath/) support for Entityhub and Contenthub
-
-- Contenthub now supports multiple semantic indexes and Solr RESTful API can be directly used for search
-
-- Enhancer now support for multiple Enhancement Chains and multi-part ContentItems. Work on extended RESTful API will be finished soon.
-
-- Enhancement Engine for Topic Classification (STANBOL-197)
-
-- First version of a Apache Stanbol/Apache Camel integration
-
-- Improved Documentation (both on the Stanbol Homepage and the Web UI of Apache Stanbol)
-
-Signed off by mentor: bdelacretaz, tommaso
-
-
-
--  [May 2012](http://wiki.apache.org/incubator/May2012) 
-Apache Stanbol is an open source modular software stack and reusable set of components for semantic content management. Incubating since November, 2010.
-
-
-Graduation:
-
-
-We believe Stanbol will be ready to graduate in the next few days: the issues mentioned in our previous report have been adressed, the release is being voted on (after six iterations of release candidates) and should be out in the next few days if all goes well. Community activity is steady and slowly increasing.
-
-
-Community:
-
-
-
-  - No new committers or PPMC members since the last report, but steady activity on our lists from both existing and new members of our community.
-
-  - Two Stanbol committers have been elected as Clerezza committers, furthering ties between both podlings.
-
-  - A Stanbol GSoC project has been accepted, with Rupert Westenthaler as its mentor.
-
-  - Contribution of several EnhancementEngines based on LinguaGrid (NLP framework) by Alessio Bosca (STANBOL-583).
-
-  - Integration of DBpedia Spotlight (http://dbpedia.org/spotlight) with the Stanbol Enhancer, led by a new Stanbol contributor.
-
-  - Stanbol was presented in the Developer Track of WWW2012 (slides: http://s.apache.org/AgK)
-
-Project activity:
-
-
-
-  - Reorganization of the codebase for the release, the one binary dependency left that's not available in Maven Central has been moved to a separate -deps package for the release, as discussed on the incubator general list.
-
-  - Content hub faceted search improvements.
-
-  - New EnhancementEngine based on Apache Tika
-
-  - TopicEngine (STANBOL-197) is now functional
-
-  - Full LDpath support for the Entityhub Indexing tools (STANBOL-408).
-
-Signed off by mentor: bdelacretaz, rgardler
-
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-08-03 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.<br></br>See [PODLINGNAMESEARCH-8](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-8)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2010-11-15 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-11-15 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-11-15 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-11-15 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-11-15 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-11-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-07-18 | The Apache RAT check was added to check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-05-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2012-05-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-11-30 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| 2010-11-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-11-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-11-15 | Ask infrastructure to set up and archive Mailing lists. |
-| 2010-11-15 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2010-11-15 | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to a new PMC, has the board voted to accept it?<br></br>Yes, in the board meeting at September 19, 2012.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?<br></br>Yes, with this [vote](http://markmail.org/thread/bjijudvfiajhi2dn) .
diff --git a/content/stdcxx.md b/content/stdcxx.md
deleted file mode 100644
index a3ffb4f..0000000
--- a/content/stdcxx.md
+++ /dev/null
@@ -1,211 +0,0 @@
-Title: Apache stdcxx Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-<div class="section">
-This page tracks the incubation status of the stdcxx project.
-
-</div>
-<span class="graduated">The stdcxx project graduated on 2007-11-14</span>
-
-<div class="section">
-The Apache C++ Standard Library project is a complete implementation of the ISO/IEC 14882 C++ Standard Library.
-
-
-The most distinguishing characteristic of this implementation of the C++ Standard Library is its portability to a large number of C++ compilers, operating systems, and hardware architectures.
-
-</div><div class="section">
-
-- 11/14/2007 STDCXX graduates into a Top Level Project.
-
-- 10/29/2007 With the [approval](http://mail-archives.apache.org/mod_mbox/incubator-general/200710.mbox/%3c4725F2BE.8070500@roguewave.com%3e) of the Incubator PMC, STDCXX 4.2.0 is released.
-
-- 9/5/2007 STDCXX community adds two new committers, Eric (Brad) Lemings and Mark Brown.
-
-- 3/26/2007 Tim Triemstra joins the PPMC.
-
-- 2/13/2007 Andrew Black and Farid Zaripov join the PPMC.
-
-- 10/11/2006 STDCXX community adds a new committer, Andrew Black.
-
-- 8/10/2006 STDCXX community adds a new committer, Farid Zaripov.
-
-- 1/30/2006 With the [approval](http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3c43DEC03F.3030601@roguewave.com%3e) of the Incubator PMC STDCXX 4.1.3 was released.
-
-- 1/13/2006 STDCXX community adds a new committer, Anton Pevtsov.
-
-- 11/25/2005 Windows configuration and build infarstructure [committed](http://svn.apache.org/viewcvs.cgi?rev=349027&amp;view=rev) to Subversion ( [STDCXX-5](http://issues.apache.org/jira/browse/stdcxx-5) ).
-
-- 9/16/2005 The first [snapshot](http://cvs.apache.org/dist/incubator/stdcxx/snapshots/stdcxx-incubating-4.1.2-2005-07-19.tar.gz) of stdcxx 4.1.2 has been published.
-
-- 9/5/2005 The test suite driver [committed](http://svn.apache.org/viewcvs.cgi/incubator/stdcxx/trunk/tests/?rev=278837) to Subversion ( [STDCXX-3](http://issues.apache.org/jira/browse/stdcxx-3) ).
-
-- 9/1/2005 A [proposal](http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200508.mbox/%3c430E39CD.7040501@roguewave.com%3e) to publish the first stdcxx snapshot on the stdcxx Web site has passed the community [vote](http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200509.mbox/%3c4317A0AE.9040204@roguewave.com%3e) .
-
-- 8/28/2005 The process of downloading stdcxx files documented on the [Download](http://incubator.apache.org/stdcxx/download.html) page. ( [STDCXX-17](http://issues.apache.org/jira/browse/stdcxx-17) ).
-
-- 8/01/2005 The process of reporting bugs in the stdcxx [bug tracking database](http://issues.apache.org/jira/browse/stdcxx) documented and published on the [Bugs](http://incubator.apache.org/stdcxx/bugs.html) page. ( [STDCXX-9](http://issues.apache.org/jira/browse/stdcxx-9) .)
-
-- 7/19/2005 stdcxx [project page](http://incubator.apache.org/stdcxx) and [status page](http://incubator.apache.org/projects/stdcxx.html) committed to subversion.
-
-- 7/18/2005 stdcxx sources and documentation moved to [subversion](http://svn.apache.org/repos/asf/incubator/stdcxx/) .
-
-- 5/19/2005 stdcxx project [accepted](http://mail-archives.apache.org/mod_mbox/incubator-general/200505.mbox/%3cC398496DF88AD711908C00065BEEE32C01473785@dfwmail.quovadx.com%3e) for incubation.
-
-- 5/13/2005 stdcxx project [proposal](http://mail-archives.apache.org/mod_mbox/incubator-general/200505.mbox/%3cC398496DF88AD711908C00065BEEE32C01473747@dfwmail.quovadx.com%3e) .
-</div><div class="section">
-| item | id | reference |
-|------|----|-----------|
-| Web site | www |  [http://incubator.apache.org/stdcxx/](http://incubator.apache.org/stdcxx/)  |
-|  | wiki | Wiki not requested. |
-| Mailing lists | dev |  [stdcxx-dev@incubator.apache.org](mailto:stdcxx-dev@incubator.apache.org)  |
-|  | user |  [stdcxx-user@incubator.apache.org](mailto:stdcxx-user@incubator.apache.org)  |
-|  | svn |  [stdcxx-commits@incubator.apache.org](mailto:stdcxx-commits@incubator.apache.org)  |
-|  | ppmc |  [stdcxx-ppmc@incubator.apache.org](mailto:stdcxx-ppmc@incubator.apache.org)  |
-| Moderators | sebor |  [Martin Sebor](mailto:sebor_at_apache.org)  |
-|  | wrowe |  [William A. Rowe, Jr.](mailto:wrowe_at_rowe-clan.net)  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/stdcxx](http://issues.apache.org/jira/browse/stdcxx)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/incubator/stdcxx/](http://svn.apache.org/repos/asf/incubator/stdcxx/)  |
-| Sponsor |  |  [Incubator PMC](mailto:pmc_at_incubator.apache.org)  |
-| Mentors | jerenkrantz |  [Justin Erenkrantz](mailto:justin_at_erenkrantz.com) (See this [post](http://www.mail-archive.com/general@incubator.apache.org/msg04836.html) .) |
-|  | ben |  [Ben Laurie](mailto:ben_at_algroup.co.uk) (See this [post](http://www.mail-archive.com/general@incubator.apache.org/msg04844.html) .) |
-|  | wrowe |  [William A. Rowe, Jr.](mailto:wrowe_at_rowe-clan.net) (See this [post](http://www.mail-archive.com/general@incubator.apache.org/msg04972.html) .) |
-| Committers | ablack |  [Andrew Black](mailto:ablack@roguewave.com) (Rogue Wave) |
-|  | hbuelow |  [Heidi Buelow](mailto:heidi.buelow@apache.org)  |
-|  | ldiduck |  [Lance Diduck](mailto:lancediduck@nyc.rr.com)  |
-|  | jhollis |  [John Hollis](mailto:johnh@roguewave.com) (Rogue Wave) |
-|  | ajindal |  [Amit Jindal](mailto:ajindal@apache.org) (self) |
-|  | lnicoara |  [Liviu Nicoara](mailto:nicoara@roguewave.com) (Rogue Wave) |
-|  | rpalepu |  [Ravi Palepu](mailto:palepu@roguewave.com) (Rogue Wave) |
-|  | antonp |  [Anton Pevtsov](mailto:antonp@moscow.vdiweb.com) (VDI) |
-|  | sebor |  [Martin Sebor](mailto:sebor@roguewave.com) (Rogue Wave) |
-|  | ttriemstra |  [Tim Triemstra](mailto:tim.triemstra@gmail.com) (Apple) |
-|  | faridz |  [Farid Zaripov](mailto:farid_zaripov@epam.com) (EPAM) |
-|  | mbrown |  [Mark Brown](mailto:marg.g.brown@gmail.com)  |
-|  | elemings |  [Eric Lemings](mailto:lemings@roguewave.com) (Rogue Wave) |
-</div><div class="section">
-| file | note |
-|------|------|
-|  [2007-11.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2007-11.text)  | Status report for the calendar quarter ending in November 2007. |
-|  [2007-08.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2007-08.text)  | Status report for the calendar quarter ending in August 2007. |
-|  [2007-05.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2007-05.text)  | Status report for the calendar quarter ending in May 2007. |
-|  [2007-02.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2007-02.text)  | Status report for the calendar quarter ending in February 2007. |
-|  [2006-11.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2006-11.text)  | Status report for the calendar quarter ending in November 2006. |
-|  [2006-08.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2006-08.text)  | Status report for the calendar quarter ending in August 2006. |
-|  [2006-04.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2006-04.text)  | Status report for the calendar quarter ending in April 2006. |
-|  [2005-12.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2005-12.text)  | Status report for the calendar quarter ending in December 2005. |
-|  [2005-09.text](http://svn.apache.org/repos/asf/incubator/stdcxx/site/status/2005-09.text)  | Status report for the calendar quarter ending in September 2005. |
-</div>
-
-
-
-# Project Setup {#Project+Setup}
-
-
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| N/A | Make sure that the requested project name does not already exist and check [NameProtect](http://www.nameprotect.com) to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| DONE | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE | Subscribe all Mentors on the pmc and general lists. |
-| DONE | Give all Mentors access to all incubator SVN modules (to be done by PMC chair). |
-| DONE | Tell Mentors to track progress in the status file. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 7/18/2005 - 6/23/2007 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright ( [STDCXX-457](https://issues.apache.org/jira/browse/STDCXX-457) ). |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| DONE | Check and make sure that for all code included with the distribution that is not under the Apache license, has the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 7/11/2005 | Check that all active committers have submitted a contributors agreement (see the list of [committers](#committers) above for any exceptions). |
-| 7/19/2005 | Add all active committers to the status page. |
-| 7/16/2005 | Ask root to create committers' accounts on cvs.apache.org ( [INFRA-440](http://issues.apache.org/jira/browse/INFRA-440) ). |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 7/16/2005 | Ask infrastructure to create source repository modules and grant the committers karma ( [INFRA-441](http://issues.apache.org/jira/browse/INFRA-441) ). |
-| 7/13/2005 | Ask infrastructure to set up and archive mailing lists ( [INFRA-339](http://issues.apache.org/jira/browse/INFRA-339) ). |
-| 7/16/2005 | Decide about and then ask infrastructure to setup an issue tracking system ( [INFRA-438](http://issues.apache.org/jira/browse/INFRA-438) ). |
-| DONE | Migrate the project to our infrastructure. |
-
-## Project-specific {#Project-specific}
-
-| date | item |
-|------|------|
-| 8/2/2005 - 8/3/2005 | Publish a [page](http://incubator.apache.org/stdcxx/bugs.html) on how to file issues against the project and how to submit patches ( [STDCXX-9](http://issues.apache.org/jira/browse/STDCXX-9) ). |
-| 7/25/2005 - 7/31/2005 | Improve the [project page](http://incubator.apache.org/stdcxx/) ( [STDCXX-6](http://issues.apache.org/jira/browse/STDCXX-6) ). |
-| 7/25/2005 - 1/18/2006 | Make the [Class Reference](http://svn.apache.org/repos/asf/incubator/stdcxx/trunk/doc/stdlibref/) and [Users Guide](http://svn.apache.org/repos/asf/incubator/stdcxx/trunk/doc/stdlibug/) available online, from the project page ( [STDCXX-12](http://issues.apache.org/jira/browse/STDCXX-12) ). |
-| 7/25/2005 - 9/16/2005 | Make a tarball of stable project sources available for download from the project site. |
-| 7/25/2005 - ... | Document the design and development practices and publish them on the project site. |
-| 7/25/2005 - ... | Put together a list of things to do and publish it on the project site. |
-| 7/25/2005 - 9/5/2005 | Check in the test driver ( [STDCXX-3](http://issues.apache.org/jira/browse/stdcxx-3) ). |
-| 7/25/2005 - ... | Check in the project test suite ( [STDCXX-4](http://issues.apache.org/jira/browse/stdcxx-4) ). |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project-specific {#Project-specific-N10439}
-
- _No project-specific tasks._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? N/A.
-
-- If graduating to a new PMC, has the board voted to accept it? Yes. See this [post](http://mail-archives.apache.org/mod_mbox/incubator-general/200711.mbox/%3c473C8F92.4060805@rowe-clan.net%3e) .
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? Yes. See the [VOTE RESULT](http://mail-archives.apache.org/mod_mbox/incubator-general/200710.mbox/%3c13246183.post@talk.nabble.com%3e) .
diff --git a/content/stonehenge.md b/content/stonehenge.md
deleted file mode 100644
index 66dc26a..0000000
--- a/content/stonehenge.md
+++ /dev/null
@@ -1,186 +0,0 @@
-Title: Stonehenge Podling Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the Stonehenge project status, from the perspective of incubation. For more general project status, look on the project website.
-
-
-<span class="retired">The Stonehenge project retired on 2011-07-05</span>
-
-
-Stonehenge is a set of example applications for Service Oriented Architecture that spans languages and platforms and demonstrates best practices and interoperability.
-
-
-
-- 2011-07-05 Project retired.
-
-- 2009-11-19 Stonehenge Booth demoed at Microsoft PDC 2009: [watch video](http://channel9.msdn.com/posts/jccim/Apache-Stonehenge-demoed-at-PDC09/) 
-
-- 2009-07-29 New committer: Avantika Agrawal
-
-- 2009-06-23 New committer: Chintana Wilamuna
-
-- 2009-06-17 New committer: Ben Dewey
-
-- 2009-06-04 Stonehenge Presented at JavaOne 2009 Keynote: [watch video](http://java.sun.com/javaone/2009/playlist.jsp?pid=24744799001) 
-
-- 2009-06-04 Apache Stonehenge M1 Released. [download](http://www.apache.org/dyn/closer.cgi/incubator/stonehenge) 
-
-- 2008-11-16 Project accepted by the incubator.
-
-- 2008-11-19 Initial setup
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/stonehenge/](http://incubator.apache.org/stonehenge/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/STONEHENGE/](http://cwiki.apache.org/confluence/display/STONEHENGE/)  |
-| Mailing list | dev |  `stonehenge-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `stonehenge-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . |  [http://issues.apache.org/jira/browse/STONEHENGE](http://issues.apache.org/jira/browse/STONEHENGE)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/stonehenge](https://svn.apache.org/repos/asf/incubator/stonehenge)  |
-| (unsecured read access) | SVN |  [http://svn.apache.org/repos/asf/incubator/stonehenge](http://svn.apache.org/repos/asf/incubator/stonehenge)  |
-| Mentors | coar | Ken Coar |
-| . | danese | Danese Cooper |
-| . | dkulp | Daniel Kulp |
-| . | mriou | Matthieu Riou |
-| . | jim | Jim Jagielski |
-| . | pzf | Paul Fremantle |
-| Committers | azeez | Afkham Azeez |
-| . | cctrieloff | Carl Trieloff |
-| . | drewbai | Drew Baird |
-| . | gdaniels | Glen Daniels |
-| . | mchampion | Michael Champion |
-| . | mlittle | Mark Little |
-| . | nandana | Nandana Mihindukulasooriya |
-| . | ruwan | Ruwan Linton |
-| . | samisa | Samisa Abeysinghe |
-| . | sanjiva | Sanjiva Weerawarana |
-| . | senaka | Senaka Fernando |
-| . | shankar | Selvaratnam Uthaiyashankar |
-| . | bendewey | Ben Dewey |
-| . | chintana | Chintana Wilamuna |
-| . | aagrawal | Avantika Agrawal |
-| Extra | . | . |
-
-
--  [http://wiki.apache.org/incubator/February2010](http://wiki.apache.org/incubator/February2010) 
-
--  [http://wiki.apache.org/incubator/November2009](http://wiki.apache.org/incubator/November2009) 
-
--  [http://wiki.apache.org/incubator/August2009](http://wiki.apache.org/incubator/August2009) 
-
--  [http://wiki.apache.org/incubator/May2009](http://wiki.apache.org/incubator/May2009) 
-
--  [http://wiki.apache.org/incubator/April2009](http://wiki.apache.org/incubator/April2009) 
-
--  [http://wiki.apache.org/incubator/March2009](http://wiki.apache.org/incubator/March2009) 
-
--  [http://wiki.apache.org/incubator/February2009](http://wiki.apache.org/incubator/February2009) 
-
--  [http://wiki.apache.org/incubator/January2009](http://wiki.apache.org/incubator/January2009) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-11-19 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. **DONE**  |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-11-19 | Identify all the Mentors for the incubation, by asking all that can be Mentors. **DONE**  |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| 2008-11-19 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) **DONE**  |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/storm-azure-eventhubs.md b/content/storm-azure-eventhubs.md
new file mode 100644
index 0000000..e8f98da
--- /dev/null
+++ b/content/storm-azure-eventhubs.md
@@ -0,0 +1,67 @@
+Title: Apache Storm Azure Eventhub Integration Intellectual Property (IP) Clearance Status
+
+
+The codebase provides Apache Storm components (Spouts/Bolts) for integrating with Microsoft Azure Eventhubs
+
+
+
+- The Apache Storm PMC will be responsible for the code
+
+
+- This contribution will be placed under external/storm-eventhubs
+
+
+- Officer or member managing donation: P. Taylor Goetz (ptgoetz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-03-16 | source code is attached to the STORM-583 issue as storm-eventhubs.tar.gz |
+| 2015-03-16 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: SHA1(storm-eventhubs.tar.gz)= 496460f9ee241398811397ed36bbfc5717e84ec2 (OpenSSL 0.9.8zc 15 Oct 2014).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-04-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-03-16 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Apache Storm Azure Eventhubs Integration_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Microsoft_ 
+
+-  _Raghu Ramakrishnan_ 
+
+-  _Shanyu Zhao_ 
+
+| date | item |
+|------|------|
+| 2015-03-16 | Check that all active committers have a signed CLA on record. |
+| 2015-03-16 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-03-16 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-03-16 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/storm-jms.md b/content/storm-jms.md
new file mode 100644
index 0000000..cae990c
--- /dev/null
+++ b/content/storm-jms.md
@@ -0,0 +1,73 @@
+Title: Apache Storm JMS Integration Intellectual Property (IP) Clearance Status
+
+
+Apache Storm JMS Integration provides integration between Storm and the Java Message Service
+
+
+
+- The Apache Storm PMC will be responsible for the code
+
+
+- This contribution will be placed in the "external" directory of the Apache Storm repository
+
+
+- Officer or member managing donation: P. Taylor Goetz (ptgoetz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2016-09-21 | The source code can be found at [https://github.com/ptgoetz/storm-jms (including wiki content)](https://github.com/ptgoetz/storm-jms) with the following git commit SHA: aab6acdf316c48bf566e37776790116f2794199b |
+| 2016-09-21 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Git commit SHA for donated software: (aab6acdf316c48bf566e37776790116f2794199b).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2016-09-28 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2016-09-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _grants.txt: file: peter-taylor-goetz-storm-jms.pdf, for: Apache Storm JMS Integration_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Author: P. Taylor Goetz (Storm PMC Chair)
+
+- Contributor: Brian O'Neill (ICLA on file)
+
+- Contributor: Andy Toone (ICLA request sent)
+
+- Contributor: Tyler Benson (minor commit)
+
+- Contributor: Paul Codding (minor commit)
+
+- Contributor: Parth Brahmbhatt (Storm PMC)
+
+| date | item |
+|------|------|
+| 2016-09-21 | Check that all active committers have a signed CLA on record. |
+| 2016-09-21 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2016-09-21 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2016-09-21 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _Vote thread on dev@: [http://mail-archives.apache.org/mod_mbox/storm-dev/201609.mbox/%3cC06062BF-2520-4122-BE1E-3192CDA8EF25@gmail.com%3e](http://mail-archives.apache.org/mod_mbox/storm-dev/201609.mbox/%3cC06062BF-2520-4122-BE1E-3192CDA8EF25@gmail.com%3e) _ 
diff --git a/content/storm-jstorm.md b/content/storm-jstorm.md
new file mode 100644
index 0000000..74ad462
--- /dev/null
+++ b/content/storm-jstorm.md
@@ -0,0 +1,81 @@
+Title: Alibaba JStorm Intellectual Property (IP) Clearance Status
+
+
+The codebase is a fork of Apache Storm with Clojure code replaced with Java, and several other improvements
+
+
+
+- The Apache Storm PMC will be responsible for the code
+
+
+- This contribution will be placed in a new branch in the Apache Storm repository
+
+
+- Officer or member managing donation: P. Taylor Goetz (ptgoetz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2015-10-21 | The source code can be found at [https://github.com/alibaba/jstorm](https://github.com/alibaba/jstorm) with the following git commit SHA: e935da91a897797dad56e24c4ffa57860ac91878 |
+| 2015-10-21 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Git commit SHA for donated software: (e935da91a897797dad56e24c4ffa57860ac91878).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2015-10-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2015-10-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _cclas.txt: Taobao (China) Software Co., Ltd. - Zhongyan Feng:zhongyan.feng@alibaba-inc.com:Signed Corp CLA for Zhongyan Feng, Jian Liu, Ye Wang, Ziaojian Fang, Chong Wu, Tong Wang, Jian Feng, Fang Situ, Xiaofan Zhou for Alibaba JStorm_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Taobao (China) Software Co., Ltd.
+
+- Zhongyan Feng
+
+- Jian Liu
+
+- Ye Wang
+
+- Ziaojian Fang
+
+- Chong Wu
+
+- Tong Wang
+
+- Jian Feng
+
+- Fang Situ
+
+- Xiaofan Zhou
+
+| date | item |
+|------|------|
+| 2015-10-21 | Check that all active committers have a signed CLA on record. |
+| 2015-10-21 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2015-10-21 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2015-10-21 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/storm-sqe.md b/content/storm-sqe.md
new file mode 100644
index 0000000..52bc9e0
--- /dev/null
+++ b/content/storm-sqe.md
@@ -0,0 +1,63 @@
+Title: JW PLayer SQE Intellectual Property (IP) Clearance Status
+
+
+SQE is a query engine written using Storm's Trident framework that takes a set of SQL-like commands, including queries, and runs them against one or more input streams.
+
+
+
+- The Apache Storm PMC will be responsible for the code
+
+
+- This contribution will be placed in the "external" directory of the Apache Storm repository
+
+
+- Officer or member managing donation: P. Taylor Goetz (ptgoetz@apache.org)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2016-09-20 | The source code can be found at [https://github.com/jwplayer/SQE (including wiki content)](https://github.com/jwplayer/SQE) with the following git commit SHA: 68dbbde1117a043a7bded73d89d3d82238715a4b |
+| 2016-09-20 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+Git commit SHA for donated software: (68dbbde1117a043a7bded73d89d3d82238715a4b).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2016-09-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _grants.txt: Grant from JWPlayer for SQE, file: jwplayer-sqe.pdf_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Longtail Ad Solutions, Inc. dba JWPlayer
+
+| date | item |
+|------|------|
+| 2016-09-20 | Check that all active committers have a signed CLA on record. |
+| 2016-09-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2016-09-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2016-09-20 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _Vote thread on dev@: [http://mail-archives.apache.org/mod_mbox/storm-dev/201609.mbox/%3cA121FA30-E55F-4885-9D99-2670927469B9@gmail.com%3e](http://mail-archives.apache.org/mod_mbox/storm-dev/201609.mbox/%3cA121FA30-E55F-4885-9D99-2670927469B9@gmail.com%3e) _ 
diff --git a/content/storm.md b/content/storm.md
deleted file mode 100644
index 6e32097..0000000
--- a/content/storm.md
+++ /dev/null
@@ -1,191 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Storm project graduated on 2014-09-17</span>
-
-
-Storm is a distributed, fault-tolerant, and high-performance realtime computation system that provides strong guarantees on the processing of data.
-
-
-
-- 2013-09-18 Project enters incubation.
-
-- 2014-02-22 Apache Storm 0.9.1-incubating released.
-
-- 2014-03-11 Robert Evans and Derek Dagit added as Committers/PPMC Members.
-
-- 2014-03-26 Michael G. Noll added as Committer/PPMC Member.
-
-- 2014-06-25 Apache Storm 0.9.2-incubating released.
-
-- 2014-09-17 Apache Storm Graduates to Top-Level Project
-
-
--  [Storm Website](http://storm.incubator.apache.org) 
-
-
--  [Contributing](http://storm.incubator.apache.org/community.html) 
-
-
--  [Source Repository (GitHub)](https://github.com/apache/incubator-storm) 
-
-
--  [Source Repository (ASF)](https://gitbox.apache.org/repos/asf?p=incubator-storm.git) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://storm.incubator.apache.org/](http://storm.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `storm.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `storm.incubator.apache.org`  |
-| . | private |  `private`  `@`  `storm.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/STORM](https://issues.apache.org/jira/browse/STORM)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-storm.git](https://gitbox.apache.org/repos/asf/incubator-storm.git)  |
-| Mentors | tdunning | Ted Dunning |
-| . | arvind | Arvind Prabhakar |
-| . | ddas | Devaraj Das |
-| . | mfranklin | Matt Franklin |
-| . | benh | Benjamin Hindman |
-| Committers | nathanmarz | Nathan Marz |
-| . | xumingming | James Xu |
-| . | jjackson | Jason Jackson |
-| . | afeng | Andy Feng |
-| . | mrflip | Flip Kromer |
-| . | dlao | David Lao |
-| . | ptgoetz | P. Taylor Goetz |
-| . | dagit | Derek Dagit |
-| . | bobby | Robert Evans |
-| . | miguno | Michael G. Noll |
-| Extra | . | . |
-
-
--  [http://wiki.apache.org/incubator/October2013](http://wiki.apache.org/incubator/October2013) 
-
--  [http://wiki.apache.org/incubator/November2013](http://wiki.apache.org/incubator/November2013) 
-
--  [http://wiki.apache.org/incubator/December2013](http://wiki.apache.org/incubator/December2013) 
-
--  [http://wiki.apache.org/incubator/March2014](http://wiki.apache.org/incubator/March2014) 
-
--  [http://wiki.apache.org/incubator/June2014](http://wiki.apache.org/incubator/June2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-08-13 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-09-18 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-09-18 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-09-18 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-09-18 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-12-13 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-10-18 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-10-18 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-10-18 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-09-18 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-12-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-02-22 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-02-22 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-10-18 | Check that all active committers have submitted a contributors agreement. |
-| 2013-11-19 | Add all active committers in the STATUS file. |
-| 2013-10-18 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
-| date | item |
-|------|------|
-| 2014-02-22 | Apache Storm 0.9.1-incubating released |
-| 2014-03-11 | Robert Evans and Derek Dagit added as Committers/PPMC Members |
-| 2014-03-26 | Michael G. Noll added as Committer/PPMC Member |
-| 2014-06-25 | Apache Storm 0.9.2-incubating released |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/stratos.md b/content/stratos.md
deleted file mode 100644
index 1c87a92..0000000
--- a/content/stratos.md
+++ /dev/null
@@ -1,279 +0,0 @@
-Title: Stratos Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Stratos project graduated on 2014-05-21</span>
-
-
-Stratos is a polyglot PaaS framework, providing developers a cloud-based environment for developing, testing, and running scalable applications, and IT providers high utilization rates, automated resource management, and platform-wide insight including monitoring and billing.
-
-
-
-- 2014-05-21 Graduation resolution passed unanimously by the Board. Thanks to everyone at the Incubator for helping us get here!
-
-- 2014-05-01 Incubator [graduation vote](http://apache.markmail.org/message/x2ys4bgo2l4tekp6) underway!
-
-- 2014-03-31 New committer &amp; PMC member: Anh Tu Nguyen
-
-- 2014-03-23 New committer &amp; PMC member: Jeffrey Nguyen
-
-- 2014-02-11 New committer &amp; PMC member: Chanaka Jayasena
-
-- 2014-02-27 Apache Stratos 4.0.0-Alpha-incubating (developer preview released)
-
-- 2014-02-11 New committer &amp; PMC member: Jason Daly
-
-- 2014-02-11 New committer &amp; PMC member: Melan Nimesh
-
-- 2013-12-06 New committer &amp; PMC member: Chris Snow
-
-- 2013-12-03 Stratos Hangout 13
-
-- 2013-11-28 Stratos Hangout 12
-
-- 2013-11-25 Stratos Hangout 11
-
-- 2013-11-18 Stratos Hangout 10
-
-- 2013-11-11 New committer &amp; PMC member: Pradeep Fernando
-
-- 2013-11-14 Stratos Hangout 9
-
-- 2013-11-09 Apache Stratos 3.0.0-incubating is released
-
-- 2013-10-28 Cloud Barcamp held in San Francisco
-
-- 2013-10-22 Stratos Hangout 8
-
-- 2013-10-11 Stratos Hangout 7
-
-- 2013-09-17 Stratos Hangout 6
-
-- 2013-09-15 New committer &amp; PMC member: Imesh Gunaratne
-
-- 2013-08-27 Stratos Hangout 5
-
-- 2013-08-13 Stratos Hangout 4
-
-- 2013-08-08 Stratos Hangout 3
-
-- 2013-08-01 Stratos Hangout 2
-
-- 2013-08-01 New committer &amp; PMC member: Manula Chathurika Thantriwatte
-
-- 2013-08-01 New committer &amp; PMC member: Udara Liyanage
-
-- 2013-07-18 Stratos Hangout 1
-
-- 2013-07-06 Website is live
-
-- 2013-06-29 Donated code is imported and the project is active
-
-- 2013-06-20 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://stratos.incubator.apache.org/](http://stratos.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/STRATOS/Index](https://cwiki.apache.org/confluence/display/STRATOS/Index)  |
-| Mailing list | dev |  `dev`  `@`  `stratos.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `stratos.incubator.apache.org`  |
-| Bug tracking | Jira |  [https://issues.apache.org/jira/browse/STRATOS](https://issues.apache.org/jira/browse/STRATOS)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-stratos.git](https://gitbox.apache.org/repos/asf/incubator-stratos.git)  |
-| Champion | rgardler | Ross Gardler |
-| Mentors | azeez | Afkham Azeez |
-| . | smarru | Suresh Marru |
-| . | mpierce | Marlon Pierce |
-| . | chipchilders | Chip Childers |
-| . | mnour | Mohammad Nour |
-| . | nslater | Noah Slater |
-| . | antelder | Ant Elder |
-| PMC Members | pzf | Paul Fremantle |
-| . | jonathanmarsh | Jonathan Marsh |
-| . | azeez | Afkham Azeez |
-| . | plinnell | Peter Linnell |
-| . | lakmal | Lakmal Warusawithana |
-| . | damitha | Damitha Kumarage |
-| . | samisa | Samisa Abeysinghe |
-| . | nirmal070125 | Nirmal Fernando |
-| . | sajith | Sajith Kariyawasam |
-| . | lahirus | Lahiru Sandaruwan |
-| . | isuruh | Isuru Haththotuwa |
-| . | madhura | Madhura Mendis |
-| . | mariangela | Mariangela Hills |
-| . | mpierce | Marlon Pierce |
-| . | smarru | Suresh Marru |
-| . | amilaj | Amila Jayasekara |
-| . | chipchilders | Chip Childers |
-| . | jzb | Joe Brockmeier |
-| . | nslater | Noah Slater |
-| . | jlk | John Kinsella |
-| . | lahiru | Lahiru Gunathilake |
-| . | nandana | Nandana Mihindukulasooriya |
-| . | isuru | Isuru Perera |
-| . | reka | Reka Thirunavakurussu |
-| . | ahart | Andrew Hart |
-| . | shankar | Selvaratnam Uthaiyashankar |
-| . | deepal | Deepal Jayasinghe |
-| . | dedutta | Debo Dutta |
-| . | udara | Udara Liyanage |
-| . | manula | Manula Chathurika Thantriwatte |
-| . | imesh | Imesh Gunaratne |
-| . | pradeepfn | Pradeep Fernando |
-| . | csnow | Chris Snow |
-| . | melan | Melan Nimesh |
-| . | jasondalycan | Jason Daly |
-| . | chanaka | Chanaka Jayasena |
-| . | jeffrngu | Jeffrey Nguyen |
-| . | tuna | Anh Tu Nguyen |
-| Committers | pzf | Paul Fremantle |
-| . | jonathanmarsh | Jonathan Marsh |
-| . | azeez | Afkham Azeez |
-| . | plinnell | Peter Linnell |
-| . | lakmal | Lakmal Warusawithana |
-| . | damitha | Damitha Kumarage |
-| . | samisa | Samisa Abeysinghe |
-| . | nirmal070125 | Nirmal Fernando |
-| . | sajith | Sajith Kariyawasam |
-| . | lahirus | Lahiru Sandaruwan |
-| . | isuruh | Isuru Haththotuwa |
-| . | madhura | Madhura Mendis |
-| . | mariangela | Mariangela Hills |
-| . | mpierce | Marlon Pierce |
-| . | smarru | Suresh Marru |
-| . | amilaj | Amila Jayasekara |
-| . | chipchilders | Chip Childers |
-| . | jzb | Joe Brockmeier |
-| . | nslater | Noah Slater |
-| . | jlk | John Kinsella |
-| . | lahiru | Lahiru Gunathilake |
-| . | nandana | Nandana Mihindukulasooriya |
-| . | isuru | Isuru Perera |
-| . | reka | Reka Thirunavakurussu |
-| . | ahart | Andrew Hart |
-| . | shankar | Selvaratnam Uthaiyashankar |
-| . | deepal | Deepal Jayasinghe |
-| . | dedutta | Debo Dutta |
-| . | udara | Udara Liyanage |
-| . | manula | Manula Chathurika Thantriwatte |
-| . | imesh | Imesh Gunaratne |
-| . | pradeepfn | Pradeep Fernando |
-| . | csnow | Chris Snow |
-| . | melan | Melan Nimesh |
-| . | jasondalycan | Jason Daly |
-| . | chanaka | Chanaka Jayasena |
-| . | jeffrngu | Jeffrey Nguyen |
-| . | tuna | Anh Tu Nguyen |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-03-12 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-06-24 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-06-21 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-06-21 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-06-24 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-06-28 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-07-01 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-07-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-07-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-07-01 | Tell Mentors to track progress in the file 'incubator/projects/stratos.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-06-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-03-26 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-03-27 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-03-27 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-07-01 | Check that all active committers have submitted a contributors agreement. |
-| 2014-03-26 | Add all active committers in the STATUS file. |
-| 2014-03-26 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? YES, the initial committers have been identified and accepted committership and working together on development. - DONE -
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) YES, Stratos has demonstrated the diversity and welcoming committers from diverse organizations. The committers are affiliated to more than three organizations. - DONE -
-
-- Are project decisions being made in public by the committers? YES, the commiters actively use the dev mailing lists and jira for all decisions. - DONE -
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Make sure that the requested project name does not already exist. Relevant details are at [https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-45](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-45) . All trademark and licensing issues have been taken care and approved by all committers, mentors and trademarks at a.o. - DONE -
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/streampipes.md b/content/streampipes.md
deleted file mode 100644
index c6e7449..0000000
--- a/content/streampipes.md
+++ /dev/null
@@ -1,170 +0,0 @@
-Title: StreamPipes Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Apache StreamPipes (incubating) is a self-service (Industrial) IoT toolbox to enable non-technical users to connect, analyze and explore (Industrial) IoT data streams.
-
-
-
-- 2021-07-22 Release 0.68.0
-
-- 2021-05-28 New Committer, Mohanadarshan Vivekanandalingam
-
-- 2021-03-30 New PPMC member, Tim Bossenmaier
-
-- 2021-02-08 New Committer, Daniel Gomm
-
-- 2021-02-08 New Committer, Tim Bossenmaier
-
-- 2021-01-29 New PPMC member, Grainier Perera
-
-- 2020-12-08 New PPMC Member, Marco Heyden
-
-- 2020-10-28 Release 0.67.0
-
-- 2020-05-22 New Committer, Grainier Perera
-
-- 2020-05-19 Release 0.66.0
-
-- 2020-05-12 New Committer, Felix John
-
-- 2020-05-12 New Committer, Daniel Ebi
-
-- 2020-03-26 New Committer, Florian Micklich
-
-- 2019-11-11 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://streampipes.incubator.apache.org/](https://streampipes.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/STREAMPIPES/](https://cwiki.apache.org/confluence/display/STREAMPIPES)  |
-| Mailing list | dev |  `dev`  `@`  `streampipes.apache.org`  |
-| . | users |  `users`  `@`  `streampipes.apache.org`  |
-| . | commits |  `commits`  `@`  `streampipes.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/STREAMPIPES](https://issues.apache.org/jira/browse/STREAMPIPES)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-streampipes.git](https://gitbox.apache.org/repos/asf/incubator-streampipes.git)  |
-| . | git |  [https://gitbox.apache.org/repos/asf/incubator-streampipes-extensions.git](https://gitbox.apache.org/repos/asf/incubator-streampipes-extensions.git)  |
-| . | git |  [https://gitbox.apache.org/repos/asf/incubator-streampipes-installer.git](https://gitbox.apache.org/repos/asf/incubator-streampipes-installer.git)  |
-| . | git |  [https://gitbox.apache.org/repos/asf/incubator-streampipes-website.git](https://gitbox.apache.org/repos/asf/incubator-streampipes-website.git)  |
-| . | git |  [https://gitbox.apache.org/repos/asf/incubator-streampipes-examples.git](https://gitbox.apache.org/repos/asf/incubator-streampipes-examples.git)  |
-| Champion | cdutz | Christofer Dutz |
-| Mentors | cdutz | Christofer Dutz |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | jfeinauer | Julian Feinauer |
-| . | jmclean | Justin Mclean |
-| . | kenn | Kenneth Knowles |
-| Committers | bossenti | Tim Bossenmaier |
-| . | cdutz | Christofer Dutz |
-| . | ebi | Daniel Ebi |
-| . | fjohn | Felix John |
-| . | gomm | Daniel Gomm |
-| . | grainier | Grainier Perera |
-| . | mheyden | Marco Heyden |
-| . | micklich | Florian Micklich |
-| . | riemer | Dominik Riemer |
-| . | tex | Johannes Tex |
-| . | wiener | Patrick Wiener |
-| . | zehnder | Philipp Zehnder |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-12-02 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-11-11 | Ask infrastructure to create source repository modules and grant the committers karma (mostly done via self-serve). |
-| 2019-11-13 | Set up mailing lists. |
-| 2019-12-04 | Set up project website. |
-| 2019-12-07 | Set up Jira issue tracker. |
-| 2019-12-07 | Set up Confluence wiki. |
-| 2019-12-07 | Transfer Git repositories to ASF infrastructure. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2019-11-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2020-05-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2020-05-19 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2020-05-19 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-11-22 | Check that all active committers have submitted a contributors agreement. |
-| 2019-11-22 | Add all active committers in the STATUS file. |
-| 2019-11-11 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/streams.md b/content/streams.md
deleted file mode 100644
index 2952cf0..0000000
--- a/content/streams.md
+++ /dev/null
@@ -1,155 +0,0 @@
-Title: Apache Streams Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Streams project graduated on 2017-07-19</span>
-
-
-Apache Streams (incubating) unifies a diverse world of digital profiles and online activities into common formats and vocabularies, and makes these datasets accessible across a variety of databases, devices, and platforms for streaming, browsing, search, sharing, and analytics use-cases.
-
-
-| Website |  [http://streams.incubator.apache.org/](http://streams.incubator.apache.org/)  |
-| Wiki |  [https://cwiki.apache.org/confluence/display/STREAMS](https://cwiki.apache.org/confluence/display/STREAMS)  |
-| Mailing list | dev |  `dev`  `@`  `streams.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `streams.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/STREAMS](https://issues.apache.org/jira/browse/STREAMS)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-streams.git](https://gitbox.apache.org/repos/asf/incubator-streams.git)  |
-| Team | team |  [http://streams.incubator.apache.org/site/0.5.1-incubating-SNAPSHOT/streams-project/team-list.html](http://streams.incubator.apache.org/site/0.5.1-incubating-SNAPSHOT/streams-project/team-list.html)  |
-
-
--  [June 2017](http://wiki.apache.org/incubator/June2017) 
-
--  [March 2017](http://wiki.apache.org/incubator/March2017) 
-
--  [December 2016](http://wiki.apache.org/incubator/December2016) 
-
--  [September 2016](http://wiki.apache.org/incubator/September2016) 
-
--  [June 2016](http://wiki.apache.org/incubator/June2016) 
-
--  [March 2016](http://wiki.apache.org/incubator/March2016) 
-
--  [December 2015](http://wiki.apache.org/incubator/December2015) 
-
--  [September 2015](http://wiki.apache.org/incubator/September2015) 
-
--  [June 2015](http://wiki.apache.org/incubator/June2015) 
-
--  [March 2015](http://wiki.apache.org/incubator/March2015) 
-
--  [December 2014](http://wiki.apache.org/incubator/December2014) 
-
--  [September 2014](http://wiki.apache.org/incubator/September2014) 
-
--  [June 2014](http://wiki.apache.org/incubator/June2014) 
-
--  [March 2014](http://wiki.apache.org/incubator/March2014) 
-
--  [December 2013](http://wiki.apache.org/incubator/December2013) 
-
--  [September 2013](http://wiki.apache.org/incubator/September2013) 
-
--  [June 2013](http://wiki.apache.org/incubator/June2013) 
-
--  [March 2013](http://wiki.apache.org/incubator/March2013) 
-
--  [February 2013](http://wiki.apache.org/incubator/February2013) 
-
--  [January 2013](http://wiki.apache.org/incubator/January2013) 
-
--  [December 2012](http://wiki.apache.org/incubator/December2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2012 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2012 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012 | Ask infrastructure to set up and archive mailing lists. |
-| 2012 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| N/A | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012 | Subscribe all Mentors on the pmc and general lists. |
-| 2012 | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| answer | date | item |
-|--------|------|------|
-| TBD | TBD | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| TBD | TBD | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| answer | date | item |
-|--------|------|------|
-| TBD | TBD | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| TBD | TBD | Check and make sure that all source code distributed by the project is covered by an approved licenses. |
-
-## Licensing awareness {#Licensing+awareness}
-
-| answer | date | item |
-|--------|------|------|
-| TBD | TBD | Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-| answer | date | item |
-|--------|------|------|
-| YES | 2017 | Have all of the active long-term volunteers been identified and acknowledged as committers on the project? |
-| YES | 2017 | Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) |
-| YES | 2017 | Are project decisions being made in public by the committers? |
-| YES | 2017 | Are the decision-making guidelines published and agreed to by all of the committers? |
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-| answer | date | item |
-|--------|------|------|
-| N/A | N/A | If graduating to an existing PMC, has the PMC voted to accept it? |
-| TBD | TBD | If graduating to a new PMC, has the board voted to accept it? |
-
-## Incubator sign-off {#Incubator+sign-off}
-
-| answer | date | item |
-|--------|------|------|
-| TBD | TBD | Has the Incubator decided that the project has accomplished all of the above tasks? |
-
-
-- 
diff --git a/content/struts2-xwork.md b/content/struts2-xwork.md
new file mode 100644
index 0000000..371b36a
--- /dev/null
+++ b/content/struts2-xwork.md
@@ -0,0 +1,90 @@
+Title: XWork Codebase Intellectual Property (IP) Clearance Status
+
+
+XWork is a command-pattern framework that is used as the foundation of Struts 2
+
+
+The code will become a submodule of Apache Struts 2
+
+
+The current codebase can be found at the Subversion repository: **https://svn.opensymphony.com/svn/xwork/** . The donated codebase has the original repository revision 2082.
+
+
+
+- Which PMC will be responsible for the code: Apache Struts PMC
+
+
+- Into which existing project/module: Apache Struts 2
+
+
+- Officer or member managing donation: Martin Cooper
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2009-11-30 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: MD5 861277c220c6b579802e8a4fc963596e (available at [WW-3248](https://issues.apache.org/struts/browse/WW-3248) )
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2009-12-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2009-12-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: OpenSymphony XWork
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- OpenSymphony
+
+| date | item |
+|------|------|
+| 2009-10-07 | 
+Check that all active committers have a signed CLA on record.
+
+
+All of the committers have a CLA on file with The Apache Software Foundation. The following table maps the unix user names to real names:
+
+
+ | davenewton | Dave Newton|
+ | davsclaus | Claus Ibsen|
+ | jcarreira | Jason Carreira|
+ | jmitchell | James Mitchell|
+ | lukasz03 | Lukasz Lenart|
+ | mrdon | Don Brown|
+ | musachy | Musachy Barroso|
+ | phil | Philip Luppens|
+ | plightbo | Patrick Lightbody|
+ | rainerh | Rainer Hermanns|
+ | rgielen | Rene Gielen|
+ | roughley | Ian Roughley|
+ | tm_jee | Toby Jee|
+ | tschneider22 | Tom Schneider|
+ | wesw | Wes Wannemacher|
+ |
+| 2009-10-07 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2009-12-03 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2009-12-03 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- The VOTE thread accepting the donation can be found in the mailng list [archives](http://www.mail-archive.com/dev@struts.apache.org/msg35426.html) .
diff --git a/content/subversion.md b/content/subversion.md
deleted file mode 100644
index 1fb20b3..0000000
--- a/content/subversion.md
+++ /dev/null
@@ -1,228 +0,0 @@
-Title: Subversion Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Subversion project graduated on 2010-02-17</span>
-
-
-Subversion is an open-source version control system, with a [long and detailed list of features](http://subversion.tigris.org/features.html) .
-
-
-
-- 2009-11-07 Project enters incubation.
-
- [Subversion](http://subversion.tigris.org/) is an open source project; we welcome [patches](http://subversion.tigris.org/hacking.html#patches) , and we'll help you get more [involved](http://www.red-bean.com/svnproject/contribulyzer/) if you want to be.
-
-
-
-- 
-Read the [Introduction to Subversion Development](http://subversion.tigris.org/development.html) .
-
-
-
-- 
-Read the [Hacker's Guide to Subversion](http://subversion.tigris.org/hacking.html) .
-
-
-
-- 
-Maybe browse the [API documentation](http://svn.collab.net/svn-doxygen/) .
-
-
-
-- 
- [Browse the source tree](http://svn.collab.net/viewvc/svn/trunk/) with ViewVC.
-
-
-
-- 
-Check out the source tree:<br></br> `svn checkout http://svn.collab.net/repos/svn/trunk/` 
-
-
-
-- 
-Hack!
-
-
-
-The following table shows the location of the main incubation resources.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [subversion.apache.org](http://subversion.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `subversion.apache.org`  |
-|  | commits |  `commits`  `@`  `subversion.apache.org`  |
-|  | private (PPMC) |  `private`  `@`  `subversion.apache.org`  |
-| Bug tracking |  _see [Infrastructure section](#Infrastructure) _  |  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/subversion/](http://svn.apache.org/repos/asf/subversion/)  |
-| Mentors | gstein | Greg Stein |
-|  | jerenkrantz | Justin Erenkrantz |
-|  | dlr | Daniel Rall |
-|  | striker | Sander Striker |
-| Committers | bhuvan | Bhuvaneswaran A |
-|  | blair | Blair Zajac |
-|  | brane | Branko Čibej |
-|  | cmpilato | C. Michael Pilato |
-|  | danielsh | Daniel Shahaf |
-|  | dlr | Daniel Rall |
-|  | dongsheng | Dongsheng Song |
-|  | ehu | E W H Huelsmann |
-|  | fabien | Fabien Coelho |
-|  | fitz | Brian Fitzpatrick |
-|  | ghudson | Greg Hudson |
-|  | glasser | David Samuel Glasser |
-|  | gstein | Greg Stein |
-|  | hwright | Hyrum Kurt Wright |
-|  | ivan | Ivan Zhakov |
-|  | jerenkrantz | Justin Erenkrantz |
-|  | joeswatosh | Joe Swatosh |
-|  | jorton | Joe Orton |
-|  | josander | Jostein Chr Andersen |
-|  | jrepenning | Jack Repenning |
-|  | julianfoad | Julian Foad |
-|  | jwhitlock | Jeremy Whitlock |
-|  | kameshj | Kamesh J |
-|  | kfogel | Karl Fogel |
-|  | kmradke | Kevin Radke |
-|  | larrys | Larry Shatzer Jr |
-|  | lgo | Lieven Govaerts |
-|  | markphip | Mark Phippard |
-|  | martinto | Martin Tomes |
-|  | mattiase | Mattias Engdegard |
-|  | maxb | Max Oliver Bowsher |
-|  | mbk | Mark Benedetto King |
-|  | mf | Martin Furter |
-|  | pburba | Paul Burba |
-|  | peters | Peter Samuelson |
-|  | philip | Philip Martin |
-|  | pmarek | Philipp Marek |
-|  | pmayweg | Patrick Mayweg |
-|  | rgupta | Raman Gupta |
-|  | rhuijben | Bert Huiben |
-|  | rooneg | Garrett Rooney |
-|  | sbutler | Stephen O'Neil Butler |
-|  | steveking | Stefan Küng |
-|  | striker | Sander Striker |
-|  | stsp | Stefan Sperling |
-|  | stylesen | Senthil Kumaran S |
-|  | sussman | Ben Collins-Sussman |
-|  | wein | Mathias Weinert |
-|  | wsanchez | Wilfredo Sánchez |
-
-
--  [December 2009](http://wiki.apache.org/incubator/December2009#Subversion) 
-
--  [January 2010](http://wiki.apache.org/incubator/January2010#Subversion) 
-
--  [February 2010](http://wiki.apache.org/incubator/February2010#Subversion) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-11-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2009-12-.. |  **NOTE: the mailing lists and the svn repository were set up in their final locations.** <br></br>If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-11-07 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-11-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2009-11-13 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-11-13 | Tell Mentors to track progress in the file 'incubator/projects/subversion.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-11-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-12-.. |  **NOTE: the RAT tool is being used for this.** <br></br>Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-12-.. |  **NOTE: the RAT tool is being used for this.** <br></br>Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2009-12-.. |  **NOTE: the RAT tool is being used for this.** <br></br>Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-11-13 | Check that all active committers have submitted a contributors agreement. |
-| 2009-11-13 | Add all active committers in the STATUS file. |
-| 2009-11-13 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-11-13 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-11-12 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-12-.. |  **NOTE: decided, but not (yet) set up. We still need to figure out our migration plan from the old tracker to the new (Bugzilla).** <br></br>Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2009-12-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/superset.md b/content/superset.md
deleted file mode 100644
index b7d1367..0000000
--- a/content/superset.md
+++ /dev/null
@@ -1,261 +0,0 @@
-Title: Superset Incubation Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Superset project graduated on 2020-11-19</span>
-
-
-Superset is an enterprise-ready web application for data exploration, data visualization and dashboarding.
-
-
-
-- 2017-05-02 Project enters incubation.
-
-- ...
-
-- 2019-08-28 Release Apache Superset (incubating) version 0.34.0
-
-- 2019-08-30 New Superset committer Erik Ritter
-
-- 2019-09-27 New Superset committer &amp; PPMC Daniel Gaspar
-
-- 2019-11-18 Release Apache Superset (incubating) version 0.35.0
-
-- 2020-01-02 New committer and PMC member: Craig Rueda
-
-- 2020-01-31 &gt;New PPMC member Ville Brofeldt
-
-- 2020-02-26 &gt;New committer &amp; PPMC member: Evan Rusackas
-
-- 2020-05-13 &gt;New IPMC member Bogdan Kyryliuk
-
-- 2020-05-26 &gt;Apache Superset (Incubating) version 0.36.0 Released
-
-- 2020-06-25 &gt;New committer and PPMC member: Will Barrett, Jesse Yang
-
-- 2020-06-25 &gt;New committer and PPMC member: Will Barrett, Jesse Yang
-
-
-- link to the main website: [http://superset.incubator.apache.org/](http://superset.incubator.apache.org/) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code) [https://github.com/apache/incubator-superset/wiki](https://github.com/apache/incubator-superset/wiki) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://superset.incubator.apache.org/](http://superset.incubator.apache.org/)  |
-| . | wiki |  [https://github.com/apache/incubator-superset/wiki](https://github.com/apache/incubator-superset/wiki)  |
-| Mailing list | dev |  `dev`  `@`  `superset.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `superset.incubator.apache.org`  |
-| Bug tracking | . |  [Jira: Superset](https://issues.apache.org/jira/browse/Superset)  |
-| Source code | GIT |  [https://github.com/apache/incucator-superset.git](https://github.com/apache/incubator-superset.git)  |
-| Mentors | felixcheung | Felix Cheungn |
-| . | jim | Jim Jagielski |
-| PPMC Members | Maxime Beauchemin | maximebeauchemin |
-| . | Aaron Suddjian | suddjian |
-| . | Beto Dealmeida | beto |
-| . | Bogdan Kyryliuk | bkyryliuk |
-| . | Chris Williams | ccwilliams |
-| . | Craig Rueda | craigrueda |
-| . | Daniel Gaspar | dpgaspar |
-| . | Erik Ritter | erikrit |
-| . | Evan Rusackas | rusackas |
-| . | Grace Guo | graceguo |
-| . | Jeff Feng | jfeng |
-| . | Jesse Yang | yjc |
-| . | John Bodley | johnbodley |
-| . | Krist Wongsuphasawat | kristw |
-| . | Michelle Thomas | michellet |
-| . | Nishant Bangarwa | nishant |
-| . | Tai Dupree | tai |
-| . | Ville Brofeldt | villebro |
-| . | Will Barrett | willbarrett |
-| Committers | Sylvia Tomiyama | stomiyama |
-| . | Fabian Menges | fabs |
-| . | Hugh Miles | hugh |
-| . | Kim Truong | ktruong |
-| . | Serena Jiang | serena |
-| . | Slim Bouguerra | bslim |
-| . | Timi Fasubaa | timi |
-| . | Vyl Chiang | vyl |
-| Champions | srinivas javvadi | javvadi.sreenu@gmail.com |
-| . | Karen Palacio | karen.palacio@kunan.com.ar |
-| . | Christopher Wakare | chris@intelliconnect-tech.com |
-| . | Moacy Barros | moacybarros@gmail.com |
-| . | Gianni Jacklone | gianni.jacklone@gmail.com |
-| . | vikas madaan | vikas.madaan@ril.com |
-| . | Ian Duncanson | ian.duncanson@honeywell.com |
-| . | Nuredin Mahemmud | lenuredin@gmail.com |
-| . | Warley Carvalho | warleyc2009@gmail.com |
-| . | Kazim Meraj | kazim.meraj@mi-c3.com |
-| . | Zuzana Vejrazkova | zuzana.vejrazkova@airbnb.com |
-| . | Hyram Du | hyram.du@appzen.com |
-| . | gaston fortuny | gastonfortuny@gmail.com |
-| . | Matt Langeman | matt@langeman.net |
-| . | Blair Shane | blairrshane@gmail.com |
-| . | Brandon Janes | brandon.janes@kunan.com.ar |
-| . | Abdullah Solangi | abdullah.solangi@ecoenergyfinance.org |
-| . | Florencia Alonso | florencia.alonso@kunan.com.ar |
-| . | Bhargav Kowshik | bhargav.kowshik@gmail.com |
-| . | Steven Suting | steven.suting@gmail.com |
-| . | Patrick Pichler | pichlerpa@gmx.at |
-| . | Nuno Heli Beires | heli88@gmail.com |
-| . | Nguyen Duc | vanduc.dn@gmail.com |
-| . | eugenia moreno | eugenia@preset.io |
-| . | Juan Ignacio Gozzer | juanignaciogozzer@gmail.com |
-| . | Amit Miran | amit.miran@nielsen.com |
-| . | Ali Cirik | aliavni@gmail.com |
-| . | Daniel Robins | daniel.robins@kunan.com.ar |
-| . | mengdie zhuang | zmdivy90@gmail.com |
-| . | jack pearson | jack@sectorinsight.com.au |
-| . | Kris OSWALT | koswalt@communitysystemsfoundation.org |
-| . | Austin Bennett | austin@dish.com |
-| . | Gaurav Agrawal | agrawalgaurav1999@gmail.com |
-| . | Jonatan Emanuel Alvarez | jonatan.alvarez@kunan.com.ar |
-| . | Diego Tondo | diego.tondo@cintelink.com.ar |
-| . | Vishal Jagtap | jagtap.vishal30@gmail.com |
-| . | Lenin Abigaba Kahanga | leninkaha@gmail.com |
-| . | Roger Kaufmann | roger.ka85@gmail.com |
-
-
--  [June, 2020](https://cwiki.apache.org/confluence/display/INCUBATOR/June2020#superset) 
-
--  [March, 2020](https://cwiki.apache.org/confluence/display/INCUBATOR/March2020#superset) 
-
--  [December, 2019](https://cwiki.apache.org/confluence/display/INCUBATOR/December2019#superset) 
-
--  [September, 2019](https://cwiki.apache.org/confluence/display/INCUBATOR/September2019#superset) 
-
--  [June, 2019](https://cwiki.apache.org/confluence/display/INCUBATOR/June2019#superset) 
-
--  [March, 2019](https://cwiki.apache.org/confluence/display/INCUBATOR/March2019#superset) 
-
--  [December, 2018](https://cwiki.apache.org/confluence/display/INCUBATOR/December2018#superset) 
-
--  [September, 2018](https://cwiki.apache.org/confluence/display/INCUBATOR/September2018#superset) 
-
--  [June, 2018](https://cwiki.apache.org/confluence/display/INCUBATOR/June2018#superset) 
-
--  [March, 2018](https://cwiki.apache.org/confluence/display/INCUBATOR/March2018#superset) 
-
--  [December, 2017](https://cwiki.apache.org/confluence/display/INCUBATOR/December2017#superset) 
-
--  [September, 2017](https://cwiki.apache.org/confluence/display/INCUBATOR/September2017#superset) 
-
--  [June, 2017](https://cwiki.apache.org/confluence/display/INCUBATOR/June2017#superset) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-12-03 | Make sure that the requested project name does not already exist. [PODLINGNAMESEARCH-173](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-173)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2017-05-21 | Ask infrastructure to set up and archive mailing lists |
-| 2017-05-26 | Mailing lists created. |
-| 2017-05-30 | Ask infrastructure to create Jira project. |
-| 2017-05-30 | Jira project created. [https://issues.apache.org/jira/projects/SUPERSET/issues/SUPERSET-10?filter=allopenissues](https://issues.apache.org/jira/projects/SUPERSET/issues/SUPERSET-10?filter=allopenissues)  |
-| 2017-05-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2020-08-07 | Subscribe all Mentors on the pmc and general lists. |
-| 2020-08-07 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2020-08-07 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2020-08-07 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
- [https://whimsy.apache.org/pods/project/superset](https://whimsy.apache.org/pods/project/superset) 
-
- |
-| 2020-08-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2020-09-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2020-09-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-08-06 | Check that all active committers have submitted a contributors agreement. |
-| 2020-08-06 | Add all active committers in the STATUS file. |
-| 2020-08-06. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers? (see [SIP-0](https://github.com/apache/incubator-superset/issues/5602) 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- [Incubation Status Page on our GitHub Wiki!](https://github.com/apache/incubator-superset/wiki/Incubation-Status-File) 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/synapse.md b/content/synapse.md
deleted file mode 100644
index 0f7e9c4..0000000
--- a/content/synapse.md
+++ /dev/null
@@ -1,188 +0,0 @@
-Title: Apache Synapse
-
-
-| This is the status page. **Synapse has now graduated!!!!**  |
-
-<span class="graduated">The Synapse project graduated on 2007-01-02</span>
-
-
- [http://ws.apache.org/synapse/](http://ws.apache.org/synapse/) 
-
-
-
-- 2005-08-22 Project announced publicly.
-
-- 2005-08-13 Project proposed and accepted for incubation in Apache.
-
-- 2005-12-12 Paul Fremantle presented on Apache Synapse at ApacheCon US 2005
-
-- 2006-01-23 Milestone 1 M1 released
-
-- 2006-05-09 Eran Chinthaka presented at JAX 2006 on Synapse
-
-- 2006-05-17 Glen Daniels presented at JavaOne on Synapse
-
-- 2006-05-25 Preparing M2 milestone release
-
-- 2006-06-05 M2 Milestone released
-
-- 2006-10-11 Presented Synapse at ApacheCon Austin
-
-- 2006-10-23 Created a Synapse Blog
-
-- 2006-12-14 Synapse 0.90 released
-
-- 2006-12-20 Three new committers proposed and voted on
-
-- 2007-01-02 Synapse passes graduation!!!!
-
-The Synapse project is creating a robust, lightweight and highly scalable XML and Web Service mediation framework based on open standards and specifications.
-
-
-To participate in the Synapse podling, you should join the mailing list. Just send an empty message to _synapse-dev-subscribe@ws.apache.org_ .
-
-
-The initial goal of the project while in incubation is to build a viable developer community and create a useful codebase. In particular, it is a stated aim of this project to re-use and integrate with other components from the Apache Web Services project such as Axis2, Axiom, Sandesha, Rampart, etc.
-
-
-
-- The Apache WS project will own the Synapse subproject, and the subproject will follow the Apache WS PMC's direction. All committers on this subproject will be committers on Apache WS and vice-versa.
-
-# Detailed References: {#Detailed+References%3A}
-
-| item | type | reference |
-|-------|-------|------------|
-| Status file | www | http://incubator.apache.org/projects/synapse.html |
-| Website | www | http://incubator.apache.org/synapse/ |
-| Mailing list | dev | synapse-dev@ws.apache.org |
-| Mailing list | users | synapse-user@ws.apache.org |
-| Source code | SVN | /repos/asf/incubator/synapse/code/trunk/ |
-| Mentor | Glen Daniels | Glen Daniels (CLA on file) |
-| Mentor | dims | Davanum Srinivas (CLA on file) |
-| Mentor | sanjiva | Sanjiva Weerawarana (CLA on file) |
-| Committers | pzf@apache.org | Paul Fremantle (CLA on file) |
-| Committers | asankha@apache.org | Asankha Perera (CLA on file) |
-| Committers | ajith@apache.org | Ajith Ranabahu (CLA on file) |
-| Committers | saminda@apache.org | Saminda Abeyruwan (CLA on file) |
-| Committers | hari@infravio.com | D. Hariharasudhan (CLA on file) |
-| Committers | vikas@infravio.com | P. Vikas Roonwal (CLA on file) |
-| Committers | gdaniels@apache.org | Glen Daniels (CLA on file) |
-| Committers | ant@apache.org | Ant Elder (CLA on file) |
-| Committers | jaliya | Jaliya Ekanayake (CLA on file) |
-| Committers | deepal@apache.org | Deepal Jayasinghe (CLA on file) |
-| Committers | chinthaka@apache.org | Chinthaka (CLA on file) |
-| Committers | ruwan@apache.org | Ruwan Linton (CLA on file) |
-
- _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-
-- Q4 2005 [http://wiki.apache.org/incubator/IncubatorBoardReport2005Q4](http://wiki.apache.org/incubator/IncubatorBoardReport2005Q4) 
-
-- Q1 2006 [http://wiki.apache.org/incubator/IncubatorBoardReport2006Q1](http://wiki.apache.org/incubator/IncubatorBoardReport2006Q1) 
-
-- April 2006 [http://wiki.apache.org/incubator/April2006](http://wiki.apache.org/incubator/April2006) 
-
-- May 2006 [http://wiki.apache.org/incubator/May2006](http://wiki.apache.org/incubator/April2006) 
-
-- August 2006 [http://wiki.apache.org/incubator/August2006](http://wiki.apache.org/incubator/April2006) 
-
-- November 2006 [http://wiki.apache.org/incubator/November2006](http://wiki.apache.org/incubator/April2006) 
-
-# Project Setup {#Project+Setup}
-
-## Identify the codebase {#Identify+the+codebase}
-
-| date | item |
-|-------|-------|
-| DONE | If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| DONE | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| DONE | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| DONE | Check that all active committers have a signed CLA on record. |
-| DONE | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
-| DONE | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| DONE | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Check that all active committers have submitted a contributors agreement. |
-| DONE | Add all active committers in the STATUS file. |
-| DONE | Ask root for the creation of committers' accounts |
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?<br></br> **Yes** 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)<br></br> **Yes, we have active committers and contributors from four companies plus two or more universities** 
-
-- Are project decisions being made in public by the committers?<br></br> **Yes** 
-
-- Are the decision-making guidelines published and agreed to by all of the committers?<br></br> **Yes** 
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| status | item |
-|---------|-------|
-| DONE | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE | Ask infrastructure to set up and archive Mailing lists. |
-| DONE | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE | Migrate the project to our infrastructure. |
-
-Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- DONE - Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Project Goals during Incubation {#Project+Goals+during+Incubation}
-
-## Build independent development community {#Build+independent+development+community}
-
-
-- 131 subscribers to dev list
-
-- 48 subscribers to user list
-
-- Added two committers during incubation (asankha, ruwan)
-
-## Produce a release {#Produce+a+release}
-
-
-- (2006-01-23) M1 release - voted, tagged, signed
-
-- (2006-06-05) M2 release - voted, tagged, signed
-
-- (2006-12-14) 0.90 release - voted, tagged, signed
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Has the receiving PMC voted to accept it? **Yes - thread starts [here](http://mail-archives.apache.org/mod_mbox/ws-general/200606.mbox/%3c88f5d710606221135s1997058dk83bbc88d1054fff8@mail.gmail.com%3e) ** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? **YES! 2007-01-02 Graduation vote passes - [result here](http://mail-archives.apache.org/mod_mbox/incubator-general/200701.mbox/%3c88f5d710701020043l7c54dedcq321e079846a838f0@mail.gmail.com%3e) ** 
diff --git a/content/syncope.md b/content/syncope.md
deleted file mode 100644
index f559741..0000000
--- a/content/syncope.md
+++ /dev/null
@@ -1,218 +0,0 @@
-Title: Syncope Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Syncope project graduated on 2012-11-21</span>
-
-
-Syncope is an Open Source system for managing identities in enterprise environments, implemented in J2EE technology.
-
-
-
-- 2012-11-21 Syncope established as TLP by the ASF board.
-
-- 2012-11-02 Syncope 1.0.3-incubating Release PPMC vote.
-
-- 2012-11-02 Syncope graduation resolution proposal IPMC vote.
-
-- 2012-11-02 We have a new committer and PPMC member: Jan Bernhardt.
-
-- 2012-10-30 Syncope 1.0.3-incubating Release PPMC vote.
-
-- 2012-10-08 Syncope 1.0.2-incubating Release approved.
-
-- 2012-10-05 Syncope 1.0.2-incubating Release IPMC vote.
-
-- 2012-10-02 Syncope 1.0.2-incubating Release PPMC vote.
-
-- 2012-09-13 We have a new committer and PPMC member: Jean-Baptiste Onofré.
-
-- 2012-09-06 Syncope 1.0.1-incubating Release approved.
-
-- 2012-09-03 Syncope 1.0.1-incubating Release IPMC vote.
-
-- 2012-08-30 Syncope 1.0.1-incubating Release PPMC vote.
-
-- 2012-08-14 Syncope 1.0.0-incubating Release approved.
-
-- 2012-08-10 Syncope 1.0.0-incubating Release (take 2) IPMC vote.
-
-- 2012-08-07 Syncope 1.0.0-incubating Release (take 2) PPMC vote.
-
-- 2012-08-07 Syncope 1.0.0-incubating Release rolled back.
-
-- 2012-08-03 Syncope 1.0.0-incubating Release IPMC vote.
-
-- 2012-07-31 Syncope 1.0.0-incubating Release PPMC vote.
-
-- 2012-07-26 Syncope 1.0.0-RC3-incubating Release approved.
-
-- 2012-07-23 Syncope 1.0.0-RC3-incubating Release IPMC vote.
-
-- 2012-07-18 Syncope 1.0.0-RC3-incubating Release PPMC vote.
-
-- 2012-07-02 Syncope 1.0.0-RC2-incubating Release approved.
-
-- 2012-06-28 Syncope 1.0.0-RC2-incubating Release IPMC vote.
-
-- 2012-06-25 Syncope 1.0.0-RC2-incubating Release PPMC vote.
-
-- 2012-06-01 Syncope 1.0.0-RC1-incubating Release approved.
-
-- 2012-05-29 Syncope 1.0.0-RC1-incubating Release IPMC vote.
-
-- 2012-05-24 Syncope 1.0.0-RC1-incubating Release PPMC vote.
-
-- 2012-05-21 We have a new contributor: Bob Lannoy.
-
-- 2012-05-09 We have a new contributor: Denis Signoretto.
-
-- 2012-02-10 Project enters incubation.
-
-The PPMC consists of all the committers and mentors listed here.
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/syncope/](http://incubator.apache.org/syncope/)  |
-| wiki | Confluence |  [https://cwiki.apache.org/confluence/display/SYNCOPE/Index](https://cwiki.apache.org/confluence/display/SYNCOPE/Index)  |
-| Mailing list | dev |  `syncope-dev`  `@`  `incubator.apache.org`  |
-| . | user |  `syncope-user`  `@`  `incubator.apache.org`  |
-| . | commits |  `syncope-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/SYNCOPE](https://issues.apache.org/jira/browse/SYNCOPE)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/syncope/](https://svn.apache.org/repos/asf/incubator/syncope/)  |
-| Mentors | coheigea | Colm O Heigeartaigh |
-| . | elecharny | Emmanuel Lecharny |
-| . | simonetripodi | Simone Tripodi |
-| Committers | anzelld | Dino Anzellotti |
-| . | coheigea | Colm O Heigeartaigh |
-| . | elecharny | Emmanuel Lecharny |
-| . | fmartelli | Fabio Martelli |
-| . | geert | Geert van der Ploeg |
-| . | ilgrosso | Francesco Chicchiriccò |
-| . | massi | Massimiliano Perrone |
-| . | mcucchiara | Maurizio Cucchiara |
-| . | mdisabatino | Marco Di Sabatino Di Diodoro |
-| . | nscendoni | Nicola Scendoni |
-| . | rene | René Mulder |
-| . | simonetripodi | Simone Tripodi |
-| . | jbonofre | Jean-Baptiste Onofré |
-| Extra | . | . |
-
-
--  [March 2012](http://wiki.apache.org/incubator/March2012) 
-
--  [April 2012](http://wiki.apache.org/incubator/April2012) 
-
--  [May 2012](http://wiki.apache.org/incubator/May2012) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2012-02-21 | Make sure that the requested project name does not already exist and that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2012-02-10 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2012-02-10 | Ask infrastructure to set up and archive mailing lists. |
-| 2012-02-10 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2012-02-10 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2012-02-18 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2012-02-10 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2012-02-10 | Subscribe all Mentors on the pmc and general lists. |
-| 2012-02-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2012-02-21 | Tell Mentors to track progress in the file 'incubator/projects/syncope.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2012-02-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2012-02-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2012-02-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2012-02-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2012-02-10 | Check that all active committers have submitted a contributors agreement. |
-| 2012-02-10 | Add all active committers in the STATUS file. |
-| 2012-02-10 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/systemml.md b/content/systemml.md
deleted file mode 100644
index 4919921..0000000
--- a/content/systemml.md
+++ /dev/null
@@ -1,197 +0,0 @@
-Title: SystemML Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-SystemML provides declarative large-scale machine learning (ML) that aims at flexible specification of ML algorithms and automatic generation of hybrid runtime plans ranging from single node, in-memory computations, to distributed computations such as Apache Hadoop MapReduce and Apache Spark.
-
-
-<span class="graduated">The SystemML project graduated on 2017-05-18</span>
-
-
-
-- 2015-11-02 Project enters incubation.
-
-- 2015-11-02 Podling name search submitted.
-
-- 2016-02-11 Apache SystemML 0.9.0 (incubating) released
-
-- 2016-05-03 New committer/ppmc: Glenn Weidner
-
-- 2016-05-16 New committer/ppmc: Faraz Makari Manshadi
-
-- 2016-06-10 Apache SystemML 0.10.0 (incubating) released
-
-- 2016-11-13 Apache SystemML 0.11.0 (incubating) released
-
-- 2016-11-19 New mentor: Henry Saputra
-
-- 2017-01-13 New committer/ppmc: Nakul Jindal
-
-- 2017-02-08 Apache SystemML 0.12.0 (incubating) released
-
-- 2017-03-03 Apache SystemML 0.13.0 (incubating) released
-
-- 2017-04-19 New committer/ppmc: Felix Schuler
-
-- 2017-05-08 Apache SystemML 0.14.0 (incubating) released
-
-- 2017-05-18 Apache SystemML graduates as a top level project
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://systemml.apache.org/](http://systemml.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `systemml.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `systemml.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `systemml.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/SYSTEMML](https://issues.apache.org/jira/browse/SYSTEMML)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-systemml.git](https://gitbox.apache.org/repos/asf?p=incubator-systemml.git)  |
-| Mentors | hsaputra | Henry Saputra |
-| . | lresende | Luciano Resende |
-| . | pwendell | Patrick Wendell |
-| . | rxin | Reynold Xin |
-| . | rbowen | Rich Bowen |
-| PPMC/Committers | ae2015 | Alexandre V Evfimievski |
-| . | acs_s | Arvind Surve |
-| . | reinwald | Berthold Reinwald |
-| . | dbtsai | DB Tsai |
-| . | deron | Deron Eriksson |
-| . | fmakari | Faraz Makari |
-| . | fschueler | Felix Schuler |
-| . | freiss | Fred Reiss |
-| . | gweidner | Glenn Weidner |
-| . | hsaputra | Henry Saputra |
-| . | holden | Holden Karau |
-| . | jkbradley | Joseph Bradley |
-| . | lresende | Luciano Resende |
-| . | mboehm7 | Matthias Boehm |
-| . | dusenberrymw | Mike Dusenberry |
-| . | nakul02 | Nakul Jindal |
-| . | niketanpansare | Niketan Pansare |
-| . | pwendell | Patrick WendelL |
-| . | prithvi | Prithviraj Sen |
-| . | rxin | Reynold Xin |
-| . | shirisht | Shirish Tatikonda |
-| . | meng | Xiangrui Meng |
-
-
--  [2015-12 SystemML Incubator Report](https://wiki.apache.org/incubator/December2015) 
-
--  [2016-01 SystemML Incubator Report](https://wiki.apache.org/incubator/January2016) 
-
--  [2016-02 SystemML Incubator Report](https://wiki.apache.org/incubator/February2016) 
-
--  [2016-05 SystemML Incubator Report](https://wiki.apache.org/incubator/May2016) 
-
--  [2016-08 SystemML Incubator Report](https://wiki.apache.org/incubator/August2016) 
-
--  [2016-11 SystemML Incubator Report](https://wiki.apache.org/incubator/November2016) 
-
--  [2017-02 SystemML Incubator Report](https://wiki.apache.org/incubator/February2017) 
-
--  [2017-05 SystemML Incubator Report](https://wiki.apache.org/incubator/May2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-12-30 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2015-11-30 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-12-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-11-04 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-01-16 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-01-16 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-11-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-11-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-11-30 | Tell Mentors to track progress in the file 'incubator/projects/systemml.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-11-30 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-02-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-02-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-11-09 | Check that all active committers have submitted a contributors agreement. |
-| 2015-11-09 | Add all active committers in the STATUS file. |
-| 2015-11-09 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? Yes, on May 17, 2017, the ASF Board voted to approve Apache SystemML as a Top Level Project. See [here](http://mail-archives.apache.org/mod_mbox/incubator-systemml-dev/201705.mbox/%3CCAGU5spde-w2fwVfQp8wLpuDN_66Z3rhPLUb%2BMMy8o_nR5oDC9Q%40mail.gmail.com%3E) .
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- SystemML received [5 +1 binding votes](https://www.mail-archive.com/general@incubator.apache.org/msg59748.html) to graduate from the Apache Incubator.
diff --git a/content/tajo.md b/content/tajo.md
deleted file mode 100644
index b26e672..0000000
--- a/content/tajo.md
+++ /dev/null
@@ -1,168 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Tajo project graduated on 2014-04-01</span>
-
-
-The Tajo project is a relational and distributed data warehouse system for Hadoop. Tajo is designed for low-latency and scalable ad-hoc queries, online aggregation and ETL on large-data sets by leveraging advanced database techniques.
-
-
-
-- 2014-01-02 New committer: Keuntae Park
-
-- 2013-11-20 0.2.0-incubating released.
-
-- 2013-03-07 Project enters incubation.
-
-
--  [link to the main website](http://tajo.incubator.apache.org/) 
-
-
-- link to the page(s) that tell how to participate ( [Website](http://tajo.incubator.apache.org/) , [Mailing lists](http://tajo.incubator.apache.org/mail-lists.html) , [Bug tracking](https://issues.apache.org/jira/browse/TAJO) , [Source code](http://tajo.incubator.apache.org/source-code.html) )
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://tajo.incubator.apache.org/](http://tajo.incubator.apache.org/)  |
-| . | wiki |  [http://wiki.apache.org/tajo/](http://wiki.apache.org/tajo/)  |
-| Mailing list | dev |  `dev`  `@`  `tajo.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `tajo.incubator.apache.org`  |
-| . | user |  `user`  `@`  `tajo.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `tajo.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/tajo](https://issues.apache.org/jira/browse/tajo)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-tajo.git](https://gitbox.apache.org/repos/asf/incubator-tajo.git)  |
-| Mentors | mattmann | Chris Mattman |
-| . | jghoman | Jakob Homan |
-| . | omalley | Owen O'Malley |
-| Committers | ereisman | Eli Reisman |
-| . | hsaputra | Henry Saputra |
-| . | hyunsik | Hyunsik Choi |
-| . | blrunner | Jae Hwa Jung |
-| . | jihoonson | Jihoon Son |
-| . | jhkim | Jin Ho Kim |
-| . | sirpkt | Keuntae Park |
-| . | rsumbaly | Roshan Sumbaly |
-| . | swkim | Sangwook Kim |
-| . | yliu | Yi A Liu |
-
-
--  [April 2013](http://wiki.apache.org/incubator/April2013) 
-
--  [May 2013](http://wiki.apache.org/incubator/May2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-10-04 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-03-11 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-03-12 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-03-12 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-03-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-03-12 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-03-17 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-03-02 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-03-14 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-03-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-01-19 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-03-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-01-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-03-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-10-23 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-03-19 | Check that all active committers have submitted a contributors agreement. |
-| 2013-05-08 | Add all active committers in the STATUS file. |
-| 2013-03-20 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tamaya.md b/content/tamaya.md
deleted file mode 100644
index 2953727..0000000
--- a/content/tamaya.md
+++ /dev/null
@@ -1,163 +0,0 @@
-Title: Tamaya Project Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Tamaya project retired from Apache Incubation on 2020-04-30</span>
-
-
-Tamaya is a highly flexible configuration solution based on an modular, extensible and injectable key/value based design, which should provide a minimal but extendible modern and functional API leveraging SE, ME and EE environments.
-
-
-
-- 2020-04-30 Apache Tamaya has retired
-
-- 2015-08-22 Apache Tamaya 0.1-incubating has been released.
-
-- 2015-01-25 New committer Reinhard Sandtner.
-
-- 2014-11-14 Project enters incubation.
-
-
-- Originally, Tamaya was at https://github.com/java-config
-
-
-- TODO: link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- TODO: link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www | Podling: [http://tamaya.incubator.apache.org/](http://tamaya.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `tamaya.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `tamaya.incubator.apache.org`  |
-| . | private |  `private`  `@`  `tamaya.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/TAMAYA](https://issues.apache.org/jira/browse/TAMAYA)  |
-| Source code | Git |  [https://github.com/apache?q=tamaya](https://github.com/apache?q=tamaya)  |
-| Mentors | dblevins | David Blevins |
-| . | johndament | John D. Ament |
-| . | gpetracek | Gerhard Petracek |
-| . | struberg | Mark Struberg |
-| Committers | anatole | Anatole Tresch |
-| . | aalmiray | Andres Almiray |
-| . | wkeil | Werner Keil |
-| . | otaviojava | Otávio Santana |
-| . | plexus | Oliver B. Fischer |
-| . | rmannibucau | Romain Manni-Bucau |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/Tamaya.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-11-14 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2014-11-14 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names: N/A. |
-| 2014-11-14 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance: N/A. |
-| 2014-11-14 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. DONE |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-11-14 | Ask infrastructure to create source repository modules and grant the committers karma. DONE by John D. Ament in [INFRA-8635](https://issues.apache.org/jira/browse/INFRA-8635)  |
-| 2014-11-14 | Ask infrastructure to set up and archive mailing lists. DONE by John D. Ament in [INFRA-8635](https://issues.apache.org/jira/browse/INFRA-8635)  |
-| 2014-11-14 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). DONE by John D. Ament in [INFRA-8635](https://issues.apache.org/jira/browse/INFRA-8635)  |
-| 2014-11-14 | Ask infrastructure to set up wiki (Confluence, Moin). TBD. |
-| 2014-11-25 | Migrate the project to our infrastructure. Initial import vote passed. DONE by Anatole Tresch |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-11-14 | Subscribe all Mentors on the pmc and general lists. DONE by John D. Ament |
-| 2014-11-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file). DONE by John D. Ament - all mentors have access already. |
-| 2014-11-20 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' DONE by John D. Ament |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2014-11-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. ONGOING. DONE by Anatole Tresch - Anatole's original source, his ICLA is now on file. |
-| 2014-11-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. DONE by Anatole Tresch - initial source import includes proper ASF headers. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. ONGOING |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. ONGOING |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. ONGOING. |
-| ....-..-.. | Add all active committers in the STATUS file. TODO |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tapestry.md b/content/tapestry.md
deleted file mode 100644
index 8073984..0000000
--- a/content/tapestry.md
+++ /dev/null
@@ -1,162 +0,0 @@
-Title: Tapestry Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-Tapestry has graduated - see http://tapestry.apache.org/
-
-
-Please note: this page is incomplete; it is mainly a placeholder so standard Incubator links work OK.
-
-
-<span class="graduated">The Tapestry project graduated on 2003-05-29</span>
-
-
-The Tapestry Project develops a component-based web application framework.
-
-
-
-- 2003-05-29 Project graduates to Jakarta
-
-- 2003-04-01 Project enters incubation.
-
-
-- http://incubator.apache.org/tapestry/
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/tapestry/](http://incubator.apache.org/tapestry/)  |
-| . | wiki | . |
-| Mailing list | dev |  `PROJECT-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `PROJECT-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/tapestry/](https://svn.apache.org/repos/asf/incubator/tapestry/)  |
-| Mentors | . | Andrew C. Oliver |
-| . | . | dIon Gillard |
-| Committers | . | . |
-| . | Mind Bridge |
-| . | Neil Clayton |
-| . | Malcolm Edgar |
-| . | Richard Lewis-Shell |
-| . | Howard Lewis Ship |
-| . | Geoff Longman |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tashi.md b/content/tashi.md
deleted file mode 100644
index dfe44d9..0000000
--- a/content/tashi.md
+++ /dev/null
@@ -1,147 +0,0 @@
-Title: Apache Tashi Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Tashi project retired on 2012-10-02</span>
-
-
-Tashi is an infrastructure through which service providers are able to build applications that harness cluster computing resources to efficiently access repositories of rich data.
-
-
-
-- 2008-11-03 Initial code import
-
-- 2008-10-17 First committers: Michael Ryan and Michael Stroucken
-
-- 2008-09-04 Project enters incubation
-
-- 2010-04-28 Richard Gass added as new committer
-
-| Item | Type | Reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/tashi/](http://incubator.apache.org/tashi/)  |
-| . | wiki | . |
-| Mailing lists | user |  [](mailto:tashi-user-subscribe@incubator.apache.org)  |
-| . | dev |  [](mailto:tashi-dev-subscribe@incubator.apache.org)  |
-| . | commits |  [](mailto:tashi-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/browse/tashi](http://issues.apache.org/jira/browse/tashi)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/tashi](http://svn.apache.org/repos/asf/incubator/tashi)  |
-| . | ViewVC |  [http://svn.apache.org/viewvc/incubator/tashi](http://svn.apache.org/viewvc/incubator/tashi)  |
-| Mentors | clr | Craig Russell |
-| . | pzf | Paul Freemantle |
-| Committers | mryan3 | Michael Ryan |
-| . | rgass | Richard Gass |
-| . | stroucki | Michael Stroucken |
-
-
-- Tashi reports four times a year in January, April, July and October. Reports are archived in the SVN tree.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-DD)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-09 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-09 | Subscribe all Mentors on the pmc and general lists. |
-| 2008-09 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2008-09 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-11-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-08-12 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2008-11-03 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-04-28 | Check that all active committers have submitted a contributors agreement. |
-| 2011-08-12 | Add all active committers in the STATUS file. |
-| 2010-04-28 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-09 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-09 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-11-03 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/taverna.md b/content/taverna.md
deleted file mode 100644
index bfe1837..0000000
--- a/content/taverna.md
+++ /dev/null
@@ -1,239 +0,0 @@
-Title: Taverna
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Taverna podling retired on 2020-02-20</span>
-
-
-Taverna is a domain-independent suite of tools used to design and execute data-driven workflows.
-
-
-
-- 2018-07-18 Retired 2 legacy git repos (INFRA-16698)
-
-- 2018-02-26 New PPMC member: Sagar
-
-- 2018-01-17 Release: taverna-server-3.1.0-incubating
-
-- 2016-12-01 New mentor: Stian Soiland-Reyes
-
-- 2016-10-20 New committer: Rajan Maurya
-
-- 2016-10-20 New committer: Sagar
-
-- 2016-09-20 New committer: Thilina Manamgoda
-
-- 2016-07-01 Release: taverna-engine-3.1.0-incubating, taverna-common-activities-2.1.0-incubating, taverna-commandline-3.1.0-incubating
-
-- 2016-03-11 Release: taverna-language-0.15.1-incubating, taverna-osgi-0.2.1-incubating
-
-- 2016-03-11 Release: taverna-language-0.15.1-incubating
-
-- 2016-03-01 Mentor swap: Chris Mattman ➝ Dan Debrunner
-
-- 2015-12-09 New PPMC member: Gale Naylor
-
-- 2015-12-01 New committer: Gale Naylor
-
-- 2015-08-11 First Apache Release: taverna-language-0.15.0-incubating
-
-- 2014-12-10 Website live
-
-- 2014-10-20 Project enters incubation.
-
-
--  [Homepage](https://taverna.incubator.apache.org/) 
-
-
-- link to the page(s) that tell how to participate ( [Website](https://taverna.incubator.apache.org/) , [Mailing lists](https://taverna.incubator.apache.org/contact/) , [Bug tracking](https://taverna.incubator.apache.org/community/issue-tracker) , [Source code](https://taverna.incubator.apache.org/code/) , [Contributing](https://taverna.incubator.apache.org/community/#contribute) )
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-
-- link to the [Project Maturity Assessment](https://cwiki.apache.org/confluence/display/TAVERNADEV/2016-03+Taverna+Graduation+Maturity+Assessment) )
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://taverna.incubator.apache.org/](https://taverna.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/TAVERNADEV/](https://cwiki.apache.org/confluence/display/TAVERNADEV/)  |
-| Mailing list | dev |  [](https://lists.apache.org/list.html?dev@taverna.apache.org)  |
-| . | users |  [](https://lists.apache.org/list.html?users@taverna.apache.org)  |
-| . | commits |  [](https://lists.apache.org/list.html?commits@taverna.apache.org)  |
-| . | private |  [](https://lists.apache.org/list.html?private@taverna.apache.org)  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/TAVERNA](https://issues.apache.org/jira/browse/TAVERNA)  |
-| Source code | GIT | https://gitbox.apache.org/repos/asf/incubator-taverna-*.git (see [https://taverna.incubator.apache.org/code/](https://taverna.incubator.apache.org/code/)  |
-|  | djd | Daniel J Debrunner |
-|  | stain | Stian Soiland-Reyes |
-|  | suresh | Suresh Srinivas |
-|  | smarru | Suresh Marru |
-|  | mpierce | Marlon Pierce |
-| Committers |  |  |
-|  | alaninmcr | Alan R Williams (PPMC) |
-|  | anenadic | Aleksandra Nenadic (PPMC) |
-|  | brenninc | Christian Y. Brenninkmeijer (PPMC) |
-|  | redmitry | Dmitriy Repchevsky (PPMC) |
-|  | dkf | Donal K. Fellows (PPMC) |
-|  | gnaylor | Gale Naylor (PPMC) |
-|  | ianwdunlop | Ian Dunlop (PPMC) |
-|  | jgarrido | Julián Garrido (PPMC) |
-|  | hainesr | Robert Haines (PPMC) |
-|  | therajanmaurya | Rajan Maurya |
-|  | sagar | Sagar (PPMC) |
-|  | shoaibsufi | Shoaib Sufi (PPMC) |
-|  | stain | Stian Soiland-Reyes (PPMC) |
-|  | stuzart | Stuart Owen (PPMC) |
-|  | maanadev | Thilina Manamgoda |
-| Emeritus | Previous mentors |  |
-|  | mattmann | Chris Mattmann |
-|  | andy | Andy Seaborne |
-
-
--  [November2014](https://wiki.apache.org/incubator/November2014) 
-
--  [December2014](https://wiki.apache.org/incubator/December2014) 
-
--  [January2015](https://wiki.apache.org/incubator/January2015) 
-
--  [February2015](https://wiki.apache.org/incubator/February2015) 
-
--  [March2015](https://wiki.apache.org/incubator/March2015) 
-
--  [June2015](https://wiki.apache.org/incubator/June2015) 
-
--  [September2015](https://wiki.apache.org/incubator/September2015) 
-
--  [December2015](https://wiki.apache.org/incubator/December2015) 
-
--  [March2016](https://wiki.apache.org/incubator/March2016) 
-
--  [June2016](https://wiki.apache.org/incubator/June2016) 
-
--  [September2016](https://wiki.apache.org/incubator/September2016) 
-
--  [December2016](https://wiki.apache.org/incubator/December2016) 
-
--  [March2017](https://wiki.apache.org/incubator/March2017) 
-
--  [June2017](https://wiki.apache.org/incubator/June2017) 
-
--  [September2017](https://wiki.apache.org/incubator/September2017) 
-
--  [December2017](https://wiki.apache.org/incubator/December2017) 
-
--  [March2018](https://wiki.apache.org/incubator/March2018) 
-
--  [June2018](https://wiki.apache.org/incubator/June2018) 
-
--  [September2018](https://wiki.apache.org/incubator/September2018) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-01-30 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) <br></br>Resolved via [PODLINGNAMESEARCH-68](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-68) . |
-| 2014-10-23 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2014-10-25 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2014-10-25 | Ask infrastructure to set up and archive mailing lists. |
-| 2014-10-25 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2014-10-25 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| Done | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-10-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-10-30 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-02-23 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-07-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-02-23 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-01-13 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-11-01 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| 2014-11-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/teaclave.md b/content/teaclave.md
deleted file mode 100644
index ec52982..0000000
--- a/content/teaclave.md
+++ /dev/null
@@ -1,158 +0,0 @@
-Title: Teaclave Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Teaclave is an open source universal secure computing platform, making computation on privacy-sensitive data safe and simple.
-
-
-
-- 2019-08-19 Project enters incubation.
-
-
-- Project Website: [https://teaclave.incubator.apache.org/](https://teaclave.incubator.apache.org/) 
-
-
-- Community: [https://teaclave.incubator.apache.org/community/](https://teaclave.incubator.apache.org/community/) 
-
-
-- Committers: [https://projects.apache.org/project.html?incubator-teaclave](https://projects.apache.org/project.html?incubator-teaclave) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://teaclave.incubator.apache.org/](https://teaclave.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `teaclave.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `teaclave.incubator.apache.org`  |
-| . | notifications |  `notifications`  `@`  `notification.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `teaclave.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/XXX](https://issues.apache.org/jira/browse/XXX)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-teaclave.git](https://gitbox.apache.org/repos/asf/incubator-teaclave.git)  |
-| Mentors | daijy | Jianyong Dai |
-| . | felixcheung | Felix Cheung |
-| . | kamaci | Furkan Kamaci |
-| . | mattsicker | Matt Sicker |
-| . | zjshen | Zhijie Shen |
-| Committers | mssun | Mingshen Sun |
-| . | uraj | Pei Wang |
-| . | rundongzhou | Rundong Zhou |
-| . | lenxwei | Tao Wei |
-| . | litongxin1991 | Tongxin Li |
-| . | yjing | Yiming Jing |
-| . | dingyu | Yu Ding |
-| . | yulongzhang | Yulong Zhang |
-| . | zfc | Zhaofeng Chen |
-| Roster | Whimsy |  [Teaclave Roster](https://whimsy.apache.org/roster/ppmc/teaclave)  |
-
-
--  [Marvin Board Reports](https://whimsy.apache.org/board/minutes/teaclave.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-09-16 | Request DNS (first step after creating podling status page) |
-| 2019-09-23 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| N/A | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| N/A | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tephra.md b/content/tephra.md
deleted file mode 100644
index c515d7d..0000000
--- a/content/tephra.md
+++ /dev/null
@@ -1,145 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Tephra project graduated as part of Apache Phoenix on 2019-11-15</span>
-
-
-Tephra is a transaction engine for distributed data stores like Apache HBase. It provides ACID semantics for concurrent data operations that span over region boundaries in HBase using Optimistic Concurrency Control.
-
-
-
-- 2016-03-07 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://tephra.incubator.apache.org/](http://tephra.incubator.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `tephra.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `tephra.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/TEPHRA |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf/incubator-tephra.git](https://gitbox.apache.org/repos/asf/incubator-tephra.git)  |
-| Website source | SVN |  [https://svn.apache.org/repos/asf/incubator/tephra/](https://svn.apache.org/repos/asf/incubator/tephra/)  |
-| Champion | jamestaylor | James Taylor |
-| Mentors | gates | Alan Gates |
-| . | apurtell | Andrew Purtell |
-| . | jamestaylor | James Taylor |
-| . | larsh | Lars Hofhansl |
-| Committers | anew | Andreas Neumann |
-| . | garyh | Gary Helmling |
-| . | . | Gokul Gunasekaran |
-| . | jamestaylor | James Taylor |
-| . | poorna | Poorna Chandra |
-| . | chtyim | Terence Yim |
-| . | tdsilva | Thomas D'Silva |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-03-12 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-03-12 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-03-12 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-03-12 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/textmarker.md b/content/textmarker.md
new file mode 100644
index 0000000..93e3adc
--- /dev/null
+++ b/content/textmarker.md
@@ -0,0 +1,72 @@
+Title: Apache UIMA TextMarker Codebase Intellectual Property (IP) Clearance Status
+
+
+Apache UIMA TextMarker is a rule-based script language supported by Eclipse-based tooling. The language is designed to enable rapid development of text processing applications within UIMA. A special focus lies on the intuitive and flexible domain specific language for defining patterns of annotations. The Eclipse-based tooling for TextMarker, called the TextMarker Workbench, was created to support the user and to facilitate every step when writing TextMarker rules. Both the TextMarker rule language and the TextMarker Workbench integrate smoothly with Apache UIMA.
+
+
+TextMarker is contributed as zip-file with multiple java projects and a zip file with wiki content.
+
+
+
+- The UIMA PMC is responsible for the code.
+
+
+- The code will be imported into https://svn.apache.org/repos/asf/uima/sandbox/TextMarker as part a of the UIMA project.
+
+
+- Marshall Schor, Jörn Kottmann and Peter Klügl are responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-01-08 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The code is available here: https://issues.apache.org/jira/secure/attachment/12487004/TextMarker.zip.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-01-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-01-08 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _TextMarker_ , and a Software Grant recorded with Corporate CLAs:
+
+
+
+- Signed Corp CLA for Peter Klügl for TextMarker by the University of Würzburg, Germany
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Universität Würzburg, Germany_ 
+
+-  _Peter Klügl_ 
+
+| date | item |
+|------|------|
+| 2013-01-08 | Check that all active committers have a signed CLA on record. |
+| 2013-01-08 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-01-08 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-01-08 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://markmail.org/message/igdc65lyqpvmmz3h
+
+- http://mail-archives.apache.org/mod_mbox/uima-dev/201108.mbox/ajax/%3C4E3691EA.6040401%40uni-wuerzburg.de%3E
diff --git a/content/tez.md b/content/tez.md
deleted file mode 100644
index 7de3efc..0000000
--- a/content/tez.md
+++ /dev/null
@@ -1,206 +0,0 @@
-Title: Tez Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Tez project graduated on 2014-07-16</span>
-
-
-Tez is an application framework which allows for a complex directed-acyclic-graph of tasks for processing data and is built atop Apache Hadoop YARN.
-
-
-
-- 2014-07-16. ASF Board establishes the Apache Tez project.
-
-- 2014-07-14. Apache Tez 0.4.1-incubating released.
-
-- 2014-04-05. Apache Tez 0.4.0-incubating released.
-
-- 2014-02-28. Apache Tez 0.3.0-incubating released.
-
-- 2013-12-03. Apache Tez 0.2.0-incubating released.
-
-- 2013-02-25. Apache Tez enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://tez.incubator.apache.org/](http://tez.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/TEZ](https://cwiki.apache.org/confluence/display/TEZ)  |
-| Mailing list | dev |  `dev`  `@`  `tez.incubator.apache.org`  |
-| . | user |  `user`  `@`  `tez.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `tez.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/TEZ](https://issues.apache.org/jira/browse/TEZ)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-tez.git](https://gitbox.apache.org/repos/asf/incubator-tez.git)  |
-| Mentors | acmurthy | Arun C. Murthy |
-| . | cdouglas | Chris Douglas |
-| . | gates | Alan Gates |
-| . | jghoman | Jakob Homan |
-| . | mattmann | Chris Mattmann |
-| . | omalley | Owen O’Malley |
-| Committers | acmurthy | Arun C. Murthy |
-| . | billgraham | Bill Graham |
-| . | bikas | Bikas Saha |
-| . | bobby | Robert Evans |
-| . | cdouglas | Chris Douglas |
-| . | daryn | Daryn Sharp |
-| . | ddas | Devaraj Das |
-| . | gates | Alan Gates |
-| . | gopalv | Gopal Vijayaraghavan |
-| . | gunther | Gunther Hagleitner |
-| . | hitesh | Hitesh Shah |
-| . | hashutosh | Ashutosh Chauhan |
-| . |  | Jean Xu |
-| . | jitendra | Jitendra Pandey |
-| . | jlowe | Jason Lowe |
-| . | julien | Julien Le Dem |
-| . | kevinwilfong | Kevin Wilfong |
-| . | mliddell | Mike Liddell |
-| . | kamrul | Mohammad Kamrul Islam |
-| . | namit | Namit Jain |
-| . | nroberts | Nathan Roberts |
-| . | omalley | Owen O’Malley |
-| . | rbalamohan | Rajesh Balamohan |
-| . | rohini | Rohini Palaniswamy |
-| . | sseth | Siddharth Seth |
-| . | tassapola | Tassapol Athiapinya |
-| . | tgraves | Thomas Graves |
-| . | tomwhite | Tom White |
-| . | vikram | Vikram Dixit |
-| . | vinodkv | Vinod Kumar Vavilapalli |
-
-
--  [May, 2014](http://wiki.apache.org/incubator/May2014) 
-
--  [February, 2014](http://wiki.apache.org/incubator/February2014) 
-
--  [November, 2013](http://wiki.apache.org/incubator/November2013) 
-
--  [August, 2013](http://wiki.apache.org/incubator/August2013) 
-
--  [June, 2013](http://wiki.apache.org/incubator/June2013) 
-
--  [April, 2013](http://wiki.apache.org/incubator/April2013) 
-
--  [March, 2013](http://wiki.apache.org/incubator/March2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2013-02-25 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-03-15 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-03-15 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-03-15 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-03-15 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-03-15 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-02-22 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2013-03-20 | Subscribe all Mentors on the pmc and general lists. |
-| 2013-04-11 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2013-04-11 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-03-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2013-03-15 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-03-15 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-03-15 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2014-07-01 | Check that all active committers have submitted a contributors agreement. |
-| 2013-03-15 | Add all active committers in the STATUS file. |
-| 2013-03-15 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- Podling PMC has voted to accept responsibility of the project as a TLP
-
-- Board voted to accept Tez as a TLP in its meeting on July 16, 2014
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Incubator has recommended graduation and voted to approve graduation
diff --git a/content/thrift.md b/content/thrift.md
deleted file mode 100644
index d99fe79..0000000
--- a/content/thrift.md
+++ /dev/null
@@ -1,183 +0,0 @@
-Title: Apache Thrift Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Thrift project graduated on 2010-10-20</span>
-
-
-Thrift is cross-language serialization and RPC framework. It combines a powerful software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, C#, Erlang, Perl, and several other languages. Thrift was originally developed at Facebook and open-sourced in April, 2007. Thrift entered the Apache Incubator in May, 2008.
-
-
-
-- 2010-10-20 Thrift Graduates to a [Top Level Project](http://thrift.apache.org/) 
-
-- 2010-08-04 Thrift 0.3 released
-
-- 2008-05 Project enters incubation.
-
-
--  [Thrift ASF Project Official Website](http://incubator.apache.org/thrift/) 
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Official Website | www |  [http://incubator.apache.org/thrift/](http://incubator.apache.org/thrift/)  |
-| . | wiki |  [http://wiki.apache.org/thrift/](http://wiki.apache.org/thrift/)  |
-| Developers Mailing List | dev |  [thrift-dev@incubator.apache.org](mailto:thrift-dev-subscribe@incubator.apache.org)  |
-| Commits Mailing List | commits |  [thrift-commits@incubator.apache.org](mailto:thrift-commits-subscribe@incubator.apache.org)  |
-| User Mailing List | user |  [thrift-user@incubator.apache.org](mailto:thrift-user-subscribe@incubator.apache.org)  |
-| Bug tracking | Jira |  [http://issues.apache.org/jira/browse/thrift](http://issues.apache.org/jira/browse/thrift)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/incubator/thrift/](http://svn.apache.org/repos/asf/incubator/thrift/)  |
-| Mentors | cutting | Doug Cutting (Champion) |
-| . | upayavira | Upayavira |
-| Committers | aditya | Aditya Agarwal |
-| . | kclark | Kevin Clark |
-| . | bryanduxbury | Bryan Duxbury (PPMC) |
-| . | esteve | Esteve Fernandez (PPMC) |
-| . | marck | Marc Kwiatkowski |
-| . | todd | Todd Lipcon |
-| . | jake | Jake Luciani (PPMC) |
-| . | bmaurer | Ben Maurer (PPMC) |
-| . | geechorama | Andrew McGeachie |
-| . | cpiro | Chris Piro |
-| . | dreiss | David Reiss (PPMC) |
-| . | mcslee | Mark Slee (PPMC) |
-| . | jwang | James Wang (PPMC) |
-| . | molinaro | Anthony Molinaro |
-
-
--  [July 2010](http://wiki.apache.org/incubator/July2010) 
-
-- April 2010 Not Submitted
-
--  [January 2010](http://wiki.apache.org/incubator/January2010) 
-
--  [October 2009](http://wiki.apache.org/incubator/October2009) 
-
--  [July 2009](http://wiki.apache.org/incubator/July2009) 
-
--  [April 2009](http://wiki.apache.org/incubator/April2009) 
-
--  [January 2009](http://wiki.apache.org/incubator/January2009) 
-
--  [October 2008](http://wiki.apache.org/incubator/October2008) 
-
--  [July 2008](http://wiki.apache.org/incubator/July2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007-10-23 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-01-12 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2008-01-12 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-11-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-04-07<br></br>[ [THRIFT-387](https://issues.apache.org/jira/browse/THRIFT-387) ] | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-12-07<br></br>[ [THRIFT-622](https://issues.apache.org/jira/browse/THRIFT-622) ] | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2009-12-07<br></br>[ [THRIFT-622](https://issues.apache.org/jira/browse/THRIFT-622) ] | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tika-tika-helm.md b/content/tika-tika-helm.md
new file mode 100644
index 0000000..8a9d564
--- /dev/null
+++ b/content/tika-tika-helm.md
@@ -0,0 +1,61 @@
+Title: Apache Tika tika-helm Codebase Intellectual Property (IP) Clearance Status
+
+
+tika-helm is a Helm chart to deploy Apache Tika on Kubernetes. This Helm chart is a lightweight way to configure and run the official apache/tika Docker image.
+
+
+
+- The Apache Tika PMC will be responsible for the code
+
+
+- It will exist as a standalone source code repository managed by the Apache Tika project
+
+
+- Officer or member managing donation: Lewis John McGibbney (Apache Tika PMC Member)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2021-04-02 | Trademark search found no active trademarks for software products named tika-helm |
+
+Origin: [https://github.com/lewismc/tika-helm](https://github.com/lewismc/tika-helm) , which is being contributed by transitioning the entire repository to the Apache Github organization.
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-04-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as recorded in the foundation/officers area, in either grants.txt or cclas.txt, so that the grant can be easily identified. If recorded in the grants.txt document, use the "for" or title. If recorded in the cclas.txt document, use the company name (field 2 without submitter name) and the "form on file" name (field 4, without any people's names)._ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Lewis John McGibbney (lewismc)_ 
+
+| date | item |
+|------|------|
+| 2021-04-12 | Check that all active committers have a signed CLA on record. |
+| 2021-04-12 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2021-04-12 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2021-04-02 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [The VOTE thread on the Apache Tika dev@ mailing list accepting the donation](https://s.apache.org/9p0qx) 
diff --git a/content/tika.md b/content/tika.md
deleted file mode 100644
index 4cfee53..0000000
--- a/content/tika.md
+++ /dev/null
@@ -1,389 +0,0 @@
-Title: Apache Tika Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Tika project graduated on 2008-10-28</span>
-
-
-Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries.
-
-
-
--  **2008-10-28:** Tika graduates into a Lucene subproject
-
--  **2008-10-01:** Dave Meikle added as new committer
-
--  **2008-04-07:** Niall Pemberton added as new committer
-
--  **2007-12-27:** Apache Tika 0.1-incubating released
-
--  **2007-10-02:** Keith Bennett added as new committer
-
--  **2007-03-22:** Apache Tika begins incubation
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/tika/](http://incubator.apache.org/tika/)  |
-| Mailing list | dev |  `tika-dev`  `@`  `incubator.apache.org`  |
-|  | commits |  `tika-commits`  `@`  `incubator.apache.org`  |
-| Moderators | jukka | Jukka Zitting |
-| Bug tracking | jira |  [https://issues.apache.org/jira/browse/TIKA](https://issues.apache.org/jira/browse/TIKA)  |
-| Source code | svn |  [https://svn.apache.org/repos/asf/incubator/tika/](https://svn.apache.org/repos/asf/incubator/tika/)  |
-| Sponsor |  |  [Apache Lucene PMC](http://lucene.apache.org/)  |
-| Mentors | cutting | Doug Cutting |
-|  | bdelacretaz | Bertrand Delacretaz |
-|  | jukka | Jukka Zitting |
-| Committers | ridabenjelloun | Rida Benjelloun |
-|  | mharwood | Mark Harwood |
-|  | mattmann | Chris A. Mattmann |
-|  | siren | Sami Siren |
-|  | jukka | Jukka Zitting |
-|  | kbennett | Keith Bennett |
-|  | niallp | Niall Pemberton |
-|  | dmeikle | Dave Meikle |
-
-# October 2008 {#October 2008}
-
-Apache Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries. Tika entered incubation on March 22nd, 2007.
-
-
- **Community** 
-
-
-
-- Dave Meikle was just voted in as a new committer.
-
-- Paolo Mottadelli will present Tika at ApacheCon US.
-
- **Development** 
-
-
-
-- Tika 0.2 should be released soon.
-
-- Usage documentation has been added to the website.
-
- **Issues before graduation** 
-
-
-
-- The current plan is to graduate as a Lucene subproject, which could happen soon as the incubation criteria seem to be met.
-
-# July 2008 {#July 2008}
-
-Apache Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries. Tika entered incubation on March 22nd, 2007.
-
-
- **Community** 
-
-
-
-- Tika community remains relatively small, with just a handful of active members
-
- **Development** 
-
-
-
-- Work towards Tika 0.2 continues, Chris Mattman has volunteered to be the release manager
-
- **Issues before graduation** 
-
-
-
-- Increase the size and diversity of the community (or graduate into a Lucene subproject?)
-
-# April 2008 {#April 2008}
-
-Apache Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries. Tika entered incubation on March 22nd, 2007.
-
-
- **Community** 
-
-
-
-- Niall Pemberton joined the project as a committer and PPMC member
-
-- The number of issues reported by external contributors is growing gradually
-
-- There was a Fast Feather Talk on Tika in ApacheCon EU 2008
-
-- We have good contacts especially with Apache POI and PDFBox
-
- **Development** 
-
-
-
-- We are working towards Tika 0.2
-
-- Metadata handling improvements are being discussed
-
- **Issues before graduation** 
-
-
-
-- Increase the size of the community
-
-# January 2008 {#January 2008}
-
-Tika (http://incubator.apache.org/tika) is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser Libraries. Tika entered incubation on March 22nd, 2007.
-
-
- **Community** 
-
-
-
-- No new committers since the last report, activity has been moderate but steady, leading to the 0.1 release.
-
- **Development** 
-
-
-
-- Tika 0.1 (incubating) has just been released.
-
-- Chris Mattmann intends to use that release in Nutch, That's good progress towards Tika's goal of providing data extraction functionality to other projects.
-
-- A new Tika logo was created by Google Highly Open Participation student, hasn't been integrated yet.
-
- **Issues before graduation** 
-
-
-
-- Now that the first release is out, we need to work on growing the community and figuring out how to best interact with external parser projects.
-
-# October 2007
-
-Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries. Tika entered incubation on March 22nd, 2007.
-
-
- **Community** 
-
-
-There have been a number of positive items within Tika during the last few months. The traffic on the Tika mailing list has increased significantly (with typically 2, 3 questions, and 1 or 2 commits every day, or every other day), and there have been a lot of recent inquiries from external projects wanting to collaborate with Tika (including Aperture, PDFBox and a fellow developing a JSon library currently hosted at Google code). In addition, Tika's architecture has become a recent discussion of interest (as we'll see below).
-
-
-We recently elected Keith Bennett as a new committer to Tika. Keith has been spearheading many of the new patches committed to Tika, as well as participating in discussions about the architecture, and future direction of the project.
-
-
-Tika will be represented at the "Fast Feather" track at ApacheCon US by Jukka Zitting. The rest of the community is helping to create the content for the presentation. The abstract is listed below:
-
-
-> Tika is a new content analysis framework borne from the desire to factor our commonality from the Apache Nutch search engine framework. Tika provides a mime detection framework, an extensible parsing framework and metadata environment for content analysis. Though in its nascent stages, progress on Tika has recently taken shape and the project is nearing a stable 0.1 release. In this talk, we'll describe the core APIs of Tika and discuss its use in several distinct domains including search engines, scientific data dissemination and an industrial setting.
-
- **Development** 
-
-
-There have been a flurry of JIRA issues and code activity (http://issues.apache.org/jira/browse/TIKA) including 47 issues currently in JIRA, with 32 resolved issues, 14 closed issues, and 2 open major/minor issues in progress).
-
-
-Tika's Parser interface (one of its key components) has just undergone a major overhaul led by Jukka Zitting, and Chris Mattmann has recently contributed a MimeType system (with help from fellow Apache Nutch committer Jerome Charron) to Tika. We also cleaned up and refactored large parts of the rest of the code (removing references to LiusLite and branding the project wherever possible with the Tika name), in preparation for an upcoming 0.1 release.
-
-
-Chris Mattmann has led an effort to carve out the existing MimeType detection system in Apache Nutch (http://lucene.apache.org/nutch/) and replace it with Tika's improved MimeType detection system. There is a patch sitting in JIRA right now (http://issues.apache.org/jira/browse/NUTCH-562), and barring objections, Nutch will rely on Tika for its MimeType detection abilities.
-
-
-Also active recently were committers Bertrand Delacretaz, Sami Siren and Rida Benjelloun, committing patches and improvements wherever needed.
-
-
- **Issues before graduation** 
-
-
-No changes since our last report: the Tika project is still at an early stage of incubation. We need to continue bringing in the initial codebases and are targeting an initial incubating release (0.1) probably within the next month. We also need to work on growing the community and figuring out how to best interact with external parser projects.
-
-
-# July 2007 {#July 2007}
-
-Tika is a toolkit for detecting and extracting metadata and structured text content from various document formats using existing parser libraries. Tika entered incubation on March 22nd, 2007.
-
-
- **Community** 
-
-
-
-- The Tika mailing list has seen increased activity in the last weeks, with some new people showing interest for Tika's goals.
-
-- Grant Ingersoll brought the Aperture framework to our attention (http://aperture.sourceforge.net/), which has similar goals to Tika. We will look at possible synergies.
-
- **Development** 
-
-
-
-- No code has been committed since our last report, but some initial code is ready in JIRA and should be committed soon.
-
- **Issues before graduation** 
-
-
-
-- No changes since our last report: the Tika project is still at an early stage of incubation. We need to continue bringing in the initial codebases and probably target for an initial incubating release later this year. We also need to work on growing the community and figuring out how to best interact with external parser projects.
-
-# June 2007 {#June 2007}
-
-Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries. Tika entered incubation on March 22nd, 2007.
-
-
- **Community** 
-
-
-The Tika mailing lists have been relatively quiet lately, probably because with little code we don't yet have many concrete issues to talk about.
-
-
- **Development** 
-
-
-We saw the first piece of Tika code when Chris A. Mattmann ported the Nutch metadata framework to Tika. Rida Benjelloun has created a version of the Lius codebase to be included in Tika, and the code is currently in the issue tracker.
-
-
- **Issues before graduation** 
-
-
-The Tika project is still at an early stage of incubation. We need to continue bringing in the initial codebases and probably target for an initial incubating release later this year. We also need to work on growing the community and figuring out how to best interact with external parser projects.
-
-
-# May 2007 {#May 2007}
-
-Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries.
-
-
-Incubating since: March 22nd, 2007.
-
-
- **Community** 
-
-
-We had a good project bootstrap meeting as a part of the text analysis BOF at the ApacheCon EU in Amsterdam. The resulting ideas were summarized on the project mailing list, and the first design threads have started.
-
-
- **Development** 
-
-
-We've started discussing the design of the Tika toolkit. It seems like we will select one of the existing codebases listed in the project proposal as the basis of an early 0.1 release, and start refactoring the code into a more generic toolkit. The Tika svn tree is still empty, but I expect us to see the first code commits before the next report.
-
-
- **Infrastructure** 
-
-
-All the initial infrastructure is now in place. There is still some activity on the temporary Tika wiki on the Google Project hosting service, so we may end up requesting a Tika wiki to be set up on the ASF infrastructure.
-
-
- **Issues before graduation** 
-
-
-The Tika project is still at an early stage of incubation. The most important tasks before graduation are to develop and release the Tika codebase and to grow a diverse and sustainable project community.
-
-
-# April 2007 {#April 2007}
-
-Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries. Tika entered incubation on March 22nd, 2007.
-
-
-The Tika project has just started. The basic infrastructure (mailing lists, subversion, issue tracker, web site) is mostly in place; the only thing still missing is one committer account. We expect to get started with the actual design and code work during the next few weeks.
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007-03-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| NA | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2007-03-08 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2007-03-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2007-03-08 | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2007-03-31 | Tell Mentors to track progress in the file 'incubator/projects/tika.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2008-10-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2008-10-17 | Check and make sure that for all code included with the distribution that is not under the Apache license, have the right to combine with Apache-licensed code and redistribute. |
-| 2008-10-17 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2007-03-07 | Check that all active committers have submitted a contributors agreement. |
-| 2007-03-31 | Add all active committers in the STATUS file. |
-| 2008-10-17 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-03-31 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-03-31 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-03-31 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2007-05-09 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-See the [issue tracker](https://issues.apache.org/jira/browse/TIKA) .
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tinkerpop-gremlint.md b/content/tinkerpop-gremlint.md
new file mode 100644
index 0000000..2f8c478
--- /dev/null
+++ b/content/tinkerpop-gremlint.md
@@ -0,0 +1,68 @@
+Title: gremlint Intellectual Property (IP) Clearance Status
+
+
+gremlint is a linter and code formatter for Apache TinkerPop's Gremlin graph query language.
+
+
+
+- Which PMC will be responsible for the code: Apache TinkerPop PMC
+
+
+- Into which existing project/module: apache/tinkerpop
+
+
+- Officer or member managing donation: Stephen Mallette
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2020-09-15 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: (5dcf0e6d7aeda988e100c3349dc3cdec5d8ba1f9) from [gremlint GitHub Repository](https://github.com/OyvindSabo/gremlint/) and (9d3416833ac6ff9733548e9a8d85eaee915fe23f) from [gremlin.com GitHub Repository](https://github.com/OyvindSabo/gremlint.com/) 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2021-02-10 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2021-02-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: Gremlint code formatter ( [Secretary Confirmation](https://lists.apache.org/thread.html/rd171c83ca5df0d16d8cbeb16f73eb39f790034424bb923eaf7e133ec%40%3Cprivate.tinkerpop.apache.org%3E) )
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Ardoq
+
+- Øyvind Sæbø
+
+| date | item |
+|------|------|
+| 2021-02-15 | Check that all active committers have a signed CLA on record. ( [Secretary Confirmation](https://lists.apache.org/thread.html/r96675decc0ac3927d80f7fbd50e939ba822821060dc30c45703fba3f%40%3Cprivate.tinkerpop.apache.org%3E) ) |
+| 2020-09-15 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2020-09-16 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2020-09-16 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [TinkerPop dev list proposal](https://lists.apache.org/thread.html/r5bc915ec5281b3678a62e0be91cb26e7089d8a23252b7a5efcac5023%40%3Cdev.tinkerpop.apache.org%3E) 
+
+-  [TinkerPop dev list concensus](https://lists.apache.org/thread.html/raaefce2315ce7c32a288faa0657a39819481dc0aff632bdabe0b9b71%40%3Cdev.tinkerpop.apache.org%3E) 
+
+-  [VOTE RESULT](https://lists.apache.org/thread.html/r1006ed56b5d92628f3378f9baef854da6fef3f83d8492b746b467ab6%40%3Cdev.tinkerpop.apache.org%3E) 
diff --git a/content/tinkerpop.md b/content/tinkerpop.md
deleted file mode 100644
index 880a541..0000000
--- a/content/tinkerpop.md
+++ /dev/null
@@ -1,204 +0,0 @@
-Title: Incubation Status Template
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The TinkerPop project graduated on 2016-05-23</span>
-
-
-TinkerPop is a graph computing framework, written in Java.
-
-
-
-- 2015-01-16 Project entered incubation.
-
-- 2015-04-28 Released 3.0.0.M8-incubating.
-
-- 2015-06-05 Released 3.0.0.M9-incubating.
-
-- 2015-07-10 Matt Frantz is a new committer.
-
-- 2015-07-16 Released 3.0.0-incubating.
-
-- 2015-09-16 Released 3.0.1-incubating.
-
-- 2015-09-30 Jason Plurad is a new committer.
-
-- 2015-10-29 Released 3.0.2-incubating.
-
-- 2015-11-04 Dylan Millikin is a new committer.
-
-- 2015-11-10 Ted Wilmes is a new committer.
-
-- 2015-11-24 Released 3.1.0-incubating.
-
-- 2016-01-12 Ted Wilmes is a new PPMC member.
-
-- 2016-02-08 Released 3.1.1-incubating.
-
-- 2016-02-21 Pieter Martin is a new committer.
-
-- 2016-03-16 Ketrina Yim is a new committer.
-
-- 2016-03-28 Jean-Baptiste Musso is a new committer.
-
-- 2016-04-08 Released 3.1.2-incubating.
-
-- 2016-04-08 Released 3.2.0-incubating.
-
-- 2016-04-30 Michael Pollmeier is a new committer.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://tinkerpop.com](http://tinkerpop.com)  |
-| . | apache |  [http://tinkerpop.incubator.apache.org](http://tinkerpop.incubator.apache.org)  |
-| . | documentation |  [http://tinkerpop.incubator.apache.org/docs/3.2.0-incubating/reference/](http://tinkerpop.incubator.apache.org/docs/3.2.0-incubating/reference/)  |
-| . | javadoc |  [http://tinkerpop.incubator.apache.org/javadocs/3.2.0-incubating/full/](http://tinkerpop.incubator.apache.org/javadocs/3.2.0-incubating/full/)  |
-| . | contributing |  [https://github.com/apache/incubator-tinkerpop/blob/master/CONTRIBUTING.asciidoc](https://github.com/apache/incubator-tinkerpop/blob/master/CONTRIBUTING.asciidoc)  |
-| Mailing list | dev |  `dev`  `@`  `tinkerpop.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `tinkerpop.incubator.apache.org`  |
-| . | private |  `private`  `@`  `tinkerpop.incubator.apache.org`  |
-| . | user |  [http://groups.google.com/group/gremlin-users](http://groups.google.com/group/gremlin-users)  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/TINKERPOP3/](https://issues.apache.org/jira/browse/TINKERPOP3/)  |
-| Source code | Git |  [https://gitbox.apache.org/repos/asf?p=incubator-tinkerpop.git](https://gitbox.apache.org/repos/asf?p=incubator-tinkerpop.git)  |
-| . | Mirror |  [https://github.com/apache/incubator-tinkerpop.git](https://github.com/apache/incubator-tinkerpop.git)  |
-| Mentors | humbedooh | Daniel Gruno |
-| . | rbowen | Rich Bowen |
-| . | ke4qqq | David Nalley |
-| . | mfrankin | Matt Franklin |
-| . | hadrian | Hadrian Zbarcea |
-| Committers | okram | Marko A. Rodriguez |
-| . | spmallette | Stephen Mallette |
-| . | espeed | James Thornton |
-| . | dkuppitz | Daniel Kuppitz |
-| . | mhfrantz | Matt Frantz |
-| . | pluradj | Jason Plurad |
-| . | dmill | Dylan Millikin |
-| . | twilmes | Ted Wilmes |
-| . | pieter | Pieter Martin |
-| . |  | Ketrina Yim |
-| . | jbmusso | Jean-Baptiste Musso |
-| . | mp | Michael Pollmeier |
-
-
--  [February 2015](https://wiki.apache.org/incubator/February2015) 
-
--  [March 2015](https://wiki.apache.org/incubator/March2015) 
-
--  [April 2015](https://wiki.apache.org/incubator/April2015) 
-
--  [May 2015](https://wiki.apache.org/incubator/May2015) 
-
--  [August 2015](https://wiki.apache.org/incubator/August2015) 
-
--  [November 2015](https://wiki.apache.org/incubator/November2015) 
-
--  [February 2016](https://wiki.apache.org/incubator/February2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-01-16 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-01-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-01-20 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-02-06 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| N/A | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2015-03-18 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-01-20 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-01-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2015-01-30 | Tell project to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-01-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-01-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-04-28 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-04-28 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-01-20 | Check that all active committers have submitted a contributors agreement. |
-| 2015-01-20 | Add all active committers in the STATUS file. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tobago.md b/content/tobago.md
deleted file mode 100644
index 8f97b47..0000000
--- a/content/tobago.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: tobago
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Tobago project graduated on 2006-03-23</span>
-
-
-Tobago is a JSF based web development architecture.
-
-
-
-- (2005-10-17) All needed CLAs are on file. A code grant is done. Accounts for the committers have been created. Mailing lists are reused from Apache MyFaces. Committers are subscribed. The Jira setup for the project is done. The project incubator page is created. Committers have prepared the Tobago SVN for import to Apache.
-
-
-- Link to the [Main Website](http://incubator.apache.org/tobago/) .
-
-
-- link to the page(s) that tell how to participate ( [Website](http://tobago.atanion.net) , [Mailing lists](http://tobago.atanion.net/site/mail-lists.html) , [Bug tracking](http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10600) , [Source code](http://tobago.atanion.net) )
-
-
-- N/A - Link to the [project status file](http://tobago.atanion.net) we will use this file to keep track, as soon as Tobago is incubated into MyFaces, we will use the official MyFaces resources for this.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://tobago.atanion.net](http://tobago.atanion.net)  |
-| . | wiki | . |
-| Mailing list | dev | dev@myfaces.apache.org |
-| . | user | user@myfaces.apache.org |
-| . | commits | commits@myfaces.apache.org |
-| Bug tracking | jira |  [MyFaces Jira](http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10600)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/incubator/tobago](http://svn.apache.org/repos/asf/incubator/tobago)  |
-| Proposal | wiki |  [TobagoProposal](http://wiki.apache.org/incubator/TobagoProposal)  |
-| Sponsor |  |  [MyFaces PMC](http://myfaces.apache.org)  |
-| Champion | manolito | Manfred Geiler |
-| Mentor | husted | Ted Husted |
-| Committer | idus | Arvid Huelsebus |
-| Committer | bommel | Bernd Bohmann |
-| Committer | pleff | Detlef Bartetzko |
-| Committer | mmarinschek | Martin Marinschek |
-| Committer | matzew | Matthias Wessendorf |
-| Committer | hennes | Philippe Hennes |
-| Committer | lofwyr | Udo Schnurpfeil |
-| Committer | weber | Volker Weber |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| status | item |
-|---------|-------|
-| DONE-....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| DONE-2005-07-21 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| status | item |
-|---------|-------|
-| DONE-....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| DONE-....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| DONE-....-..-.. | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| DONE-2005-11-08 | Tell Mentors to track progress in the file 'incubator/projects/tobago.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| DONE-2005-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| DONE-2005-11-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| DONE-2005-11-24 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| DONE-2005-11-24 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| DONE-2005-10-17 | Check that all active committers have submitted a contributors agreement. |
-| DONE-2005-11-10 | Add all active committers in the STATUS file. |
-| DONE-....-..-.. | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| DONE-2005-11-16 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| DONE-....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| DONE-....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| DONE-2005-11-21 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- DONE: Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- DONE: Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- DONE: Are project decisions being made in public by the committers?
-
-- DONE: Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- DONE: Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- DONE-2005-07-28: If graduating to an existing PMC, has the PMC voted to accept it?
-
-- N/A: If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tomcat-maven-plugin.md b/content/tomcat-maven-plugin.md
new file mode 100644
index 0000000..c8bc496
--- /dev/null
+++ b/content/tomcat-maven-plugin.md
@@ -0,0 +1,64 @@
+Title: tomcat-maven-plugin Codebase Intellectual Property (IP) Clearance Status
+
+
+The Tomcat Maven plugin is responsible for run tomcat in during a Maven build to test a war and/or running automated integration tests.
+
+
+
+- The Tomcat PMC is responsible for the code.
+
+
+- The code will be imported into http://svn.apache.org/repos/asf/tomcat/trunk/modules/ as part a of the Tomcat project.
+
+
+- Olivier Lamy is the officer responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2011-08-01 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The code is available here : http://people.apache.org/~olamy/tomcat-maven-plugin-to-apache/tomcat-maven-plugin.tar ( svn export from https://svn.codehaus.org/mojo/tags/tomcat-maven-plugin-move-to-apache/ rev 14352)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2011-08-01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+No grant needed as the product was developed by ASF committers under ASF license at Codehaus.
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Codehaus.org
+
+| date | item |
+|------|------|
+| 2011-08-01 | Check that all active committers have a signed CLA on record. |
+| 2011-08-01 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2011-08-01 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2011-08-01 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+All developers have CLAs on record with Apache
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Tomcat vote: _http://markmail.org/message/ejqg6vsnxq5rm3jw_ 
+
+- Mojo project vote: _http://markmail.org/message/brxxc37rozz6kyf4_ 
diff --git a/content/toree.md b/content/toree.md
deleted file mode 100644
index 347d71e9..0000000
--- a/content/toree.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: Toree Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Toree provides applications with a mechanism to interactively and remotely access Apache Spark.
-
-
-
-- 2019-08-08 New Committer and PPMC, Kevin Bates
-
-- 2018-11-13 Release 0.3.0-incubating.
-
-- 2018-08-15 Release 0.2.0-incubating.
-
-- 2017-04-03 New Committer and PPMC, Ryan Blue
-
-- 2017-03-01 Release 0.1.0-incubating.
-
-- 2016-10-10 New Committer and PPMC, Marius van Niekerk
-
-- 2015-12-02 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://toree.apache.org](https://toree.apache.org)  |
-| Mailing list | dev |  `dev`  `@`  `toree.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `toree.incubator.apache.org`  |
-| . | github reviews |  `reviews`  `@`  `toree.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/projects/TOREE/](https://issues.apache.org/jira/projects/TOREE/)  |
-| Source code | GIT |  [https://github.com/apache/incubator-toree](https://github.com/apache/incubator-toree)  |
-| Mentors | julien | Julien Le Dem |
-| . | lresende | Luciano Resende |
-| . | blue | Ryan Blue |
-| PPMC/Committers | blue | Ryan Blue |
-| . | chipsenkbeil | Robert "Chip" Senkbeil |
-| . | cstubbs | Corey Stubbs |
-| . | jodersky | Jakob Odersky |
-| . | kbates | Kevin Bates |
-| . | lbustelo | Leugim Bustelo |
-| . | lresende | Luciano Resende |
-| . | mariusvniekerk | Marius van Niekerk |
-| . | mwangcse | Miao Wang |
-| . | . | Sean Welleck |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-01-06 | Ask infrastructure to set up and archive mailing lists. |
-| 2016-01-06 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-02-08 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2016-01-11 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/torque-village-contribution.md b/content/torque-village-contribution.md
new file mode 100644
index 0000000..4edaa18
--- /dev/null
+++ b/content/torque-village-contribution.md
@@ -0,0 +1,62 @@
+Title: Apache Torque Codebase Intellectual Property (IP) Clearance Status
+
+
+Contribution of Village code.
+
+
+The code snapshot is at [http://people.apache.org/~seade/village/](http://people.apache.org/~seade/village/) .
+
+
+
+- Which PMC will be responsible for the code: Apache DB
+
+
+- Into which existing project/module: Torque
+
+
+- Officer or member managing donation: Scott Eade and Jean Anderson
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-9-6 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| Headers will be updated when code committed. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+The name recorded for the software grant in grants.txt is "VillageCode donation to the ApacheDB project".
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Jon Scott Stevens
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2007-10-10 | Check that all active committers have a signed CLA on record. |
+| 2007-10-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-10-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-10-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Vote on [torque-dev@db.apache.org](http://mail-archives.apache.org/mod_mbox/db-torque-dev/200710.mbox/%3c471D3272.7040701@backstagetech.com.au%3e) .
diff --git a/content/trafficcontrol.md b/content/trafficcontrol.md
deleted file mode 100644
index 640e9fa..0000000
--- a/content/trafficcontrol.md
+++ /dev/null
@@ -1,184 +0,0 @@
-Title: Traffic Control Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Traffic Control project graduated on 2018-05-16</span>
-
-
-Traffic Control is a set of components that can be used to build, monitor, configure, and provision a large scale content delivery network (CDN).
-
-
-
-- 2018-05-16 The Apache Board establishes Traffic Control as a TLP
-
-- 2018-01-22 Version 2.1.0 released
-
-- 2017-11-01 New committer: Nir Sopher
-
-- 2017-10-16 New committer: Peter Ryder
-
-- 2017-08-10 New committer: Derek Gelinas
-
-- 2017-08-10 New committer: Rob Butts
-
-- 2017-07-07 Version 2.0.0 released
-
-- 2017-06-13 Version 1.8.1 released
-
-- 2017-03-07 Version 1.8.0 released
-
-- 2016-07-12 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://trafficcontrol.incubator.apache.org/](https://trafficcontrol.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/TC/Traffic+Control+Home](https://cwiki.apache.org/confluence/display/TC/Traffic+Control+Home)  |
-| Mailing list | commits |  `users`  `@`  `trafficcontrol.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `trafficcontrol.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `trafficcontrol.incubator.apache.org`  |
-| . | issues |  `issues`  `@`  `trafficcontrol.incubator.apache.org`  |
-| . | private |  `private`  `@`  `trafficcontrol.incubator.apache.org`  |
-| . | security |  `security`  `@`  `trafficcontrol.incubator.apache.org`  |
-| Bug tracking | Github Issues |  [https://github.com/apache/incubator-trafficcontrol/issues](https://github.com/apache/incubator-trafficcontrol/issues)  |
-| Source code | Github |  [https://github.com/apache/incubator-trafficcontrol.git](https://github.com/apache/incubator-trafficcontrol.git)  |
-| Mentors | sorber | Phil Sorber |
-| . | covener | Eric Covener |
-| . | zwoop | Leif Hedstrom |
-| Committers | dangogh | Dan Kirkwood |
-| . | neuman | David Neuman |
-| . | dewrich | Dewayne Richardson |
-| . | friede | Eric Friedrich |
-| . | hbeatty | Hank Beatty |
-| . | jheitz200 | Jackie Heitzer |
-| . | jvd | Jan van Doorn |
-| . | elsloo | Jeff Elsloo |
-| . | mitchell852 | Jeremy Mitchell |
-| . | mtorluemke | Mark Torluemke |
-| . | smalenfant | Steve Malenfant |
-| . | rob | Rob Butts |
-| . | peryder | Peter Ryder |
-| . | dgelinas | Derek Gelinas |
-| . | smalenfant | Steve Malenfant |
-| . | nir | Nir Sopher |
-| Extra | . | . |
-
-
--  [January 2018](https://wiki.apache.org/incubator/January2018) 
-
--  [October 2017](https://wiki.apache.org/incubator/October2017) 
-
--  [July 2017](https://wiki.apache.org/incubator/July2017) 
-
--  [April 2017](https://wiki.apache.org/incubator/April2017) 
-
--  [January 2017](https://wiki.apache.org/incubator/January2017) 
-
--  [October 2016](https://wiki.apache.org/incubator/October2016) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2017-10-16 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  [https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-113](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-113)  |
-| NA | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| NA | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2016-10-04 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-10-31 | Ask infrastructure to set up and archive mailing lists. [https://issues.apache.org/jira/browse/INFRA-12527](https://issues.apache.org/jira/browse/INFRA-12527)  |
-| 2016-09-17 | Ask infrastructure to create source repository modules and grant the committers karma. [https://issues.apache.org/jira/browse/INFRA-14217](https://issues.apache.org/jira/browse/INFRA-14217)  |
-| 2017-09-26 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). [https://issues.apache.org/jira/browse/INFRA-14217](https://issues.apache.org/jira/browse/INFRA-14217)  |
-| 2016-10-28 | Ask infrastructure to set up wiki (Confluence, Moin). [https://issues.apache.org/jira/browse/INFRA-12799](https://issues.apache.org/jira/browse/INFRA-12799)  |
-| 2016-10-17 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-07-12 | Subscribe all Mentors on the pmc and general lists. |
-| 2016-07-12 | Give all Mentors access to the incubator GitHub repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-07-12 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| NA | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| NA | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-07-12 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-07-12 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2016-08-02 | Check that all active committers have submitted a contributors agreement. |
-| 2016-08-29 | Add all active committers in the relevant section above. |
-| 2016-08-22 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- The incubator PMC has voted and accepted Traffic Control for graduation, 2018-04-24
-
-- The Apache Board Accepted Traffic Control as a TLP, 2018-05-16
-
-## Incubator sign-off {#Incubator+sign-off}
-
diff --git a/content/trafficserver.md b/content/trafficserver.md
deleted file mode 100644
index b817f13..0000000
--- a/content/trafficserver.md
+++ /dev/null
@@ -1,242 +0,0 @@
-Title: Traffic Server Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Traffic Server project graduated on 2010-04-21</span>
-
-
-Traffic Server fills the need for a fast, extensible and scalable HTTP 1.1 proxy and cache. We have a production proven piece of software that can deliver HTTP traffic at high rates, and can scale well on modern SMP hardware. We have benchmarked Traffic Server to handle in excess of 35,000 RPS on a single box. Traffic Server has a rich feature set, implementing most of HTTP/1.1 to the RFC specifications.
-
-
-
-- 2010-04-21 The Apache board establishes Apache Traffic Server as a TLP.
-
-- 2010-03-30 The PPMC has begun the graduation process.
-
-- 2010-03-29 The new home page is launched.
-
-- 2010-03-17 Diane Smith joins the Traffic Server PPMC.
-
-- 2010-03-13 Apache Traffic Server v2.0.0-alpha is released.
-
-- 2010-03-04 The community votes for CTR for trunk, RTC for release branches.
-
-- 2010-03-02 Manjesh Nilange joins the Traffic Server PPMC.
-
-- 2010-03-02 The release candidate is up for a PPMC vote. Vote!.
-
-- 2010-02-26 Manjesh Nilange joins the project as a new committer.
-
-- 2010-02-23 2.0.x release branch created, and CI environment setup.
-
-- 2010-02-09 The last RAT issues are resolved, we're clean.
-
-- 2010-02-07 Added CI links to the info area.
-
-- 2010-02-02 KEYS file added to dist area.
-
-- 2010-02-02 Automatic sync from SVN dist repo to dist servers setup.
-
-- 2010-01-18 George Paul joins the Traffic Server PPMC.
-
-- 2009-12-28 George Paul joins the project as a new committer.
-
-- 2009-12-16 Added an explicit section of PPMC members.
-
-- 2009-12-04 Buildbot system setup, with automatic RAT reports.
-
-- 2009-12-02 John Plevyak joins the Traffic Server PPMC.
-
-- 2009-11-17 Created dist area, w.a.o/dist/incubator/trafficserver.
-
-- 2009-11-16 John Plevyak joins the project as a new committer.
-
-- 2009-11-16 Diane Smith joins the project as a new committer.
-
-- 2009-11-16 Paul Querna joins the Traffic Server PPMC.
-
-- 2009-11-11 Paul Querna joins the project as a new committer.
-
-- 2009-10-29 Source code migration completed.
-
-- 2009-07-13 Project enters incubation.
-
-
--  [TrafficServer ASF Project Official Website](http://incubator.apache.org/trafficserver) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/trafficserver/](http://incubator.apache.org/trafficserver/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/TS/Traffic+Server](http://cwiki.apache.org/confluence/display/TS/Traffic+Server)  |
-| CI | Trunk build |  [http://ci.apache.org/builders/tserver-trunk/](http://ci.apache.org/builders/tserver-trunk/)  |
-| . | 2.0.x branch build |  [http://ci.apache.org/builders/tserver-branch2.0.x](http://ci.apache.org/builders/tserver-branch2.0.x/)  |
-| Rat Reports | Trunk |  [http://ci.apache.org/projects/traffic-server/rat-output.txt](http://ci.apache.org/projects/traffic-server/rat-output.txt)  |
-| . | 2.0.x branch |  [http://ci.apache.org/projects/traffic-server/2.0.x/rat-output.txt](http://ci.apache.org/projects/traffic-server/2.0.x/rat-output.txt)  |
-| Mailing list | dev |  `trafficserver-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `trafficserver-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `trafficserver-user`  `@`  `incubator.apache.org`  |
-| . | PPMC |  `trafficserver-private`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/TS](http://issues.apache.org/jira/browse/TS)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/trafficserver/](http://svn.apache.org/repos/asf/incubator/trafficserver/)  |
-| Mentors | cutting | Doug Cutting |
-| . | jim | Jim Jagielski |
-| . | jfclere | Jean-Frederic Clere |
-| . | mturk | Mladen Turk |
-| . | niq | Nick Kew |
-| Committers | zwoop | Leif Hedstrom |
-| . | bcall | Bryan Call |
-| . | vmamidi | Vijaya Bhaskar Mamidi |
-| . | sjiang | Steve Jiang |
-| . | dima | Dima Ruban |
-| . | akundu | Anirban Kundu |
-| . | andrewhsu | Andrew Hsu |
-| . | ericb | Eric Balsa |
-| . | balajd | BalaKrishna JD |
-| . | mlibbey | Miles Libbey |
-| . | rayray | Ray Rivera |
-| . | pquerna | Paul Querna |
-| . | jplevyak | John Plevyak |
-| . | dianes | Diane Smith |
-| . | georgep | George Paul |
-| . | manjesh | Manjesh Nilange |
-| PPMC members | cutting | Doug Cutting |
-| . | jim | Jim Jagielski |
-| . | jfclere | Jean-Frederic Clere |
-| . | mturk | Mladen Turk |
-| . | niq | Nick Kew |
-| . | zwoop | Leif Hedstrom |
-| . | bcall | Bryan Call |
-| . | vmamidi | Vijaya Bhaskar Mamidi |
-| . | sjiang | Steve Jiang |
-| . | dima | Dima Ruban |
-| . | akundu | Anirban Kundu |
-| . | andrewhsu | Andrew Hsu |
-| . | ericb | Eric Balsa |
-| . | balajd | BalaKrishna JD |
-| . | mlibbey | Miles Libbey |
-| . | rayray | Ray Rivera |
-| . | pquerna | Paul Querna |
-| . | jplevyak | John Plevyak |
-| . | georgep | George Paul |
-| . | manjesh | Manjesh Nilange |
-| . | dianes | Diane Smith |
-
-
--  [August 2009](http://wiki.apache.org/incubator/August2009) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009) 
-
--  [October 2009](http://wiki.apache.org/incubator/October2009) 
-
--  [January 2010](http://wiki.apache.org/incubator/January2010) 
-
--  [April 2010](http://wiki.apache.org/incubator/April2010) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-07-13 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2009-07-13 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-07-13 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-08-10 | Subscribe all Mentors on the PMC and general lists. |
-| 2009-10-09 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-08-10 | Tell Mentors to track progress in the file 'incubator/projects/trafficserver.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-02-09 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-02-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-02-09 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-02-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-07-13 | Check that all active committers have submitted a contributors agreement. |
-| 2009-08-07 | Add all active committers in the STATUS file. |
-| 2008-08-03 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-10-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-08-03 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-08-10 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). The team has decided to use Jira. |
-| 2009-10-29 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
-
--  [SVN statistics for Traffic Server trunk.](http://people.apache.org/~zwoop/SVN-stats/) 
-
--  [IRC statistics for #traffic-server on Freenode.](http://people.apache.org/~zwoop/IRC-stats/) 
-
--  [Mailing list submission stratistics for trafficserver-dev@.](http://people.apache.org/~zwoop/Mail-stats/) 
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- The Incubator PMC has voted and accepted Traffic Server for graduation, 2010-04-14.
-
-- The Apache Board accepted Traffic Server as a TLP, 2010-04-21.
-
-## Incubator sign-off {#Incubator+sign-off}
-
diff --git a/content/trafodion.md b/content/trafodion.md
deleted file mode 100644
index 9ff70e8..0000000
--- a/content/trafodion.md
+++ /dev/null
@@ -1,197 +0,0 @@
-Title: Apache Trafodion Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Trafodion is a webscale SQL-on-Hadoop solution enabling transactional or operational workloads on Hadoop.
-
-
-<span class="graduated">The Trafodion project graduated on 2017-12-20</span>
-
-
-
-- 2017-05-01: Apache Trafodion 2.1.0-incubating released!
-
-- 2017-03-10: Welcome Yi Zhang (Eason) as new committer!
-
-- 2017-03-08: Welcome Pierre Smits and Arvind Narain as new PPMC members!
-
-- 2017-02-09: Sandhya Sundaresan is our new Release Manager. She takes over for Gunnar, who resigned on Feb. 5th.
-
-- 2016-09-19: Gunnar Tapper is our new Release Manager for Trafodion 2.1.
-
-- 2016-08-19: Welcome Ming Liu as a new committer and PPMC member.
-
-- 2016-08-18: Welcome Steve Varnau as new PPMC member.
-
-- 2016-07-07: Apache Trafodion 2.0.1-incubating released!
-
-- 2016-07-05: Welcome Gunnar Tapper as a new committer and PPMC member.
-
-- 2016-06-06: Apache Trafodion 2.0.0-incubating released!
-
-- 2016-02-25: Welcome RuoYu Zuo as a new committer.
-
-- 2016-01-07: Apache Trafodion 1.3.0-incubating released!
-
-- 2015-12-08: Our Apache Incubator website has been redesigned; come check it out and send us feedback.
-
-- 2015-11-13: Welcome Selvaganesan Govindarajan as new committer and PPMC member.
-
-- 2015-11-13: Welcome Hans Zeller as new committer and PPMC member.
-
-- 2015-11-13: Welcome Anoop Sharma as new committer and PPMC member.
-
-- 2015-10-14: Welcome Arvind Narain as new committer.
-
-- 2015-08-27: Welcome Pierre Smits as new committer.
-
-- 2015-08-18: Welcome Steve Varnau as new committer.
-
-- 2015-05-24 Project enters incubation.
-
-
--  [Main Website](http://trafodion.apache.org) 
-
--  [Contributor Guide, list of contributors and committers](https://cwiki.apache.org/confluence/display/TRAFODION/Trafodion+Contributor+Guide) 
-
--  [Mailing Lists](http://trafodion.apache.org/mail-lists.html) 
-
--  [JIRA](https://issues.apache.org/jira/browse/TRAFODION) 
-
--  [Source code](https://gitbox.apache.org/repos/asf/incubator-trafodion.git) or on [GitHub](https://github.com/apache/incubator-trafodion) 
-
-- Mentors
-
-  - Devaraj Das (ddas)
-
-  - Enis Söztutar (enis)
-
-  - Michael Stack (stack)
-
-
-
--  [July 2015](http://wiki.apache.org/incubator/July2015) 
-
--  [August 2015](http://wiki.apache.org/incubator/August2015) 
-
--  [September 2015](http://wiki.apache.org/incubator/September2015) 
-
--  [December 2015](http://wiki.apache.org/incubator/December2015) 
-
--  [March 2016](http://wiki.apache.org/incubator/March2016) 
-
--  [June 2016](http://wiki.apache.org/incubator/June2016) 
-
--  [September 2016](http://wiki.apache.org/incubator/September2016) 
-
--  [December 2016](http://wiki.apache.org/incubator/December2016) 
-
--  [March 2017](http://wiki.apache.org/incubator/March2017) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-09-18 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) . Please see: [PODLINGNAMESEARCH-79](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-79) for the discussion. |
-| - | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 20150526 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 20150626 | Ask infrastructure to set up and archive mailing lists. |
-| 20150624 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 06-01-2015 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 06-01-2015 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 06-01-2015 | Subscribe all Mentors on the pmc and general lists. |
-| - | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 12-15-2015 | Tell Mentors to track progress in the file 'trunk/content/projects/trafodion.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 06-19-2015 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 06-19-2015 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2016-01-07 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2016-01-07 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 06-19-2015 | Check that all active committers have submitted a contributors agreement. |
-| 2016-06-07 | Add all active committers to the contributors page. |
-| 06-19-2015 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/training.md b/content/training.md
deleted file mode 100644
index 51c81a9..0000000
--- a/content/training.md
+++ /dev/null
@@ -1,135 +0,0 @@
-Title: Training Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-The Training project aims to develop resources which can be used for training purposes in various media formats, languages and for various Apache and non-Apache target projects.
-
-
-
-- 2019-02-21 Training enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://training.incubator.apache.org/](http://training.incubator.apache.org/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/TRAINING/](http://cwiki.apache.org/confluence/display/TRAINING)  |
-| Mailing list | dev |  `dev@training.apache.org`  |
-| . | commits |  `commits@training.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/TRAINING](https://issues.apache.org/jira/browse/TRAINING)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-training.git](https://gitbox.apache.org/repos/asf/incubator-training.git)  |
-| . | larsfrancke | Lars Francke |
-| . | jmclean | Justin Mclean |
-| . | clr | Craig Russell |
-| . | cdutz | Christofer Dutz |
-
-
--  [March 2019](http://wiki.apache.org/incubator/March2019) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase of incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| TODO | Make sure that the requested project name does not already exist. [http://www.apache.org/foundation/m\ arks/naming.html](http://www.apache.org/foundation/marks/naming.html) Please follow the guide to ensure a suitable project/product name. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-02-21 | Ask infrastructure to set up and archive mailing lists. |
-| 2019-02-21 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2019-02-25 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2019-02-25 | Ask infrastructure to set up wiki (Confluence). |
-| N/A | Migrate the project to Apache infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2019-02-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2019-02-21 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2019-02-21 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| N/A | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| N/A | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-02-28 | Check that all active committers have submitted a contributors agreement. |
-| 2019-02-28 | Add all active committers in the relevant section above. |
-| 2019-02-28 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/trinidad-translations.md b/content/trinidad-translations.md
new file mode 100644
index 0000000..5be352c
--- /dev/null
+++ b/content/trinidad-translations.md
@@ -0,0 +1,65 @@
+Title: Trinidad translation Codebase Intellectual Property (IP) Clearance Status
+
+
+The codebase contains new translations of Apache MyFaces Trinidad messages.
+
+
+This codebase will be merged into the existing Apache MyFaces Trinidad code.
+
+
+
+- Which PMC will be responsible for the code: Apache MyFaces
+
+
+- Into which existing project/module: Apache MyFaces
+
+
+- Officer or member managing donation: Manfred Geiler / Matthias Wessendorf
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2007-11-21 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for [donated software](https://issues.apache.org/jira/browse/TRINIDAD-744) :<br></br>md5: ca3dd3809a0a0dbfb9f3bec3d0dbd0a1<br></br>sha1: c75f1a471f6075e1143ac4872bea1ec3df2d046c
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-03-27 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-11-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: trinidad
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Oracle Corporation
+
+| date | item |
+|------|------|
+| 2007-11-21 | Check that all active committers have a signed CLA on record. |
+| 2007-11-21 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-11-21 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-11-21 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The vote was closed on dev@myfaces.apache.org on 2007-11-26._ 
diff --git a/content/trinidad.md b/content/trinidad.md
deleted file mode 100644
index 7b24fac..0000000
--- a/content/trinidad.md
+++ /dev/null
@@ -1,162 +0,0 @@
-Title: trinidad
-
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Trinidad project graduated on 2007-04-22</span>
-
-
-The Trinidad project represents the incubation of a comprehensive library of JavaServer Faces components. The intended destination of this project is the existing Apache MyFaces project.
-
-
-Note that _ADF Faces_ was the working name for the incubation of the corresponding code and committers. The final name _Trinidad_ , was chosen by the MyFaces developer community, in the usual Apache fashion.
-
-
-
-- New committers voted in. Simon Lessard and Gabrielle Crawford.
-
-- JSF 1.2 branch created.
-<div class="section">
-| item | id | reference |
-|------|----|-----------|
-| Web site | www |  [Trinidad website](http://incubator.apache.org/adffaces/)  |
-|  | wiki |  [Using a subset of the MyFaces Wiki](http://wiki.apache.org/myfaces/ADF_Faces)  |
-| Mailing lists | dev |  [adffaces-dev@incubator.apache.org](mailto:adffaces-dev@incubator.apache.org)  |
-|  | user |  [adffaces-user@incubator.apache.org](mailto:adffaces-user@incubator.apache.org)  |
-|  | svn |  [adffaces-commits@incubator.apache.org](mailto:adffaces-commits@incubator.apache.org)  |
-|  | issues |  [issues-ppmc@incubator.apache.org](mailto:issues-ppmc@incubator.apache.org)  |
-| Moderators | matzew |  [Matthias Wessendorf](mailto:matzew_at_apache.org)  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/adffaces](http://issues.apache.org/jira/browse/adffaces)  |
-| Source code | svn |  [http://svn.apache.org/viewvc/incubator/adffaces/](http://svn.apache.org/repos/asf/incubator/adffaces/)  |
-| Sponsor |  |  [Apache MyFaces PMC](mailto:pmc_at_myfaces.apache.org)  |
-| Mentor | craigmcc |  [Craig McClanahan](mailto:craigmcc_at_apache.org)  |
-| Mentor | mvdb |  [Martin van den Bemt](mailto:mvdb_at_apache.org)  |
-| Committers | awiner |  [Adam Winer](mailto:awiner_at_apache.org)  |
-|  | baranda |  [Bruno Aranda](mailto:baranda_at_apache.org)  |
-|  | craigmcc |  [Craig McClanahan](mailto:craigmcc_at_apache.org)  |
-|  | gcrawford |  [Gabrielle Crawford](mailto:gcrawford_at_apache.org)  |
-|  | jfallows |  [John Fallows](mailto:jfallows_at_apache.org)  |
-|  | jwaldman |  [Jeanne Waldman](mailto:jwaldman_at_apache.org)  |
-|  | matzew |  [Matthias Wessendorf](mailto:matzew_at_apache.org)  |
-|  | mmarinschek |  [Martin Marinschek](mailto:mmarinschek_at_apache.org)  |
-|  | slessard |  [Simon Lessard](mailto:slessard_at_apache.org)  |
-</div>
-
--  [September 2006](http://wiki.apache.org/incubator/September2006) 
-
--  [June 2006](http://wiki.apache.org/incubator/June2006) 
-
--  [May 2006](http://wiki.apache.org/incubator/May2006) 
-
--  [April 2006](http://wiki.apache.org/incubator/April2006) 
-
--  [March 2006](http://wiki.apache.org/incubator/March2006) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| 2006-03-08 (n/a) | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2006-03-08 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| (n/a) | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| (n/a) | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists, and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-03-08 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-03-08 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-04-14 | Give all Mentors access to all incubator SVN modules. (to be done by PMC chair) |
-| 2006-03-08 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2006-05-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-05-07 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2006-11-16 | Check and make sure that for all code included with the distribution that is not under the Apache license, have the right to combine with Apache-licensed code and redistribute. |
-| 2006-11-16 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2006-11-16 | Check that all active committers have submitted a contributors agreement. |
-| 2006-07-13 | Add all active committers in the STATUS file. |
-| 2006-03-08 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2006-03-08 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-03-08 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-03-08 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-04-14 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? _ **YES** _ 
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) _ **YES** _ 
-
-- Are project decisions being made in public by the committers? _ **YES** _ 
-
-- Are the decision-making guidelines published and agreed to by all of the committers? _ **YES** _ 
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? _ **YES** _ 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it? - ** _YES_ ** 
-
-- If graduating to a new PMC, has the board voted to accept it? ** _N/A_ ** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? ** _YES_ ** 
diff --git a/content/triplesoup-1-contribution-mod_sparql.md b/content/triplesoup-1-contribution-mod_sparql.md
new file mode 100644
index 0000000..68afc96
--- /dev/null
+++ b/content/triplesoup-1-contribution-mod_sparql.md
@@ -0,0 +1,65 @@
+Title: TripleSoup mod_sparql Intellectual Property (IP) Clearance Status
+
+
+An apache module that provides a SPARQL interface using redland as a backing store.
+
+
+
+- PMC: Incubator
+
+- PPMC: TripleSoup
+
+
+- Imported [here](https://svn.apache.org/repos/asf/incubator/triplesoup/donations/TRIPLES-1-mod_sparql) 
+
+- Tracked [here](https://issues.apache.org/jira/browse/TRIPLES-1) 
+
+- Officer or member managing donation: Leo Simons
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: N/A (direct SVN import by single and only author).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-02-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-04-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _David Reid / Representing Self "mod_sparql" - supporting Triple Soup Incubator podling_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _David Reid_ 
+
+| date | item |
+|------|------|
+| 2006-02-18 | Check that all active committers have a signed CLA on record. |
+| 2006-02-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-04-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-04-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [TripleSoup incubator proposal vote](http://mail-archives.apache.org/mod_mbox/incubator-general/200702.mbox/%3c62B54503-E13A-4210-BA15-B22B7FAFDC71@leosimons.com%3e) 
diff --git a/content/triplesoup-2-contribution-libb.md b/content/triplesoup-2-contribution-libb.md
new file mode 100644
index 0000000..df8d3f3
--- /dev/null
+++ b/content/triplesoup-2-contribution-libb.md
@@ -0,0 +1,65 @@
+Title: TripleSoup libb Intellectual Property (IP) Clearance Status
+
+
+A rdf store implemented in C.
+
+
+
+- PMC: Incubator
+
+- PPMC: TripleSoup
+
+
+- Imported [here](https://svn.apache.org/repos/asf/incubator/triplesoup/donations/TRIPLES-3-RDFStore) 
+
+- Tracked [here](https://issues.apache.org/jira/browse/TRIPLES-2) 
+
+- Officer or member managing donation: Leo Simons
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 for donated software: `MD5 (libb-52393.tar.gz) = 3e70fb8d99cac4aefe4375e8339ca31f` (/sbin/md5 on mac os x 10.4).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-02-21 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-04-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Dirk-Willem van Gulik, CTO / Representing Satis Superque Merce B.V. ("Joost") "libb - a triple store for RDF data..."_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Joost Technologies B.V. (previously Satis Superque Merce B.V.)_ 
+
+| date | item |
+|------|------|
+| 2006-02-18 | Check that all active committers have a signed CLA on record. |
+| 2006-02-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-04-13 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-04-13 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [TripleSoup incubator proposal vote](http://mail-archives.apache.org/mod_mbox/incubator-general/200702.mbox/%3c62B54503-E13A-4210-BA15-B22B7FAFDC71@leosimons.com%3e) 
diff --git a/content/triplesoup-3-contribution-RDFStore.md b/content/triplesoup-3-contribution-RDFStore.md
new file mode 100644
index 0000000..1e0c58b
--- /dev/null
+++ b/content/triplesoup-3-contribution-RDFStore.md
@@ -0,0 +1,65 @@
+Title: TripleSoup RDFStore Intellectual Property (IP) Clearance Status
+
+
+A C/Perl rdf store and API
+
+
+
+- PMC: Incubator
+
+- PPMC: TripleSoup
+
+
+- Imported [here](https://svn.apache.org/repos/asf/incubator/triplesoup/donations/TRIPLES-3-RDFStore) 
+
+- Tracked [here](https://issues.apache.org/jira/browse/TRIPLES-3) 
+
+- Officer or member managing donation: Leo Simons
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| N/A | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-04-13 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-04-13 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Zavisa Bjelogrli, CEO / Representing Asemantics SRL "RDFStrore-0.51.tar.gz" - a triple store for RDF data..._ <br></br> _Dirk-Willem van Gulik / Representing Self "RDFStore-0.51.tar.gz (md5 ....)"_ <br></br> _Alberto Attilio Reggiori, CTO / Representing Asemantics S.r.l "All of licensor's IP rights to RDFStore... RDFStore-0.51.tar.gz"_ <br></br>
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2006-02-18 | Check that all active committers have a signed CLA on record. |
+| 2006-02-18 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| unchecked: fraenkel_compress.c and some contents of t/ | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| unchecked: fraenkel_compress.c and some contents of t/ | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [TripleSoup incubator proposal vote](http://mail-archives.apache.org/mod_mbox/incubator-general/200702.mbox/%3c62B54503-E13A-4210-BA15-B22B7FAFDC71@leosimons.com%3e) 
diff --git a/content/triplesoup.md b/content/triplesoup.md
deleted file mode 100644
index 58d9d5b..0000000
--- a/content/triplesoup.md
+++ /dev/null
@@ -1,139 +0,0 @@
-Title: Apache TripleSoup Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="retired">The TripleSoup project retired on 2007-10-18</span>
-
-
-TripleSoup is the simplest thing that you can do to turn your apache web server into a SPARQL endpoint.
-
-
-
-- 2007-10-18 Going into Retired Status after failing to get traction.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/triplesoup/](http://incubator.apache.org/triplesoup/)  |
-| . | wiki |  [http://wiki.apache.org/triplesoup/](http://incubator.apache.org/triplesoup/)  |
-| Mailing list | dev |  `triplesoup-dev`  `@`  `incubator.apache.org`  |
-| . | commits |  `triplesoup-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/TRIPLES](http://issues.apache.org/jira/browse/TRIPLES)  |
-| Source code | SVN |  [incubator/triplesoup](http://svn.apache.org/repos/asf/incubator/triplesoup/)  |
-| Mentors | leosimons | Leo Simons |
-| . | bhyde | Ben Hyde |
-| . | dirkx | Dirk-Willem van Gulik |
-| . | stefano | Stefano Mazzocchi |
-| Committers | see |  [contributors page](http://incubator.apache.org/triplesoup/contributors.html)  |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2006-02-05 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2006-02-05 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-02-05 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-02-05 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2007-02-05 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2007-02-09 | Ask infrastructure to set up and archive Mailing lists. |
-| 2007-02-09 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tsik.md b/content/tsik.md
deleted file mode 100644
index 27244a0..0000000
--- a/content/tsik.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: Apache TSIK Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The TSIK project retired on 2006-03-21</span>
-
-
-The Apache TSIK Project will host implementations of various W3C and OASIS specifications related to XML and Web services security<br></br>
-
-
-
-- 2006-03-21<A HREF="http://marc2.theaimsgroup.com/?t=114227803100006&amp;r=1&amp;w=2">Cancelled at request of Sponsoring TLP</A>
-
-- 2005-05-31 Project accepted by the Web services PMC
-
-- 2005-05-17 Project proposed on general@incubator mailing list<br></br>
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/tsik/](http://incubator.apache.org/tsik/)  |
-| . | wiki | http://wiki.apache.org/tsik/<br></br> |
-| Mailing list | dev | tsik-dev@incubator.apache.org |
-| . | svn | tsik-commits@incubator.apache.org |
-| Bug tracking | JIRA<br></br> | <br></br> |
-| Source code | svn<br></br> | <br></br> |
-| Mentors | <br></br> | Davanum Srinivas<br></br> |
-| <br></br> | <br></br> | Sanjiva Weerawarana<br></br> |
-| <br></br> | <br></br> | Dirk-Willem Gulik |
-| Committers | <br></br> | Hans Granqvist (hgranqvist@verisign.com)<br></br> |
-| <br></br> | <br></br> | Mark Hayes (mark@sleepycat.com)<br></br> |
-| Extra | . | . |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A<br></br> | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| N/A<br></br> | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| TBD | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| TBD<br></br> | Subscribe all Mentors on the pmc and general lists. |
-| TBD<br></br> | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| TBD<br></br> | Tell Mentors to track progress in the file 'incubator/projects/tsik.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tubemq.md b/content/tubemq.md
deleted file mode 100644
index cd59afd..0000000
--- a/content/tubemq.md
+++ /dev/null
@@ -1,146 +0,0 @@
-Title: TubMQ Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-TubeMQ is a trillion-records-scale distributed messaging queue (MQ) system, focuses on data transmission and storage under massive data.
-
-
-
-- 2019-11-03 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://tubemq.incubator.apache.org/](http://tubemq.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `tubemq.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `tubemq.incubator.apache.org`  |
-| Bug tracking | . | [ provide expected link ] |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/tubemq/](https://svn.apache.org/repos/asf/incubator/tubemq/)  |
-| Roster | Whimsy |  [TubeMQ Roster](https://whimsy.apache.org/roster/ppmc/tubemq)  |
-
-
--  [TubeMQ Board Reports](https://whimsy.apache.org/board/minutes/tubemq.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Request DNS (first step after creating podling status page) |
-| ....-..-.. | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| ....-..-.. | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2019-12-11 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tuscany.md b/content/tuscany.md
deleted file mode 100644
index f2dd882..0000000
--- a/content/tuscany.md
+++ /dev/null
@@ -1,279 +0,0 @@
-Title: Tuscany Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Tuscany project graduated on 2008-05-21</span>
-
-
-Tuscany provides multiple language implementations of the Service Component Architecture (SCA) specifications and related technologies such as SDO.
-
-
-
-- 2008-05-21 Tuscany graduates to Top Level Project, [http://tuscany.apache.org](http://tuscany.apache.org) .
-
-- 2008-03-26 Vote to add Giorgio Zoppi as Tuscany committer
-
-- 2008-03-06 Andrew Borley resigned as Tuscany PPMC member
-
-- 2008-02-10 Vote to add Mark Combellack as Tuscany PPMC Member
-
-- 2008-02-05 Java SCA 1.1 released
-
-- 2007-11-19 Vote to add Rajini Sivaram as Tuscany committer
-
-- 2007-11-07 Java SCA 1.0.1 released
-
-- 2007-11-01 Vote to add Mark Combellack as Tuscany committer
-
-- 2007-10-21 Vote to add Michael Yoder as Tuscany committer
-
-- 2007-10-08 Vote to add Amita Vadhavkar as a new committer
-
-- 2007-10-06 Java DAS Beta2 released
-
-- 2007-09-24 Java SCA 1.0 released
-
-- 2007-09-19 Vote to add Simon Nash as a new committer
-
-- 2007-09-11 Dims steps down as mentor, Paul Fremantle and Matthieu Riou take his place
-
-- 2007-08-31 Java SCA 0.99 released
-
-- 2007-08-22 Java DAS Beta1 released
-
-- 2007-08-21 Brady Johnson voted as committer
-
-- 2007-08-09 Java SDO 1.0 released
-
-- 2007-07-14 Tuscany PPMC formally created
-
-- 2007-07-23 Java SCA 0.91 release
-
-- 2007-07-12 Vote to add Fuhwei Lwo as a new committer
-
-- 2007-06-05 Java SCA 0.90 release
-
-- 2007-05-16 Java SDO Beta 1 release
-
-- 2007-05-01 Vote to add Andy Grove as a new committer
-
-- 2007-04-03 Vote to add Adriano Crestani as a new committer
-
-- 2007-02-09 CCLA sent for IBM's contribution of EJB Binding
-
-- 2007-03-14 Change name of Tuscany SCA for C++ project to Tuscany SCA Native
-
-- 2007-01-22 Vote to add Simon Laws as a new committer
-
-- 2006-12-24 Java SCA Milestone 2 release
-
-- 2006-11-20 Java DAS Milestone 2 release
-
-- 2006-11-15 Vote to add Geoffrey Winn as a new committer
-
-- 2006-11-14 Java SDO Milestone 2 release
-
-- 2006-11-10 Vote to add Luciano Resende as a new commiter
-
-- 2006-11-07 Vote to add Rajith Attapattu
-
-- 2006-11-03 C++ Milestone 2 release
-
-- 2006-10-19 Voted to release pom and buildtools for Java M2 release
-
-- 2006-09-29 Vote to add Ignacio Silva-Lepe as a new committer
-
-- 2006-09-18 Vote to add Venkata Krishnan as a new committer
-
-- 2006-08-10 Vote to add Andrew Borley as a new committer
-
-- 2006-08-07 Vote to add Meeraj Kunnumpurath as a new committer
-
-- 2006-08-07 Vote to add Kelvin Goodson as a new committer
-
-- 2006-08-06 Vote to add Brent Daniel as a new committer
-
-- 2006-08-04 Vote to add Raymond Feng as a new committer
-
-- 2006-08-01 C++ Milestone 1 release
-
-- 2006-06-07 Java Milestone 1 release
-
-- 2006-05-02 Vote to add Dan Kulp as a new committer
-
-- 2006-03-01 Vote to add Ant Elder as a new committer
-
-- 2006-01-05 Initial code contributions committed to Apache SVN
-
-- 2005-12-28 CCLAs sent for inital code contributions
-
-- 2005-12-07 Project proposal accepted by Web Services PMC
-
-- 2005-11-30 Project proposal submitted to Incubator
-
-| Project Status File |  [http://svn.apache.org/repos/asf/incubator/tuscany/STATUS](http://svn.apache.org/repos/asf/incubator/tuscany/STATUS)  |
-| Project Web Site |  [http://incubator.apache.org/tuscany/](http://incubator.apache.org/tuscany/)  |
-| User Mailing List |  [tuscany-user@ws.apache.org](mailto:tuscany-user@ws.apache.org)  |
-| Developer Mailing List |  [tuscany-dev@ws.apache.org](mailto:tuscany-dev@ws.apache.org)  |
-| Commits Mailing List |  [tuscany-commits@ws.apache.org](mailto:tuscany-commits@ws.apache.org)  |
-| Source Code |  [http://svn.apache.org/repos/asf/incubator/tuscany/](http://svn.apache.org/repos/asf/incubator/tuscany/)  |
-| Issue Tracking |  [http://issues.apache.org/jira/browse/TUSCANY](http://issues.apache.org/jira/browse/TUSCANY)  |
-| Mentors | Geir Magnusson Jr. (geirm) |
-| . | Sam Ruby (rubys) |
-| . | Paul Fremantle (pzf) |
-| . | Matthieu Riou (mriou) |
-| Committers | Adriano Crestani (adrianocrestani) |
-| . | Amita Vadhavkar (amita) |
-| . | Andrew Borley (ajborley) |
-| . | Andy Grove (agrove) |
-| . | Ant Elder (antelder) |
-| . | Brady Johnson (bjohnson) |
-| . | Brent Daniel (bdaniel) |
-| . | Dan Kulp (dkulp) |
-| . | Ed Slattery (edslattery) |
-| . | Frank Budinsky (frankb) |
-| . | Fuhwei Lwo (fuhwei) |
-| . | Geoffrey Winn (gwinn) |
-| . | Ignacio Silva-Lepe (isilval) |
-| . | Jean-Sebastien Delfino (jsdelfino) |
-| . | Jeremy Boynes (jboynes) |
-| . | Jim Marino (jmarino) |
-| . | Kelvin Goodson (kelvingoodson) |
-| . | Ken Tam (kentam) |
-| . | Kevin Williams (kwilliams) |
-| . | Luciano Resende (lresende) |
-| . | Mark Combellack (mcombellack) |
-| . | Michael Yoder (myoder) |
-| . | Mike Edwards (edwardsmj) |
-| . | Meeraj Kunnumpurath (meerajk) |
-| . | Rajini Sivaram (???) |
-| . | Rajith Attapattu (rajith) |
-| . | Raymond Feng (rfeng) |
-| . | Pete Robbins (robbinspg) |
-| . | Rick Rineholt (rineholt) |
-| . | Simon Laws (slaws) |
-| . | Simon Nash (nash) |
-| . | Venkata Krishnan (svkrish) |
-
-
--  [August 2007](http://wiki.apache.org/incubator/August2007#head-0d602b01fade03dacbcdd407ed427e3f9101c19f) 
-
--  [May 2007](http://wiki.apache.org/incubator/May2007#head-a981968c5ee69603892f993ed6d2e29174feb2c2) 
-
--  [February 2007](http://wiki.apache.org/incubator/February2007#head-511146ca66a2917ccd9019f82e34237e4727f2ea) 
-
--  [November 2006](http://wiki.apache.org/incubator/November2006#head-29fe85b3c573c14275757ef1a791f2860309b289) 
-
--  [August 2006](http://wiki.apache.org/incubator/August2006#head-eab0cfa692f03369616d90b6d662ff51d3d04256) 
-
--  [May 2006](http://wiki.apache.org/incubator/May2006#head-2a8b31759889d614aaff621a666a1809160f87eb) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2005-11-30 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2005-12-07 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2005-11-30 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2005-11-30 | Subscribe all Mentors on the pmc and general lists. |
-| 2005-11-30 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2005-11-30 | Tell Mentors to track progress in the file 'incubator/projects/tuscany.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2005-12-28 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-01-05 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2006-08-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2006-08-01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|------|------|
-| 2006-01-05 | Check that all active committers have submitted a contributors agreement. |
-| 2006-05-08 | Add all active committers in the STATUS file. |
-| 2006-01-05 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|------|------|
-| 2005-12-13 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-12-13 | Ask infrastructure to set up and archive Mailing lists. |
-| 2005-12-13 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-01-05 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tuweni.md b/content/tuweni.md
deleted file mode 100644
index e095eb1..0000000
--- a/content/tuweni.md
+++ /dev/null
@@ -1,148 +0,0 @@
-Title: Tuweni Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Tuweni is a set of libraries and other tools to aid development of blockchain and other decentralized software in Java and other JVM languages.
-
-
-
-- 2019-02-25 Tuweni enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://tuweni.apache.org/](http://tuweni.apache.org/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/TUWENI/](http://cwiki.apache.org/confluence/display/TUWENI)  |
-| Mailing list | dev |  `dev@tuweni.apache.org`  |
-| . | commits |  `commits@tuweni.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/TUWENI](https://issues.apache.org/jira/browse/TUWENI)  |
-| Source code | git |  [https://gitbox.apache.org/repos/asf/incubator-tuweni.git](https://gitbox.apache.org/repos/asf/incubator-tuweni.git)  |
-| Mentors | jim | Jim Jagielski |
-| . | wave | Dave Fisher |
-| . | kenn | Kenneth Knowles |
-| . | jbonofre | Jean-Baptiste Onofre |
-| . | mjwall | Michael Wall |
-| . | kamaci | Furkan Kamaci |
-| Committers/PPMC | toulmean | Antoine Toulme |
-| . | ddutta | Debo |
-| . | jon | Jon Scott Stevens |
-| . | jrhea | Jonny Rhea |
-| . | lmccay | Larry McCay |
-| . | mkalinin | Mikhail Kalinin |
-| . | pierresmits | Pierre Smits |
-| . | sneethir | Selvamohan Neethiraj |
-| . | vinayakumarb | Vinayakumar B |
-
-
--  [Tuweni Board Reports](https://whimsy.apache.org/board/minutes/Tuweni.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2019-05-01 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| 2019-05-01 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2019-05-01 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2019-05-01 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2019-05-01 | Request DNS (first step after creating podling status page) |
-| 2019-05-01 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| 2019-05-01 | Request [git repositories](https://reporeq.apache.org/)  |
-| 2019-05-01 | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| 2019-05-01 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2019-05-01 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| 2019-05-01 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2019-05-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2019-05-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2019-05-01 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2019-05-01 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2019-05-01. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2019-05-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2019-06-19 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2019-05-01 | Check that all active committers have submitted a contributors agreement. |
-| 2019-05-01 | Add all active committers in the relevant section above. |
-| 2019-05-01 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/tvm.md b/content/tvm.md
deleted file mode 100644
index 286ac1b..0000000
--- a/content/tvm.md
+++ /dev/null
@@ -1,89 +0,0 @@
-Title: TVM Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The TVM project graduated on 2020-11-18</span>
-
-
-TVM is a full stack open deep learning compiler stack for CPUs, GPUs, and specialized accelerators. It aims to close the gap between the productivity-focused deep learning frameworks, and the performance- or efficiency-oriented hardware backends.
-
-
-
-- The podling site is at [tvm.apache.org](https://tvm.apache.org/) .
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://tvm.apache.org/](https://tvm.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `tvm.apache.org`  |
-| . | commits |  `commits`  `@`  `tvm.apache.org`  |
-| . | private |  `private`  `@`  `tvm.apache.org`  |
-| Bug tracking | . |  [https://github.com/apache/incubator-tvm/issues](https://github.com/apache/incubator-tvm/issues)  |
-| Source code | Git |  [https://github.com/apache/incubator-tvm](https://github.com/apache/incubator-tvm)  |
-| Champion | weimer | Markus Weimer |
-| Mentors | ssc | Sebastian Schelter |
-| . | bgchun | Byung-Gon Chun |
-| . | hsaputra | Henry Saputra |
-| . | tnachen | Timothy Chen |
-| . | kamaci | Furkan Kamaci |
-| . | tqchen | Tianqi Chen |
-| Committers | anijain2305 | Animesh Jain |
-| . | huyuwei | Yuwei Hu |
-| . | nhynes | Nick Hynes |
-| . | ziheng | Ziheng Jiang |
-| . | liuyizhi | Yizhi Liu |
-| . | moreau | Thierry Moreau |
-| . | jroesch | Jared Roesch |
-| . | siva | Siva |
-| . | shenhaichen | Haichen Shen |
-| . | masahi | Masahiro Masuda |
-| . | hlu1 | Hao Lu |
-| . | laurawly | Leyuan Wang |
-| . | eqy | Eddie Yan |
-| . | lianminzheng | Lianming Zheng |
-| . | were | Jian Weng |
-| . | kazum | Kazutaka Morita |
-| . | kparzysz | Krzysztof Parzyszek |
-| . | liangfu | Liangfu Chen |
-| . | marisa | Marisa Kirisame |
-| . | sijusamuel | Siju Samuel |
-| . | wweic | Wei Chen |
-| . | wuwei | Wuwei Lin |
-| . | kevinthesun | Yao Wang |
-| . | zhaowu | Zhao Wu |
-
-
--  [2020 - July](https://cwiki.apache.org/confluence/display/INCUBATOR/July2020) 
-
--  [2020 - April](https://cwiki.apache.org/confluence/display/INCUBATOR/April2020) 
-
--  [2020 - Jan](https://cwiki.apache.org/confluence/display/INCUBATOR/January2020) 
-
--  [2019 - Oct](https://cwiki.apache.org/confluence/display/INCUBATOR/October2019) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (2019-03-06)._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/twill.md b/content/twill.md
deleted file mode 100644
index 6529410..0000000
--- a/content/twill.md
+++ /dev/null
@@ -1,193 +0,0 @@
-Title: Twill Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Twill project graduated on 2016-06-15</span>
-
-
-Twill is an abstraction over Apache Hadoop YARN that reduces the complexity of developing distributed applications, allowing developers to focus more on their business logic
-
-
-
-- 2013-11-14 Project enters incubation.
-
-- 2014-01-31 Version 0.1.0-incubating released.
-
-- 2014-04-22 Version 0.2.0-incubating released.
-
-- 2014-08-20 Version 0.3.0-incubating released.
-
-- 2014-11-17 Version 0.4.0-incubating released.
-
-- 2015-02-27 Version 0.5.0-incubating released.
-
-- 2015-06-24 Version 0.6.0-incubating released.
-
-- 2015-08-04 New committer and PPMC member: Henry Saputra
-
-- 2016-01-26 Version 0.7.0-incubating released.
-
-- 2016-05-09 Presentation at Apache Big Data North America by PPMC members Henry Saputra and Terence Yim
-
-- 2016-06-15 ASF Board establish the Apache Twill Project.
-
-
--  [http://twill.incubator.apache.org](http://twill.incubator.apache.org) 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://twill.incubator.apache.org/](http://twill.incubator.apache.org/) . Content is in svn.apache.org/repos/asf/incubator/twill/site |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `twill.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `twill.incubator.apache.org`  |
-| Bug tracking | . |  [https://issues.apache.org/jira/browse/TWILL](https://issues.apache.org/jira/browse/TWILL)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?p=incubator-twill.git](https://gitbox.apache.org/repos/asf?p=incubator-twill.git)  |
-| Mentors | vinodkv | Vinod K |
-| . | acmurthy | Arun C Murthy |
-| . | tomwhite | Tom White |
-| . | phunt | Patrick Hunt |
-| . | asavu | Andrei Savu |
-| Committers | chtyim | Terence Yim |
-| . | anew | Andreas Neumann |
-| . | garyh | Gary Helmling |
-| . | poorna | Poorna Chandra |
-| . | ashau | Albert Shau |
-| . | hsaputra | Henry Saputra |
-
-
--  [May 2016](http://wiki.apache.org/incubator/May2016) 
-
--  [February 2016](http://wiki.apache.org/incubator/February2016) 
-
--  [November 2015](http://wiki.apache.org/incubator/November2015) 
-
--  [August 2015](http://wiki.apache.org/incubator/August2015) 
-
--  [May 2015](http://wiki.apache.org/incubator/May2015) 
-
--  [February 2015](http://wiki.apache.org/incubator/February2015) 
-
--  [November 2014](http://wiki.apache.org/incubator/November2014) 
-
--  [August 2014](http://wiki.apache.org/incubator/August2014) 
-
--  [May 2014](http://wiki.apache.org/incubator/May2014) 
-
--  [February 2014](http://wiki.apache.org/incubator/February2014) 
-
--  [January 2014](http://wiki.apache.org/incubator/January2014) 
-
--  [December 2013](http://wiki.apache.org/incubator/December2013) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2014-01-31 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2013-11-20 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2013-11-20 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-11-20 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-11-20 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2013-11-20 | Ask infrastructure to set up wiki (Confluence). |
-| 2013-11-21 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2014-01-31 | Subscribe all Mentors on the pmc and general lists. |
-| 2014-01-31 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2014-01-31 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2013-11-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-01-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2014-01-31 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-01-31 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2013-11-26 | Check that all active committers have submitted a contributors agreement. |
-| 2014-01-31 | Add all active committers in the STATUS file. |
-| 2014-01-31 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Incubator has recommended graduation and voted to approve graduation
diff --git a/content/uima-255-contribution-cpp-framework-ibm.md b/content/uima-255-contribution-cpp-framework-ibm.md
new file mode 100644
index 0000000..f5adfe0
--- /dev/null
+++ b/content/uima-255-contribution-cpp-framework-ibm.md
@@ -0,0 +1,62 @@
+Title: Apache UIMA Codebase Intellectual Property (IP) Clearance Status
+
+
+This is a version of the UIMA Framework written in C++ and supporting C++ Annotators. It also includes support (via using SWIG) for Annotators written in Python, Perl, and TCL.
+
+
+ [http://issues.apache.org/jira/browse/UIMA-255](http://issues.apache.org/jira/browse/UIMA-255) 
+
+
+
+- Which PMC will be responsible for the code: Incubator
+
+
+- Into which existing project/module: UIMA
+
+
+- Officer or member managing donation: Ken Coar
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| ....-..-.. | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: IBM
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| ....-..-.. | Check that all active committers have a signed CLA on record. |
+| ....-..-.. | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| ....-..-.. | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| ....-..-.. | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/uima-alchemyapi-annotator.md b/content/uima-alchemyapi-annotator.md
new file mode 100644
index 0000000..55dd496
--- /dev/null
+++ b/content/uima-alchemyapi-annotator.md
@@ -0,0 +1,70 @@
+Title: AlchemyAPI Annotator Codebase Intellectual Property (IP) Clearance Status
+
+
+AlchemyAPI Annotator is a set of analysis engines wrapping AlchemyAPI online services (see [here](http://www.alchemyapi.com) ) for extracting entities, keywords, language, microformats and other from either text or URLs.
+
+
+The contributed code is in a zip file attached to [UIMA-1733](http://issues.apache.org/jira/browse/UIMA-1733) .
+
+
+The donation codebase is a set of new modules and documentation and does not contain patches for other components.
+
+
+
+- PMC responsible for the code: Apache UIMA (currently an Incubator project, so officially, the Incubator PMC)
+
+
+- This donation is being initially imported into the Apache UIMA project in the "sandbox" under the top level directory "AlchemyAPIAnnotator".
+
+
+- Officer or member managing donation: Jukka Zitting.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2010-01-24 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The MD5 sum for the donated software: MD5(alchemy-annotator.zip with md5sum) = f46d302783b79ec419328c498cab8da3
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2010-02-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2010-02-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _AlchemyAPI Annotator_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Tommaso Teofili_ 
+
+-  _Simone Tripodi_ 
+
+| date | item |
+|------|------|
+| 2010-01-24 | Check that all active committers have a signed CLA on record. |
+| 2010-02-26 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2010-02-26 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2010-01-24 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- accepted by vote on uima-dev list: [vote thread on the ML](http://www.mail-archive.com/uima-dev@incubator.apache.org/msg11915.html) 
diff --git a/content/uima-as.md b/content/uima-as.md
new file mode 100644
index 0000000..5da00bc
--- /dev/null
+++ b/content/uima-as.md
@@ -0,0 +1,71 @@
+Title: UIMA-AS Codebase Intellectual Property (IP) Clearance Status
+
+
+(Note: the original name of the donation was UIMA-EE; this name was changed while in the incubator to UIMA-AS)
+
+
+The contribution is a set of components that extend the Apache UIMA framework to support fine-grained "scale-out" to multiple independent processes (potentially running in a LAN/WAN), using techniques that make use of JMS (Java Messaging Service) standards. It includes components that use Apache ActiveMQ as the messaging infrastructure. Also included are Eclipse plugin components for editing a new XML descriptor, used to describe the deployment of a UIMA service using this new kind of scale-out.
+
+
+The contributed code is in the "sandbox" area of the UIMA SVN: [http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/](http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/) , where it is being cleaned up and otherwise worked on. The original donation is in a zip file attached to a JIRA issue: [http://issues.apache.org/jira/browse/UIMA-689](http://issues.apache.org/jira/browse/UIMA-689) .
+
+
+The donation codebase is a set of new modules and documentation and does not contain patches for other components.
+
+
+
+- PMC responsible for the code: Apache UIMA (currently an Incubator project, so officially, the Incubator PMC)
+
+
+- This donation is being initially imported into the Apache UIMA project in the "sandbox" under the top level directory "uima-as".
+
+
+- Officer or member managing donation: Ken Coar
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2008-04-22 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The MD5 sum for the donated software: d1ae83965d28d55a2d8ddf1671b7b21c donatedFiles.zip ( _md5 calculated using Windows Explorer extension digestIt 2004_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-04-03 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-04-22 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _UIMA-EE and its associated tooling_ .
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- IBM Corporation
+
+| date | item |
+|------|------|
+| 2008-04-22 | Check that all active committers have a signed CLA on record. |
+| 2008-04-23 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| N/A | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-04-22 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- Unanimously accepted; `uima-dev@incubator.apache.org` message ID `&lt;480DFFEF.4060502@schor.com&gt;` .
diff --git a/content/uima-ducc.md b/content/uima-ducc.md
new file mode 100644
index 0000000..edce64c
--- /dev/null
+++ b/content/uima-ducc.md
@@ -0,0 +1,71 @@
+Title: UIMA-DUCC Codebase Intellectual Property (IP) Clearance Status
+
+
+Distributed UIMA Cluster Computing (DUCC) is a cluster management system providing tooling, management, and scheduling facilities to automate the scale-out of applications using the UIMA framework.
+
+
+Core UIMA provides a generalized framework for applications that process unstructured information such as human language, but does not provide a scale-out mechanism. UIMA-AS provides a scale-out mechanism to distribute UIMA pipelines over a cluster of computing resources, but does not provide job or cluster management of the resources. DUCC completes the set by providing job support, cluster management, and life-cycle automation for the scale-out of UIMA applications, using UIMA-AS, on large computing clusters
+
+
+The contribution includes components that use Apache ActiveMQ and Apache Camel as a messaging infrastructure. It also includes Jetty to display DUCC's cluster information in web browsers, as well as enabling cluster control.
+
+
+The contributed code is in the "sandbox" area of the UIMA SVN: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/ , where it is being cleaned up and otherwise worked on. The original donation is in a zip file attached to a JIRA issue: https://issues.apache.org/jira/browse/UIMA-2491.
+
+
+The donation codebase is a set of new modules and documentation and does not contain patches for other components.
+
+
+
+- Which PMC will be responsible for the code: Apache UIMA
+
+
+- This donation is being initially imported into the Apache UIMA project in the "sandbox" under the top level directory "uima-ducc"
+
+
+- Officer or member managing donation: Marshall Schor.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-11-15 | A trademark search for DUCC acronym using http://www.uspto.gov/trademarks/ turned up some possible concerns. We reviewed this with Trademarks at Apache who said it was OK to proceed. |
+
+The MD5 sum for donated software: f8cbb2dde7f1b868d3ed50f895145902 ( _md5 calculated using Microsoft File Checksum Integrity Verifier (FCIV)_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2012-12-17 | ASF received a Software Grant for all the code. |
+| 2012-12-28 | All donated source files were updated or checked to make sure each includes ASF copyright, with the exception of some test/configuration data. |
+
+Identify name recorded for software grant: _file: ibm-ducc.pdf; for: DUCC source code, documentation, and test cases_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _IBM Corporation_ 
+
+| date | item |
+|------|------|
+| 2012-12-05 | Discussed with active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2012-12-10 | All active committers have a signed CLA on record. |
+| 2012-12-11 | Checked all items included with the distribution not under the Apache license, that we have the right to combine with Apache-licensed code and redistribute. |
+| 2012-12-11 | Checked Licenses for compatibility with the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1. |
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  _Unanimously accepted; http://mail-archives.apache.org/mod_mbox/uima-dev/201210.mbox/%3CCAO329yBSD-zqh-znOzSyBBxt5r3-a6ocTmXznmwR5bC3d_Mfdg%40mail.gmail.com%3E_ 
diff --git a/content/uima.md b/content/uima.md
deleted file mode 100644
index 51b1155..0000000
--- a/content/uima.md
+++ /dev/null
@@ -1,204 +0,0 @@
-Title: Apache UIMA Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The UIMA project graduated on 2010-03-18</span>
-
-
-The Apache UIMA Project will create a standardized component framework for the analysis of unstructured data, guided by the UIMA Oasis Standard (http:/www.oasis-open.org) It will include an SDK and tooling for composing and running analytic components written in Java and C++; a scaleout capability, and a set of annotators and other components that can be used with the framework.
-
-
- _Listed newest first._ 
-
-
-
-- 2010-03-18 Apache UIMA graduates to a top-level project
-
-- 2010-01-26 Apache UIMA 2.3.0-incubating released
-
-- 2010-01-04 New committer: Bhavani Iyer
-
-- 2009-08-10 New committer: Tommaso Teofili
-
-- 2009-07-11 New committer: Burn Lewis
-
-- 2009-03-19 UIMA approved as an OASIS Standard
-
-- 2008-11-19 New committer: Tong Fin
-
-- 2008-11-19 New committer: Jerry Cwiklik
-
-- 2008-07-24 Apache UIMA-AS 2.2.2-incubating released
-
-- 2008-05-07 Apache UIMA 2.2.2-incubating released
-
-- 2007-12-19 Apache UIMA 2.2.1-incubating released
-
-- 2007-10-08 New committer: Jörn Kottmann
-
-- 2007-08-23 Apache UIMA 2.2.0-incubating released
-
-- 2007-03-14 Apache UIMA 2.1.0-incubating released
-
-- 2006-12-07 Establish UIMA Sandbox
-
-- 2006-10-05 Project accepted by the Incubator PMC
-
-- 2006-08-23 Project [proposed](http://wiki.apache.org/incubator/UimaProposal) to the Incubator PMC
-
-
--  [Main Website](http://uima.apache.org/) 
-
-
-- link to the page(s) that tell how to participate (Website, Mailing lists, Bug tracking, Source code) :
-
-  -  [Contribution Policy](http://uima.apache.org/contribution-policy.html) 
-
-  -  [Project Guidelinese](http://uima.apache.org/project-guidelines.html) 
-
-  -  [Getting Involved](http://uima.apache.org/get-involved.html) 
-
-
-
-- link to the project status file (Committers, non-incubation action items, project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://uima.apache.org/](http://uima.apache.org/)  |
-|  | wiki |  [http://cwiki.apache.org/UIMA/](http://cwiki.apache.org/UIMA/) <br></br> |
-| Mailing lists | dev |  `dev`  `@`  `uima.apache.org`  |
-|  | commits |  `commits`  `@`  `uima.apache.org`  |
-|  | user |  `user`  `@`  `uima.apache.org`  |
-|  | private (PPMC) |  `private`  `@`  `uima.apache.org`  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/UIMA](http://issues.apache.org/jira/browse/UIMA)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/uima](http://svn.apache.org/repos/asf/uima)  |
-| Mentors | jukka | Jukka Zitting |
-|  | rubys | Sam Ruby |
-|  | coar | Ken Coar |
-| Committers | mbaessler | Michael Baessler |
-|  | cwiklik | Jerry Cwiklik |
-|  | eae | Edward Epstein |
-|  | tongfin | Tong Fin |
-|  | twgoetz | Thilo Goetz |
-|  | bhavani | Bhavani Iyer |
-|  | joern | Jörn Kottmann |
-|  | alally | Adam Lally |
-|  | burn | Burn Lewis |
-|  | schor | Marshall Schor |
-|  | tommaso | Tommaso Teofili |
-
-These are kept on the incubator wiki.<br></br><br></br> [January 2010](http://wiki.apache.org/incubator/January2010) <br></br> [October 2009](http://wiki.apache.org/incubator/October2009) <br></br> [July 2009](http://wiki.apache.org/incubator/July2009) <br></br> [April 2009](http://wiki.apache.org/incubator/April2009) <br></br> [January 2009](http://wiki.apache.org/incubator/January2009) <br></br> [October 2008](http://wiki.apache.org/incubator/October2008) <br></br> [July 2008](http://wiki.apache.org/incubator/July2008) <br></br> [April 2008](http://wiki.apache.org/incubator/April2008) <br></br> [January 2008](http://wiki.apache.org/incubator/January2008) <br></br> [October 2007](http://wiki.apache.org/incubator/October2007) <br></br> [July 2007](http://wiki.apache.org/incubator/July2007) <br></br> [April 2007](http://wiki.apache.org/incubator/April2007) <br></br> [January 2007](http://wiki.apache.org/incubator/January2007) <br></br> [December 2006](http://wiki.apache.org/incubator/December2006) <br></br> [November 2006](http://wiki.apache.org/incubator/November2006) 
-
-
-# Project Setup {#Project+Setup}
-
-This is the first phase of incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2007 02 07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2006-10-27 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-10-05 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-11-03 | Subscribe all Mentors on the incubator PMC and general lists. |
-| legacy | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2006-10-27 | Tell Mentors to track progress in the file 'incubator/projects/uima.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2006 11 02 | Check and make sure that the papers that transfer rights to the ASF have been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2007 02 01 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| N/A | Check and make sure that for all code included with the distribution that is not under the Apache license, the ASF has the right to combine with Apache-licensed code and redistribute. |
-| 2007 02 01 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2006-11-03 | Check that all active committers have submitted a contributors agreement. Is required by ASF process. |
-| 2006-11-03 | Add all active committers in the STATUS file. See above. |
-| 2006-11-03 | Ask root for the creation of committers' accounts on svn.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2006-11-03 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-11-03 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-11-03 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-11-02 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _None_ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _None_ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/uimafit.md b/content/uimafit.md
new file mode 100644
index 0000000..a36f395
--- /dev/null
+++ b/content/uimafit.md
@@ -0,0 +1,78 @@
+Title: uimaFIT Codebase Intellectual Property (IP) Clearance Status
+
+
+uimaFIT provides Java annotations for describing UIMA components which can be used to directly describe the UIMA components in Java code without the need for traditional UIMA XML descriptors. This greatly simplifies refactoring a component definition (e.g., changing a configuration parameter name). uimaFIT also makes it easy to instantiate UIMA components without using XML descriptor files by providing convenient factory methods. This makes uimaFIT an ideal library for testing UIMA components because the component can be easily instantiated and invoked without requiring a descriptor file to be created first. uimaFIT is very useful in research environments in which programmatic/dynamic instantiation of UIMA pipelines can simplify experimentation. For example, when performing 10-fold cross-validation across a number of experimental conditions, it can be quite laborious to create a different set of descriptor files for each run, or even a script which generates such descriptor files. uimaFIT is type system agnostic and does not depend on (or provide) a specific type system
+
+
+uimaFIT is contributed as a multi-module Maven project.
+
+
+
+- The UIMA PMC is responsible for the code.
+
+
+- The code will be imported into https://svn.apache.org/repos/asf/uima/sandbox/uimafit as part a of the UIMA project.
+
+
+- Marshal Schor and Richard Eckart de Castilho are responsible for managing the donation process.
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2012-12-10 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+The code is available here: http://code.google.com/p/uimafit/downloads/detail?name=uimaFIT-grant-staging-rev-919.zip and SHA1 sum for donated software: 010d2f2880cd502b08a6e2659041aa025689cd20 ( _Note versioned software used to calculate sum in parentheses_ ).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2012-12-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2012-12-27 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _uimaFIT source code and wiki contents_ , and a Software Grant recorded with Corporate CLAs:
+
+
+
+- Signed Corp CLA for Philip Ogren, Steven Bethard, Chris Roeder, Philipp Wetzler for uimaFIT by the Regents of the University of Colorado, CO, USA
+
+- Signed Corp CLA for Niklas Jakob, Richard Eckart de Castilho, Shuo Yang, Torsten Zesch for uimaFIT by the Technische Universität Darmstadt, Germany
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _Regents of the University of Colorado, CO, USA_ 
+
+-  _Technische Universität Darmstadt, Germany_ 
+
+-  _Steven Bethard_ 
+
+-  _Fabio Mancinelli_ 
+
+| date | item |
+|------|------|
+| 2012-12-25 | Check that all active committers have a signed CLA on record. |
+| 2012-12-25 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2012-12-25 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2012-12-25 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+- http://markmail.org/message/rkru7hrwblhc6tvk
+
+- http://mail-archives.apache.org/mod_mbox/uima-dev/201210.mbox/ajax/%3CFF46A436B80DCD43A9D7E64209F33ACB460A30C2%40FANSWORTH.ukp.informatik.tu-darmstadt.de%3E
diff --git a/content/unomi.md b/content/unomi.md
deleted file mode 100644
index 3fac48a..0000000
--- a/content/unomi.md
+++ /dev/null
@@ -1,143 +0,0 @@
-Title: Unomi Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Unomi project graduated on 2019-02-20</span>
-
-
-Unomi is a reference implementation of the OASIS Context Server specification currently being worked on by the OASIS Context Server Technical Committee. It provides a high-performance user profile and event tracking server.
-
-
-
-- 2015-10-05 Project enters incubation.
-
-- 2015-10-20 JIRA, mailing lists, git, website space created.
-
-| item | type | reference |
-|------|------|-----------|
-| Mailing list | dev |  `dev`  `@`  `unomi.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `unomi.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/UNOMI](https://issues.apache.org/jira/browse/UNOMI)  |
-| Champion | jbonofre | Jean-Baptiste Onofré |
-| Mentor | bdelacretaz | Bertrand Delacretaz |
-| . | rvs | Roman Shaposhnik |
-| . | mattmann | Chris Mattmann |
-| Committers | shuber | Serge Huber |
-| . | draier | Thomas Draier |
-| . |  | Sergiy Shyrkov |
-| . |  | Kevan Jahanshahi |
-| . |  | Cédric Mailleux |
-| . |  | Régis Mora |
-| . |  | Quentin Lamerand |
-| . |  | Chris Laprun |
-| . |  | David Griffon |
-| . |  | Raul Kripalani |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-|  | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-|  | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-|  | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-10-13 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2015-10-13 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-10-13 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-|  | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-10-05 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2015-10-25 | Subscribe all Mentors on the pmc and general lists. |
-|  | Give all Mentors access to the incubator git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-|  | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-|  | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-|  | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-|  | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-|  | Check that all active committers have submitted a contributors agreement. |
-|  | Add all active committers in the STATUS file. |
-|  | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/usergrid.md b/content/usergrid.md
index e031f0f..203dbaf 100644
--- a/content/usergrid.md
+++ b/content/usergrid.md
@@ -1,210 +1,62 @@
-Title: Apache Usergrid Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
+Title: Usergrid Codebase Intellectual Property (IP) Clearance Status
 
 
-<span class="graduated">The Usergrid project graduated on 2015-08-19</span>
-
-
-Usergrid is an open-source Backend-as-a-Service (“BaaS” or “mBaaS”) composed of an integrated distributed NoSQL database, application layer and client tier with SDKs for developers looking to rapidly build web and/or mobile applications.
+The initial donation of code from Apigee to Apache to create the Usergrid Podling, portal, stack, SDKs and UGC CLI tool included.
 
 
 
-- 2015-07-20 Release: Apache Usergrid 1.0.2-incubating released
-
-- 2015-06-22 New committer: Jeff West
-
-- 2015-01-22 Release: Apache Usergrid 1.0.1-incubating released
-
-- 2015-01-05 New committer/PPMC/Mentor: John D. Ament
-
-- 2014-11-20 New committer: Ryan Bridges
-
-- 2014-11-20 New committer: Alex Muramoto
-
-- 2014-09-10 Release: Apache Usergrid 1.0-incubating released
-
-- 2014-07-17 New committer: George Reyes
-
-- 2014-07-02 New committer: Salih Kardan
-
-- 2014-07-02 New committer: Furkan Bicak
-
-- 2014-04-23 New committer: Askhat Asanaliev
-
-- 2014-04-23 New committer: Yigit Sapli
-
-- 2014-03-11 New committer: Shawn Feldman
-
-- 2014-01-13 New committer: Alex Karasulu
-
-- 2013-10-03 Project enters incubation.
+- Which PMC will be responsible for the code: The Usergrid PPMC
 
 
-- Usergrid Website - http://usergrid.incubator.apache.org
+- Into which existing project/module: Usergrid
 
 
--  [Community Pages](http://usergrid.incubator.apache.org/community/) 
+- Officer or member managing donation: johndament
 
--  [Current Documentation](http://usergrid.incubator.apache.org/docs/) 
-
--  [Releases](http://usergrid.incubator.apache.org/releases/) 
-
--  [Wiki](https://cwiki.apache.org/confluence/display/usergrid) 
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
 
 
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://usergrid.incubator.apache.org](http://usergrid.incubator.apache.org)  |
-| . | wiki |  [Wiki](https://cwiki.apache.org/confluence/display/usergrid)  |
-| Mailing list | dev |  `dev`  `@`  `usergrid.incubator.apache.org`  |
-| . | user |  `user`  `@`  `usergrid.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `usergrid.incubator.apache.org`  |
-| Bug tracking | . | https://issues.apache.org/jira/browse/USERGRID |
-| Source code | Git | https://gitbox.apache.org/repos/asf/incubator-usergrid.git |
-| Mentors |  | . |
-| . | johndament | John D. Ament |
-| . | jfarrell | Jake Farrell |
-| . | jim | Jim Jagielski |
-| . | snoopdave | Dave Johnson |
-| . | lewismc | Lewis John Mcgibbney |
-| . | lresende | Luciano Resende |
-| Committers | . | . |
-| . | timanglade | Tim Anglade |
-| . | aasanaliev | Askhat Asanaliev |
-| . | edanuff | Ed Anuff |
-| . | fbicak | Furkan Bıçak |
-| . | ryanb | Ryan Bridges |
-| . | scottganyo | Scott Ganyo |
-| . | sungju | Sungju Jin |
-| . | snoopdave | Dave Johnson |
-| . | akarasulu | Alex Karasulu |
-| . | skardan | Salih Kardan |
-| . | (none) | Alberto Leal |
-| . | stliu | Shaozhuang Liu |
-| . | zznate | Nate McCall |
-| . | amuramoto | Alex Muramoto |
-| . | toddnine | Todd Nine |
-| . | yigits | Yiğit Şaplı |
-| . | rockerston | Rod Simpson |
-| . | jeffreyawest | Jeff West |
-
-
--  [Board Reports](https://whimsy.apache.org/board/minutes/Usergrid.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
+# Identify the codebase {#Identify+the+codebase}
 
 | date | item |
 |------|------|
-| 2015-02-09 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
+| 2015-02-09 | https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-67 resolved indicating the name is OK to use. |
 
-## Infrastructure {#Infrastructure}
+MD5 or SHA1 sum for donated software: ( _Note versioned software used to calculate sum in parentheses_ ).
 
-| date | item |
-|------|------|
-| 2013-10-14 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2013-10-14 | Ask infrastructure to set up and archive mailing lists. |
-| 2013-10-14 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2013-10-14 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2013-11-26 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2013-11-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2015-02-06 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member with karma for the authorizations file) |
-| 2015-02-06 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
 
 ## Copyright {#Copyright}
 
 | date | item |
 |------|------|
-| 2015-04-15 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2014-10-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+| 2015-04-15 | SGA sent and processed by the secretary on 2015-04-15 |
+| 2015-04-15 | All source files now have an Apache header. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
 
 ## Verify distribution rights {#Verify+distribution+rights}
 
-| date | item |
-|------|------|
-| 2014-08-19 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2014-10-17 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+Corporations and individuals holding existing distribution rights:
 
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
 
 | date | item |
 |------|------|
-| 2013-10-13 | Check that all active committers have submitted a contributors agreement. |
-| 2013-10-13 | Add all active committers in the STATUS file. |
-| 2013-10-14 | Ask root for the creation of committers' accounts on people.apache.org. |
+| 2015-04-15 | All initial committers have an ICLA on file. CCLA received as well for Apigee team members. |
+| 2015-04-15 | Members from Apigee have CCLA on file from initial entry. |
+| 2015-04-15 | Non-Apache compliant source removed from code base. |
+| 2015-04-15 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. Software includes some Cat-B licensed binaries, only within the binary distribution. |
 
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
 
 
-# Incubation {#Incubation}
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
 
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
+Related VOTEs:
 
 
 
-- Judo Chop Grant Transfer successfully submitted to, and accepted by secretary@ on 25th April, 2014. Submitted by Alex Karasulu (Safehaus)
-
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
+-  [Vote to accept code donation](http://mail-archives.apache.org/mod_mbox/incubator-general/201504.mbox/%3CCAOqetn8LDncVrmwX6PUO61fcgS1UnMTwbFoyX2fdu1QCuTAOjw%40mail.gmail.com%3E) 
diff --git a/content/vcl.md b/content/vcl.md
deleted file mode 100644
index d246258..0000000
--- a/content/vcl.md
+++ /dev/null
@@ -1,213 +0,0 @@
-Title: VCL Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The VCL project graduated on 2012-06-20</span>
-
-
-VCL is a management framework for building, dispensing and managing virtual machine images across a set of bare metal machines or systems with an installed virtual machine hypervisor.
-
-
-
-- New Committer: Dmitri Chebotarov on May 30, 2012
-
-- New Committer: James O'Dell on April 12, 2012
-
-- New Committer: Aaron Coburn on December 15, 2011
-
-- Apache VCL 2.2.1 released on April 8, 2011
-
-- New Committer: David Hutchins on February 14, 2011
-
-- Apache VCL 2.2 released on October 5, 2010
-
-- Apache VCL 2.1 released on December 9, 2009
-
-- Project enters incubation on October 6, 2008
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/vcl/](http://incubator.apache.org/vcl/)  |
-| . | wiki |  [http://cwiki.apache.org/VCL/](http://cwiki.apache.org/VCL/)  |
-| Mailing list | dev |  [vcl-dev@incubator.apache.org](mailto:vcl-dev-subscribe@incubator.apache.org)  |
-| . | user |  [vcl-user@incubator.apache.org](mailto:vcl-user-subscribe@incubator.apache.org)  |
-| . | commits |  [vcl-commits@incubator.apache.org](mailto:vcl-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/VCL](http://issues.apache.org/jira/browse/VCL)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/vcl](https://svn.apache.org/repos/asf/incubator/vcl)  |
-| Mentors | adc | Alan Cabrera |
-|  | hogstrom | Matt Hogstrom |
-|  | kevan | Kevan Miller |
-| Committers | . | Aaron Peeler |
-|  | . | Josh Thompson |
-|  | . | Andy Kurth |
-|  | . | Mladen Vouk |
-|  | . | John Bass |
-|  | . | Eric Sills |
-|  | . | Matt Valenzisi |
-|  | . | Don Sizemore |
-|  | . | Steve Thorpe |
-|  | . | Jeff Chase |
-|  | . | Paul Jones |
-|  | . | Ken Chestnutt |
-|  | . | Brian Bouterse |
-|  | . | Matt Hogstrom |
-|  | . | John Savage |
-|  | . | Wuchun Feng |
-|  | . | Mark Gardner |
-|  | . | David Hutchins |
-|  | . | Aaron Coburn |
-|  | . | James O'Dell |
-|  | . | Dmitri Chebotarov |
-
-
--  [May 2012](http://wiki.apache.org/incubator/May2012) 
-
--  [February 2012](http://wiki.apache.org/incubator/February2012) 
-
--  [November 2011](http://wiki.apache.org/incubator/November2011) 
-
--  [August 2011](http://wiki.apache.org/incubator/August2011) 
-
--  [May 2011](http://wiki.apache.org/incubator/May2011) 
-
--  [February 2011](http://wiki.apache.org/incubator/February2011) 
-
--  [November 2010](http://wiki.apache.org/incubator/November2010) 
-
--  [August 2010](http://wiki.apache.org/incubator/August2010) 
-
--  [May 2010](http://wiki.apache.org/incubator/May2010) 
-
--  [February 2010](http://wiki.apache.org/incubator/February2010) 
-
--  [November 2009](http://wiki.apache.org/incubator/November2009) 
-
--  [August 2009](http://wiki.apache.org/incubator/August2009) 
-
--  [May 2009](http://wiki.apache.org/incubator/May2009) 
-
--  [February 2009](http://wiki.apache.org/incubator/February2009) 
-
--  [January 2009](http://wiki.apache.org/incubator/January2009) 
-
--  [December 2008](http://wiki.apache.org/incubator/December2008) 
-
--  [November 2008](http://wiki.apache.org/incubator/November2008) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2008-10-01 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2008-09-29 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-01-01 | Subscribe all Mentors on the pmc and general lists. |
-| 2009-01-01 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-01-01 | Tell Mentors to track progress in the file 'incubator/projects/vcl.xml' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2008-10-08 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-12-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2009-12-01 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2009-11-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2008-10-01 | Check that all active committers have submitted a contributors agreement. |
-| 2008-10-01 | Add all active committers in the STATUS file. |
-| 2008-10-01 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2008-10-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2008-10-01 | Ask infrastructure to set up and archive Mailing lists. |
-| 2008-10-01 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2008-10-01 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-- Yes. The board voted to accept VCL as a new TLP.
-
--  **DONE** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-- Yes.
-
--  **DONE** 
diff --git a/content/velocity-tiles.md b/content/velocity-tiles.md
new file mode 100644
index 0000000..8f5a56a
--- /dev/null
+++ b/content/velocity-tiles.md
@@ -0,0 +1,62 @@
+Title: Velocity-Tiles Plugin Codebase Intellectual Property (IP) Clearance Status
+
+
+Velocity-Tiles plugin is a plugin for Tiles to allow the use of Velocity templates
+
+
+The current codebase can be found at the Subversion repository: **svn://anydoby.com/anydoby/velocity velocity-tiles2** . This code has been donated as a ZIP file in this [JIRA issue](https://issues.apache.org/struts/browse/TILES-170) .
+
+
+
+- Which PMC will be responsible for the code: Apache Tiles PMC
+
+
+- Into which existing project/module: Apache Tiles
+
+
+- Officer or member managing donation: Greg Reddin
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| NA | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-10-28 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2008-10-31 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _Velocity Tiles 2 plugin for spring_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Sergey Zolotaryov
+
+| date | item |
+|------|------|
+| 2008-10-28 | Check that all active committers have a signed CLA on record. |
+| 2008-10-31 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-10-31 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-10-31 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote thread at Nabble](http://www.nabble.com/-VOTE--Accept-Velocity-Tiles-plugin-donation-td20189659.html) 
diff --git a/content/vxquery.md b/content/vxquery.md
deleted file mode 100644
index 1cc87cb..0000000
--- a/content/vxquery.md
+++ /dev/null
@@ -1,211 +0,0 @@
-Title: VXQuery Incubation Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The VXQuery project graduated on 2014-07-16</span>
-
-
-Apache VXQuery will be a standards compliant XML Query processor implemented in Java.
-
-
-The focus is on the evaluation of queries on large amounts of XML data. Specifically the goal is to evaluate queries on large collections of relatively small XML documents. To achieve this queries will be evaluated on a cluster of shared nothing machines.
-
-
-
-- 2009-07-06 Project enters incubation.
-
-- 2012-07-03 Preston Carman added as committer.
-
-- 2013-09-22 Steven Jacobs added as committer.
-
-- 2013-12-12 Apache VXQuery 0.2-incubating released.
-
-- 2014-05-19 Apache VXQuery 0.3-incubating released.
-
-- 2014-07-16 ASF Board establishes the Apache VXQuery project.
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/vxquery/](http://incubator.apache.org/vxquery/)  |
-|  | wiki |  [http://cwiki.apache.org/confluence/display/VXQUERY](http://cwiki.apache.org/confluence/display/VXQUERY)  |
-| Mailing list | dev |  `vxquery-dev`  `@`  `incubator.apache.org`  |
-|  | commits |  `vxquery-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/VXQUERY](https://issues.apache.org/jira/browse/VXQUERY)  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf/incubator-vxquery.git](https://gitbox.apache.org/repos/asf/incubator-vxquery.git)  |
-| Mentors | antelder | Ant Elder (PPMC) |
-|  | jochen | Jochen Wiedmann (PPMC) |
-|  | marvin | Marvin Humphrey (PPMC) |
-| Committers | vinayakb | Vinayak Borkar (PPMC) |
-|  | cezar | Cezar Andrei (PPMC) |
-|  | dtabass | Michael J. Carey (PPMC) |
-|  | tillw | Till Westmann (PPMC) |
-|  | prestonc | Preston Carman |
-|  | sjaco002 | Steven Jacobs |
-| Mentors (dormant) | sanjiva | Sanjiva Weerawarana |
-|  | radup | Radu Preotiuc |
-
-
--  [August 2009](http://wiki.apache.org/incubator/August2009) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009) 
-
--  [October 2009](http://wiki.apache.org/incubator/October2009) 
-
--  [January 2010](http://wiki.apache.org/incubator/January2010) 
-
--  [April 2010](http://wiki.apache.org/incubator/April2010) 
-
--  [July 2010](http://wiki.apache.org/incubator/July2010) 
-
--  [October 2010](http://wiki.apache.org/incubator/October2010) 
-
--  [January 2011](http://wiki.apache.org/incubator/January2011) 
-
--  [April 2011](http://wiki.apache.org/incubator/April2011) 
-
--  [July 2011](http://wiki.apache.org/incubator/July2011) 
-
--  [October 2011](http://wiki.apache.org/incubator/October2011) 
-
--  [January 2012](http://wiki.apache.org/incubator/January2012) 
-
--  [April 2012](http://wiki.apache.org/incubator/April2012) 
-
--  [July 2012](http://wiki.apache.org/incubator/July2012) 
-
--  [October 2012](http://wiki.apache.org/incubator/October2012) 
-
--  [January 2013](http://wiki.apache.org/incubator/January2013) 
-
--  [April 2013](http://wiki.apache.org/incubator/April2013) 
-
--  [July 2013](http://wiki.apache.org/incubator/July2013) 
-
--  [October 2013](http://wiki.apache.org/incubator/October2013) 
-
--  [January 2014](http://wiki.apache.org/incubator/January2014) 
-
--  [April 2014](http://wiki.apache.org/incubator/April2014) 
-
--  [July 2014](http://wiki.apache.org/incubator/July2014) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-08-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| n/a | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2009-06-15 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| n/a | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-07-14 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-07-14 | Subscribe all Mentors on the pmc and general lists. |
-| 2009-07-14 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-07-14 | Tell Mentors to track progress in the file 'incubator/projects/vxquery.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2011-09-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2011-09-06 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2013-11-10 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2013-11-10 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-| 2012-Jul-25 | No issues with distribution rights are known. All code is either covered by the initial code grant or by contributions that were made after the ICLAs were received. See [this mailing list discussion](http://mail-archives.apache.org/mod_mbox/incubator-vxquery-dev/201207.mbox/%3C9723A6F0-4F7C-49E6-8474-4D2F964BE0D4@westmann.org%3E) . |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-07-14 | Check that all active committers have submitted a contributors agreement. |
-| 2009-08-07 | Add all active committers in the STATUS file. |
-| 2009-07-14 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-07-17 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-07-20 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-07-14 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2009-07-20 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-| date | item |
-|------|------|
-| n/a | If graduating to an existing PMC, has the PMC voted to accept it? |
-| 2014-07-16 | If graduating to a new PMC, has the board voted to accept it?
-ASF Board Meeting Minutes for 2014-07-16 once they are available [here](http://www.apache.org/foundation/board/calendar.html) 
-
- |
-
-## Incubator sign-off {#Incubator+sign-off}
-
-| date | item |
-|------|------|
-| 2014-07-16 | Has the Incubator decided that the project has accomplished all of the above tasks?
- [Incubator vote result](http://mail-archives.apache.org/mod_mbox/incubator-general/201407.mbox/%3CCAGZxfJV-KnZa9ivVpwKsT97uyVaYsmMcO35HGbTaydd4SapQpA%40mail.gmail.com%3E) 
-
- |
diff --git a/content/wadi.md b/content/wadi.md
deleted file mode 100644
index ced4ec9..0000000
--- a/content/wadi.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: WADI Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The WADI project retired on 2005-12-05</span>
-
-
-Achieving software infrastructure scalability is a tenet of Return on Investment (ROI) for any IT infrastructure and usually takes place in two forms: vertical scalability and horizontal scalability. Vertical addresses the scalability within the software itself whereas horizontal deals with it from the amount of hardware that can be utilized. Clustering, load balancing and failover is a necessity for any application server to be taken seriously in the enterprise in terms of scalability. Without the ability to cluster the application server, vertical scalability cannot take place. Without such vertical scalability, applications built on top of it can only be scaled horizontally. In order to make Geronimo more enterprise ready, it needs to provide such vertical scalability.
-
-
-WADI is a clustering, load balancing and failover solution for the web application container tier. It currently supports both Jetty and Tomcat and plans are currently afoot to add full J2EE clustering functionality. WADI will help Geronimo to achieve vertical scalability.
-
-
-
-- [none yet]
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/wadi](http://incubator.apache.org/wadi)  |
-| WADI WIKI | wiki |  [http://wiki.apache.org/wadi/](http://wiki.apache.org/wadi/) <br></br> |
-| Mailing List | dev | wadi-dev@incubator.apache.org |
-| commits | SCM | wadi-commits@incubator.apache.org |
-| Project Management Committe | PMC | wadi-ppmc@incubator.apache.org |
-| User Mailing List | user | wadi-user@incubator.apache.org |
-| Bug tracking | JIRA<br></br> | http://issues.apache.org/jira/browse/WADI<br></br> |
-| Source code | svn<br></br> | incubator/wadi<br></br> |
-| Mentor | <br></br> | Geir Magnusson Jr.<br></br> |
-| Mentor | <br></br> | James Strachan<br></br> |
-| Committers<br></br> | <br></br> | Bill Dudeny<br></br> |
-| <br></br> | <br></br> | Bruce Snyder<br></br> |
-| <br></br> | <br></br> | Jan Bartel<br></br> |
-| <br></br> | <br></br> | Greg Wilkins<br></br> |
-| <br></br> | <br></br> | James Strachan<br></br> |
-| <br></br> | <br></br> | Jeff Genender<br></br> |
-| <br></br> | <br></br> | Jules Gosnell<br></br> |
-| <br></br> | <br></br> | Gianni Scenini<br></br> |
-| <br></br> | <br></br> | James Goodwill<br></br> |
-
-
-- [none yet]
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| ....-..-.. | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive Mailing lists. |
-| ....-..-.. | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/warble.md b/content/warble.md
deleted file mode 100644
index 663cff3..0000000
--- a/content/warble.md
+++ /dev/null
@@ -1,121 +0,0 @@
-Title: Warble Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Warble podling retired on 2020-11-29</span>
-
-
-Apache Warble (incubating) is a distributed endpoint monitoring solution where the agent is hosted on your own hardware. The aim of Warble is to produce a more balanced and less binary view of services and systems, lowering the rates of false positives while also providing greater insight into possible peering issues and proactive trend analysis.
-
-
-
-- 2018-06-11 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Mailing list | dev |  `dev`  `@`  `warble.apache.org`  |
-| . | commits |  `commits`  `@`  `warble.apache.org`  |
-| Champion | humbedooh | Daniel Gruno |
-| Mentor | pono | Daniel Takamori |
-| Committers | christ | Chris Thistlethwaite |
-| . | fluxo | Chris Lambertus |
-| . | haigd | Haig Didizian |
-| . | porticue | Andrew Karetas |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-|  | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-|  | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-|  | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-|  | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-06-11 | Ask infrastructure to create source repository modules and grant the committers karma (mostly done via self-serve). |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-|  | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-|  | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-|  | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-|  | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-|  | Check that all active committers have submitted a contributors agreement. |
-|  | Add all active committers in the STATUS file. |
-|  | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/wave.md b/content/wave.md
deleted file mode 100644
index 1823b8b..0000000
--- a/content/wave.md
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: Wave Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project's status in the incubator. For more general project status, please see the project website.
-
-
-<span class="retired">The Wave project retired on 2018-01-15</span>
-
-
-Apache Wave is the project where wave technology is developed at Apache. Wave in a Box (WIAB) is the name of the main product at the moment, which is a server that hosts and federates waves, supports extensive APIs, and provides a rich web client. This project also includes an implementation of the Wave Federation protocol, to enable federated collaboration systems (such as multiple interoperable Wave In a Box instances).
-
-
-
-- 2013-08-03 Ben Laurie and Vincent Siveton step down as Mentors
-
-- 2013-06-25 Christian Grobmeier joins as Mentor
-
-- 2013-06-18 Andrus Adamchik steps down as Mentor
-
-- 2011-04-28 Issues tracking migrated from Google Code to Jira.
-
-- 2011-02-19 Wave Project Web Site created.
-
-- 2010-12-01 Wave enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/wave/](http://incubator.apache.org/wave/)  |
-| Wiki | www |  [http://cwiki.apache.org/confluence/display/WAVE/](http://cwiki.apache.org/confluence/display/WAVE/)  |
-| Mailing list | dev |  `wave-dev`  `@`  `incubator.apache.org`  |
-| Mailing list | user | ... |
-| Mailing list | commits |  `wave-commits`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/wave](https://issues.apache.org/jira/browse/wave)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/wave/](https://svn.apache.org/repos/asf/incubator/wave/)  |
-| <strike>Mentor</strike> | <strike>aadamchik</strike> | <strike>Andrus Adamchik</strike> |
-| <strike>Mentor</strike> | <strike>ben</strike> | <strike>Ben Laurie</strike> |
-| Mentor | upayavira | Upayavira |
-| Mentor | grobmeier | Christian Grobmeier |
-| <strike>Mentor</strike> | <strike>vsiveton</strike> | <strike>Vincent Siveton</strike> |
-| Committer | anorth | Alex North |
-| Committer | awatkins | Anthony Watkins |
-| Committer | danield | Dan Danilatos |
-| Committer | dpeterson | Dan Peterson |
-| Committer | hearnden | David Hearnden |
-| Committer | michael | Michael MacFadden |
-| Committer | ohler | Christian Ohler |
-| Committer | purserj | James Purser |
-| Committer | roughley | Ian Roughley |
-| Committer | soren | Soren Lassen |
-| Committer | tad | Tad Glines |
-| Committer | weis | Torben Weis |
-| Committer | zdwang | David Wang |
-| Committer | josephg | Joseph Gentle |
-| Committer | lennard | Lennard de Rijk |
-| Committer | yurize | Yuri Zelikov |
-| Committer | wisebaldone | Evan Hughes |
-
-
-- ...
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-12-22 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. (received from Dan Peterson (Google) |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Trim committer list to those actively participating. |
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| Complete 2010-12-07 | Ask infrastructure to set up and archive mailing lists. |
-| Complete 2011-01-02 | Ask infrastructure to set up issue tracker (JIRA). |
-| Complete 2011-01-21 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| Complete 2011-02-18 | Ask infrstructure to create CMS for web site ( [INFRA-3464](https://issues.apache.org/jira/browse/INFRA-3464) ) |
-| Complete 2011-02-18 | Ask infrstructure to import Jira Issues ( [INFRA-3596](https://issues.apache.org/jira/browse/INFRA-3596) ) |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/wayang.md b/content/wayang.md
deleted file mode 100644
index fc34bca..0000000
--- a/content/wayang.md
+++ /dev/null
@@ -1,120 +0,0 @@
-Title: Wayang Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project's status in the incubator. For more general project status, please see the project website.
-
-
-Apache Wayang is a cross-platform data processing system that aims at decoupling the business logic of data analytics applications from concrete data processing platforms, such as Apache Flink or Apache Spark. Hence, it tames the complexity that arises from the "Cambrian explosion" of novel data processing platforms that we currently witness.
-
-
-
-- 2020-12-29 Wayang Project Web Site created.
-
-- 2020-12-16 Wayang enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/wayang/](http://incubator.apache.org/wayang/)  |
-| Mailing list | commits |  `commits`  `@`  `wayang.apache.org`  |
-| . | dev |  `dev`  `@`  `wayang.apache.org`  |
-| . | private |  `private`  `@`  `wayang.apache.org`  |
-| Source code | GIT |  [https://gitbox.apache.org/repos/asf?s=incubator-wayang](https://gitbox.apache.org/repos/asf?s=incubator-wayang)  |
-| Mentors | berndf | Bernd Fondermann |
-| . | cdutz | Christofer Dutz |
-| . | jbonofre | Jean-Baptiste Onofré |
-| . | larsgeorge | Lars George |
-| Committers/PPMC | aloalt | Alexander Alten |
-| . | bertty | Bertty Contreras |
-| . | quiaru | Jorge Quiané |
-| . | rpardomeza | Rodrigo Pardo Meza |
-
-
-- ...
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. (received from Dan Peterson (Google) |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| ....-..-.. | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to set up issue tracker (JIRA). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence). |
-| ....-..-.. | Migrate the project to Apache infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowledged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/webwork2.md b/content/webwork2.md
deleted file mode 100644
index 6f458ed..0000000
--- a/content/webwork2.md
+++ /dev/null
@@ -1,176 +0,0 @@
-Title: WebWork 2 Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The WebWork 2 project graduated on 2006-05</span>
-
-
-The Apache Struts project and the members of the OpenSymphony WebWork 2 project are working together on a next-generation web application framework utilizing an action/request architecture. WebWork was initially created by Rickard Oberg to improve on the ideas and functionality of the Jakarta Struts framework. (Now known as the Apache Struts Action framework.) Since then, the WebWork community has continued to extend and refine the framework's capabilities through a long series of releases, the latest of which, 2.2, brings advanced Ajax, templating, and Java 5 capabilities to its solid WebWork 2 foundation. While, to date, the WebWork and Struts Action codebases have overlapped, recent movements to bring consolidation to the web framework landscape have inspired both communities to work together. Apache Struts has recently reorganized our codebase into multiple subprojects, two of which, Shale and Action, represent two separate but equal web frameworks. Struts Shale serves the nascent JSF community, while Struts Action serves the established JSP community. The WebWork 2 code will be brought into the Action subproject as the 2.x branch.
-
-
-
-- 2006-01-30 - [Proposal](http://wiki.apache.org/incubator/WebWork2Proposal) accepted by the Struts PMC
-
-- 2006-05-06 - Graduation! ( [vote result](http://mail-archives.apache.org/mod_mbox/incubator-general/200605.mbox/ajax/%3c1c661f2f0605061132x18dbaac1m4fdfea5706348a27@mail.gmail.com%3e) )
-
-
-- OpenSymphony's WebWork 2 site - [http://www.opensymphony.com/webwork/](http://www.opensymphony.com/webwork/) 
-
-
-- Apache Struts site - [http://struts.apache.org](http://struts.apache.org) 
-
-
-- Incubation status page - [http://incubator.apache.org/projects/webwork2](http://incubator.apache.org/projects/webwork2) 
-
-| Item | Type | Reference |
-|-------|-------|------------|
-| Website | www |  [http://incubator.apache.org/projects/webwork2/](http://incubator.apache.org/projects/webwork2/)  _Not needed, will use Struts site_  |
-| Website | wiki |  [http://wiki.apache.org/struts"](http://wiki.apache.org/struts)  _Using the Struts site_  |
-| Mailing list | dev | dev@struts.apache.org |
-| Bug tracking | JIRA |  [http://issues.apache.org/struts](http://issues.apache.org/struts)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/webwork2](https://svn.apache.org/repos/asf/incubator/webwork2)  |
-
- 
-
-
-| Role | Apache ID | Name |
-|-------|------------|-------|
-| Champion | mrdon | Don Brown |
-| Mentor | martinc | Martin Cooper |
-| Mentor | husted | Ted Husted |
-| Committer | jcarreira | Jason Carreira |
-| Committer | plightbo | Patrick Lightbody |
-| Committer | jmitchell | James Mitchell |
-| Committer | germuska | Joe Germuska |
-| Committer | apopescu | Alexandru Popescu |
-| Committer | rgielen | Rene Gielen |
-| Committer | hermanns | Rainer Hermanns |
-| Committer | tmjee | Toby Jee |
-| Committer | roughley | Ian Roughley |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|-------|-------|
-| 2006-02-21 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2006-02-21 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2006-02-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-02-21 | Subscribe all Mentors on the pmc and general lists. |
-| 2006-02-22 | Give all Mentors access to all incubator SVN directory. (to be done by PMC chair) |
-| 2006-02-22 | Tell Mentors to track progress in the file 'incubator/projects/webwork2.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2006-04-28 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2006-04-28 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2006-04-28 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2006-04-28 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| 2006-03-22 | Check that all active committers have submitted a contributors agreement. |
-| 2006-03-22 | Add all active committers in the STATUS file. |
-| 2006-03-22 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| 2006-02-22 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| N/A | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-02-28 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-04-28 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
-
-- <strike>Replace LGPL calendar with Dojo version</strike>
-
-- <strike>Replace LGPL tooltip with Dojo version</strike>
-
-- <strike>Replace LGPL editor with Dojo version</strike>
-
-- <strike>Change Opensymphony copyrights</strike>
-
-- <strike>Replace incompatibly option select Javascript library</strike>
-
-- <strike>Add Apache copyrights to dtree files</strike>
-
-- <strike>Add Apache copyrights to PicoContainer copyrighted files</strike>
-
-- <strike>Remove erronously added copyrights</strike>
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/weex.md b/content/weex.md
deleted file mode 100644
index 0c54095..0000000
--- a/content/weex.md
+++ /dev/null
@@ -1,210 +0,0 @@
-Title: Weex Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Weex is a framework for building Mobile cross-platform high performance UI. Weex enables developers to use Web-like syntax to build iOS, Android and Web UI with a single codebase.
-
-
-<span class="retired">The Weex podling retired on 2021-05-14</span>
-
-.
-
-- 2018-12-10 Release 0.20.0
-
-- 2018-10-08 Release 0.19.0
-
-- 2018-08-04 New Committer, Jonathan Dong
-
-- 2017-10-19 New Committer, wentao shi
-
-- 2017-09-13 New Committer, gurisxie
-
-- 2017-08-09 New Committer, Hanks
-
-- 2017-06-16 New Committer, Jianfeng Li
-
-- 2017-06-08 First Release, 0.12.0
-
-- 2017-04-24 New Committer, HaiBo Song
-
-- 2017-04-18 New Committer, Tancy
-
-- 2017-04-5 New Committer, TianYi Ma
-
-- 2017-02-23 New Committer, Yuan Shen
-
-- 2016-11-30 Project enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://weex.incubator.apache.org/](http://weex.incubator.apache.org/)  |
-| . | wiki | . |
-| Mailing list | dev |  `dev`  `@`  `weex.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `weex.incubator.apache.org`  |
-| . | user |  `user`  `@`  `weex.incubator.apache.org`  |
-| . | private |  `private`  `@`  `weex.incubator.apache.org`  |
-| Bug tracking | . |  [WEEX](https://github.com/apache/incubator-weex/issues)  |
-| Source code | Git |  [incubator-weex](https://github.com/apache/incubator-weex)  |
-| Mentors | myrle | Myrle Krantz |
-| . | ningjiang | Willem Ning Jiang |
-| Committers | cxfeng | FengCheng Xiao |
-| . | danz | Danz He |
-| . | misakuo | Jianfong Li |
-| . | jinjiang | Jinjiang Zhao |
-| . | jondong | Jonathan Dong |
-| . | boboning | Ning Li |
-| . | sospartan | Wei Zheng |
-| . | zshshr | Shihan Zheng |
-| . | tancy | Tancy Ni |
-| . | fkysly | Tian Yi Ma |
-| . | kyork | York Shen |
-| . | xifang | Douma Fang |
-| . | hanks | Hanks Zhang |
-| . | efurture | Matrix Jian |
-| . | moshen | Qianyuan Wang |
-| . | acton393 | Xing Zhang |
-| . | dongyayun | Yayun Dong |
-| Extra | . | . |
-
-
--  [January, 2017](https://wiki.apache.org/incubator/January2017) 
-
--  [March, 2017](https://wiki.apache.org/incubator/March2017) 
-
--  [April, 2017](https://wiki.apache.org/incubator/April2017) 
-
--  [May, 2017](https://wiki.apache.org/incubator/May2017) 
-
--  [July, 2017](https://wiki.apache.org/incubator/July2017) 
-
--  [October, 2017](https://wiki.apache.org/incubator/October2017) 
-
--  [January, 2018](https://wiki.apache.org/incubator/January2018) 
-
--  [April, 2018](https://wiki.apache.org/incubator/April2018) 
-
--  [November, 2018](https://wiki.apache.org/incubator/November2018) 
-
--  [January, 2019](https://wiki.apache.org/incubator/January2019) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2016-12-07 | Ask infrastructure to set up and archive mailing lists. |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2016-12-16 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| ....-..-.. | Ask infrastructure to set up wiki (Confluence, Moin). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2016-12-16 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2016-12-12 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2017-01-03 | Check that all active committers have submitted a contributors agreement. |
-| 2017-01-03 | Add all active committers in the relevant section above. |
-| 2017-01-03 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/weex_cli.md b/content/weex_cli.md
new file mode 100644
index 0000000..cfa44ad
--- /dev/null
+++ b/content/weex_cli.md
@@ -0,0 +1,74 @@
+Title: Weex Toolkit(CLI-for-Apache-Weex) Intellectual Property (IP) Clearance Status
+
+
+Weex Toolkit is dedicated to standardizing the tool base in the Weex ecosystem. It ensures that various build tools can be seamlessly connected based on smart default configuration, so you can focus on writing applications without having to spend days tangling configuration issues.
+
+
+
+- Which PMC will be responsible for the code: Apache Weex PPMC
+
+
+- Into which existing project/module: Apache Weex
+
+
+- Officer or member managing donation: York Shen
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-09-10 | Source codebase is from [GitHub commit](https://github.com/weexteam/CLI-for-Apache-Weex/commit/7eadde0efa0982f36cf9b3915adad4b672dc5408)  |
+
+MD5 or SHA1 sum for donated software: 7eadde0efa0982f36cf9b3915adad4b672dc5408
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-09-25 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-09-10 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: [software_grant_weex_toolkit](https://lists.apache.org/thread.html/f9f48ad7e88f15f5ab0ea15bc2db537600f3fe707a560cd0213d3cdd@%3Cprivate.weex.apache.org%3E) 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Taobao Software(China) Co.,Ltd. (SGA on file)
+
+- DanWu Wu (ICLA on file)
+
+- Song Siqi (ICLA on file)
+
+- Gao Song (ICLA on file)
+
+- Weimin Jiao (ICLA on file)
+
+- ZaiQian Zhang (ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-09-11 | Check that all active committers have a signed CLA on record. |
+| 2019-09-11 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-09-11 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-09-11 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [dev@weex VOTE thread](https://lists.apache.org/thread.html/ec5bf06074ba10f0938e7515e591522ede88f57967258b0f937eef3c@%3Cdev.weex.apache.org%3E) 
+
+-  [dev@weex RESULT thread](https://lists.apache.org/thread.html/b8991288e0d15cece142c0b5d2377efe744c1a4df848d1e625318370@%3Cdev.weex.apache.org%3E) 
diff --git a/content/weex_loader.md b/content/weex_loader.md
new file mode 100644
index 0000000..4988161
--- /dev/null
+++ b/content/weex_loader.md
@@ -0,0 +1,69 @@
+Title: Weex Loader Codebase Intellectual Property (IP) Clearance Status
+
+
+weex-loader is a loader of webpack that can transform *.vue file into a plain javascript module for Android and iOS platform. All features and configurations of it are same with vue-loader (v14).
+
+
+
+- Which PMC will be responsible for the code: Apache Weex PPMC
+
+
+- Into which existing project/module: Apache Weex
+
+
+- Officer or member managing donation: York Shen
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-09-24 | Source codebase is from [GitHub commit](https://github.com/weexteam/weex-loader/commit/83d3767d419e8ba0d28f3e16cd22ad8543f2cfac)  |
+
+MD5 or SHA1 sum for donated software: 83d3767d419e8ba0d28f3e16cd22ad8543f2cfac
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-09-30 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-09-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+ [software_grant_weex_loader.pdf](https://lists.apache.org/thread.html/1f0d8ea2e4159f3241b607a2aed44253f864cb64c81a9234adab4ab6@%3Cprivate.weex.apache.org%3E) 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Taobao Software(China) Co.,Ltd.(SGA on file)
+
+- Terry King (ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-09-30 | Check that all active committers have a signed CLA on record. |
+| 2019-09-30 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-09-24 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-09-30 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [dev@weex VOTE thread](https://lists.apache.org/thread.html/03a2db2ec59e215ce9fb97d121e279cea32f0085653244c42aa9b6c2@%3Cdev.weex.apache.org%3E) 
+
+-  [dev@weex Result thread](https://lists.apache.org/thread.html/b1e42b509ff7a2820e5944789d7f62177940520bb9465a8d54ff73a8@%3Cdev.weex.apache.org%3E) 
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/weex_ui.md b/content/weex_ui.md
new file mode 100644
index 0000000..0edcdec
--- /dev/null
+++ b/content/weex_ui.md
@@ -0,0 +1,67 @@
+Title: Weex Ui Codebase Intellectual Property (IP) Clearance Status
+
+
+Weex UI is a rich interaction, lightweight, high performance UI library based for Apache Weex.
+
+
+
+- Which PMC will be responsible for the code: Apache Weex PPMC
+
+
+- Into which existing project/module: Apache Weex
+
+
+- Officer or member managing donation:York Shen
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2019-11-06 | Source codebase is from [GitHub commit](https://github.com/alibaba/weex-ui/commit/cb845a41e1b7cb9acff133f152996d8d03d05beb)  |
+
+MD5 or SHA1 sum for donated software: cb845a41e1b7cb9acff133f152996d8d03d05beb
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2019-10-17 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2019-10-17 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+ [software_grant_weex_ui.pdf](https://lists.apache.org/thread.html/d753a6f8994d82dffb4f8ef650176ea269c8e4bbd748aae9b2385847@%3Cprivate.weex.apache.org%3E) 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Zhejiang Fliggy Network Technology Co., Ltd.(SGA on file)
+
+- Tang Wei(ICLA on file)
+
+| date | item |
+|------|------|
+| 2019-10-31 | Check that all active committers have a signed CLA on record. |
+| 2019-10-31 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2019-10-20 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2019-10-30 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [dev@weex Consensus Thread](https://mail-archives.apache.org/mod_mbox/weex-dev/201910.mbox/%3Ctencent_52455495A38322341536DC76283B69A47607%40qq.com%3E) 
+
+
+-  _The VOTE thread accepting the donation may happen either before or after IP clearance. Adoption by lazy concensus is acceptable but not recommended._ 
diff --git a/content/whirr.md b/content/whirr.md
deleted file mode 100644
index 26a5d09..0000000
--- a/content/whirr.md
+++ /dev/null
@@ -1,168 +0,0 @@
-Title: Whirr Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Whirr project graduated on 2011-08-17</span>
-
-
-Whirr provides code for running a variety of software services on cloud infrastructure.
-
-
-
-- 2011-08-17 Project graduates to a TLP.
-
-- 2011-06-05 Fifth release: [0.5.0-incubating](http://www.apache.org/dyn/closer.cgi/incubator/whirr/) .
-
-- 2011-05-25 Tibor Kiss added as a Whirr new committer.
-
-- 2011-03-30 Fourth release: [0.4.0-incubating](http://www.apache.org/dyn/closer.cgi/incubator/whirr/) .
-
-- 2011-01-30 Third release: [0.3.0-incubating](http://www.apache.org/dyn/closer.cgi/incubator/whirr/) .
-
-- 2011-01-17 Lars George added as a Whirr new committer.
-
-- 2011-01-17 Andrei Savu added as a Whirr new committer.
-
-- 2010-11-15 Second release: [0.2.0-incubating](http://www.apache.org/dyn/closer.cgi/incubator/whirr/) .
-
-- 2010-10-20 Adrian Cole added as a Whirr new committer.
-
-- 2010-09-20 First release: [0.1.0-incubating](http://www.apache.org/dyn/closer.cgi/incubator/whirr/) .
-
-- 2010-05-11 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/whirr/](http://incubator.apache.org/whirr/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/WHIRR](https://cwiki.apache.org/confluence/display/WHIRR)  |
-| Mailing list | dev |  `whirr-dev`  `@`  `incubator.apache.org` ( [How to subscribe](https://cwiki.apache.org/confluence/display/WHIRR/MailingLists) ) |
-| . | commits |  `whirr-commits`  `@`  `incubator.apache.org`  |
-| . | user |  `whirr-user`  `@`  `incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/WHIRR](https://issues.apache.org/jira/browse/WHIRR)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/whirr/](https://svn.apache.org/repos/asf/incubator/whirr/)  |
-| Mentors | cutting | Doug Cutting |
-| . | tomwhite | Tom White |
-| . | stevel | Steve Loughran |
-| Committers | tomwhite | Tom White |
-| . | apurtell | Andrew Purtell |
-| . | johan | Johan Oskarsson |
-| . | stevel | Steve Loughran |
-| . | phunt | Patrick Hunt |
-| . | adriancole | Adrian Cole |
-| . | asavu | Andrei Savu |
-| . | larsgeorge | Lars George |
-| . | tibor | Tibor Kiss |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2010-05-11 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2010-05-11 | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2010-05-11 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2010-05-11 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-05-18 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-05-19 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-05-19 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2010-05-19 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2010-06-04 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-05-11 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-05-11 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-05-18 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-05-18 | Tell Mentors to track progress in the file 'incubator/projects/whirr.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-05-11 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2010-05-11 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-05-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2010-05-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-05-11 | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| 2010-05-11 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/wicket-andrea-del-bene-wicket-guide.md b/content/wicket-andrea-del-bene-wicket-guide.md
new file mode 100644
index 0000000..c69b1b5
--- /dev/null
+++ b/content/wicket-andrea-del-bene-wicket-guide.md
@@ -0,0 +1,59 @@
+Title: Apache Wicket Codebase Intellectual Property (IP) Clearance Status
+
+
+Andrea del Bene has written a book documenting Apache Wicket, and it is intended to become the official reference guide for Wicket.
+
+
+
+- The Wicket PMC is responsible for the document.
+
+
+- It will be incorporated into our public website as the official online documentation.
+
+
+- Officer or member managing donation: Martijn Dashorst
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2013-08-18 | The document that's donated is [hosted at google code](http://code.google.com/p/wicket-guide/) . I have attached a version of the document to https://issues.apache.org/jira/browse/WICKET-5321 (MD5: f4e4ac60fd17be8cdff2a78c75109506) |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2013-07-28 | Done. Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2013-08-20 | Done. Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: andrea-del-bene-wicket.pdf
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Andrea del Bene (adelbene)
+
+| date | item |
+|------|------|
+| 2013-08-18 | n/a. Check that all active committers have a signed CLA on record. |
+| 2013-08-18 | n/a. Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2013-08-18 | Done: Andrea recorded a SGA with secretary@ on 2013-07-28. Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2013-08-18 | n/a. Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Wicket dev@ list](http://mail-archives.apache.org/mod_mbox/wicket-dev/201308.mbox/%3cCAB63Y-ckdAYVODc9A6cnh9cAeuea4oiL-wgn3ZPO6kx7GjR5rw@mail.gmail.com%3e) 
diff --git a/content/wicket.md b/content/wicket.md
deleted file mode 100644
index 34f7975..0000000
--- a/content/wicket.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Title: Wicket Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-The Apache Wicket project has completed incubation (2007-06-20). You can find Apache Wicket [here](http://wicket.apache.org) 
-
-
-<span class="graduated">The Wicket project graduated on 2007-06-20</span>
-
-
-Wicket is a web application framework that focusses on bringing plain object oriented Java programming to the web tier.
-
-
-
-- June 20, 2007 - the Board establishes Apache Wicket, Wicket graduates!
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/wicket/](http://incubator.apache.org/wicket/)  |
-| . | wiki |  [http://cwiki.apache.org/WICKET/](http://cwiki.apache.org/WICKET/)  |
-| Mailing list | dev | wicket-dev@incubator.apache.org |
-| . | commits | wicket-commits@apache.org |
-| Bug tracking | JIRA |  [issues.apache.org/jira/browse/WICKET](issues.apache.org/jira/browse/WICKET)  |
-| Source code | SVN | http://svn.apache.org/repos/asf/incubator/wicket/ |
-| Mentors | upayavira | Upayavira |
-| . | akarasulu | Alex Karasulu |
-| . | sylvain | Sylvain Wallez |
-| . | bdelacretaz | Bertrand Delacretaz |
-| Committers | jonl | Jonathan Locke |
-| . | ehillenius | Eelco Hillenius |
-| . | jcompagner | Johan Compagner |
-| . | dashorst | Martijn Dashorst |
-| . | jdonnerstag | Juergen Donnerstag |
-| . | ivaynberg | Igor Vaynberg |
-| . | gwynevans | Gwyn Evans |
-| . | knopp | Matej Knopp |
-|  | janne | Janne Hietamäki |
-| . | ate | Ate Douma |
-| . | jblok | Jan Blok |
-| 2006-08-03 | frankbille | Frank Bille Jensen |
-| 2006-11-01 | almaw | Al Maw |
-| 2007-02-09 | jbq | Jean-Baptiste Quenot |
-| Extra | . | . |
-
-
--  [October 2006](http://wiki.apache.org/incubator/October2006) 
-
--  [November 2006](http://wiki.apache.org/incubator/November2006) 
-
--  [December 2006](http://wiki.apache.org/incubator/December2006) 
-
--  [March 2007](http://wiki.apache.org/incubator/March2007) 
-
--  [June 2007](http://wiki.apache.org/incubator/June2007) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2006-08-24 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| ....-..-.. | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| Upayavira | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2006-08-03 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-10-01 | Subscribe all Mentors on the pmc and general lists. |
-| done | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-09-07 | Tell Mentors to track progress in the file 'incubator/projects/wicket.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2007-06-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2007-05-02 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2007-05-02 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2007-05-02 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2006-09-07 | Check that all active committers have submitted a contributors agreement. |
-| 2006-09-08 | Add all active committers in the STATUS file. |
-| 2006-09-08 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2006-11-01 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-09-06 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-10-12 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2006-10-01 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? **yes** 
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-
-If graduating to an existing PMC, has the PMC voted to accept it?
-N/A
-
-If graduating to a new PMC, has the board voted to accept it?
-Yes
-## Incubator sign-off {#Incubator+sign-off}
-
-
-
-Has the Incubator decided that the project has accomplished all of the above tasks?
-Yes
\ No newline at end of file
diff --git a/content/wink.md b/content/wink.md
deleted file mode 100644
index 8bf81bc..0000000
--- a/content/wink.md
+++ /dev/null
@@ -1,212 +0,0 @@
-Title: Wink Incubation Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Wink project graduated on 2012-12-19</span>
-
-
-Apache Wink is a project that enables development and consumption of REST style web services. The core server runtime is based on the JAX-RS (JSR 311) standard. The project also introduces a client runtime which can leverage certain components of the server-side runtime. Apache Wink will deliver component technology that can be easily integrated into a variety of environments.
-
-
-
-- 2012-05-23 Apache Wink 1.2 Released
-
-- 2012-04-28 New PMC: Raymond Feng
-
-- 2011-03-11 New Committer: Raymond Feng
-
-- 2011-05-09 Apache Wink 1.1.3 Released
-
-- 2011-03-11 New PPMC Member: Luciano Resende
-
-- 2010-11-29 New Committer: Luciano Resende
-
-- 2010-11-17 Apache Wink 1.1.2 Released
-
-- 2010-07-07 Apache Wink 1.1.1 Released
-
-- 2010-05-14 Apache Wink 1.1 Released
-
-- 2010-10-25 New PPMC Member: Michael Rheinheimer
-
-- 2009-10-14 New Committer: Michael Rheinheimer
-
-- 2009-05-27 Wink enters incubation.
-
-
-- link to the main website
-
-
-- link to the page(s) that tell how to participate (Website,Mailing lists,Bug tracking,Source code)
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/wink/](http://incubator.apache.org/wink/)  |
-| . | wiki |  [http://cwiki.apache.org/confluence/display/WINK](http://cwiki.apache.org/confluence/display/WINK)  |
-| Mailing list | dev |  [wink-dev@incubator.apache.org](mailto:wink-dev-subscribe@incubator.apache.org)  |
-| . | commits |  [wink-commits@incubator.apache.org](mailto:wink-commits-subscribe@incubator.apache.org)  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/wink](https://issues.apache.org/jira/browse/wink)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/wink](https://svn.apache.org/repos/asf/incubator/wink)  |
-| Mentors | dims | Davanum Srinivas (PPMC) |
-| . | kevan | Kevan Miller (PPMC) |
-| Committers | bluk | Bryant Luk (PPMC) |
-| . | cjblythe | Christopher James Blythe (PPMC) |
-| . | damrhei | Dustin Amrhein (PPMC) |
-| . | dims | Davanum Srinivas (PPMC) |
-| . | elib | Eli Baram (PPMC) |
-| . | elman | Michael Elman (PPMC) |
-| . | martins | Martin Snitkovsky (PPMC) |
-| . | nfischer | Nadav Fischer (PPMC) |
-| . | ngallardo | Nicholas L. Gallardo (PPMC) |
-| . | tomershadi | Tomer Shadi (PPMC) |
-| . | rott | Michael Rheinheimer (PPMC) |
-| . | lresende | Luciano Resende (PPMC) |
-| . | rfeng | Raymond Feng (PPMC) |
-
-
--  [2012-08](http://wiki.apache.org/incubator/August2012) 
-
--  [2012-05](http://wiki.apache.org/incubator/May2012) 
-
--  [2012-02](http://wiki.apache.org/incubator/February2012) 
-
--  [2011-11](http://wiki.apache.org/incubator/November2011) 
-
--  [2011-08](http://wiki.apache.org/incubator/August2011) 
-
--  [2011-05](http://wiki.apache.org/incubator/May2011) 
-
--  [2011-02](http://wiki.apache.org/incubator/February2011) 
-
--  [2010-11](http://wiki.apache.org/incubator/November2010) 
-
--  [2010-08](http://wiki.apache.org/incubator/August2010) 
-
--  [2010-05](http://wiki.apache.org/incubator/May2010) 
-
--  [2010-02](http://wiki.apache.org/incubator/February2010) 
-
--  [2009-11](http://wiki.apache.org/incubator/November2009) 
-
--  [2009-09](http://wiki.apache.org/incubator/September2009) 
-
--  [2009-08](http://wiki.apache.org/incubator/August2009) 
-
--  [2009-07](http://wiki.apache.org/incubator/July2009) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2009-05-27 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2009-05-27 | Subscribe all Mentors on the pmc and general lists. |
-| 2009-05-27 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2009-05-27 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2009-06-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-05-31 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2009-06-21 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2010-05-14 | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2010-05-14 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2009-06-17 | Check that all active committers have submitted a contributors agreement. |
-| 2009-06-17 | Add all active committers in the STATUS file. |
-| 2009-06-17 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2009-05-27 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-05-28 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-05-28 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2009-06-26 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/woden.md b/content/woden.md
deleted file mode 100644
index eae81c3..0000000
--- a/content/woden.md
+++ /dev/null
@@ -1,264 +0,0 @@
-Title: Apache Woden Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="graduated">The Woden project graduated on 2007-12-08</span>
-
-
-The Apache Woden Project will develop a Java class library for reading, manipulating, creating and writing WSDL documents, initially to support WSDL 2.0 but with the longer term aim of supporting past, present and future versions of WSDL<br></br>
-
-
-For the latest Woden news see [http://ws.apache.org/woden/](http://ws.apache.org/woden/) .
-
-
-
-- 2007-12-08 Woden Graduated to the Web Services Project
-
-- 2007-08-03 Woden [Milestone 7b](http://people.apache.org/dist/ws/woden/milestones/1.0M7b-incubating) declared
-
-- 2007-04-23 Woden [Milestone 7a](http://people.apache.org/dist/ws/woden/milestones/1.0M7a-incubating) declared
-
-- 2007-02-19 Woden [Milestone 7](http://people.apache.org/dist/ws/woden/milestones/1.0M7-incubating) declared
-
-- 2006-10-06 Woden [Milestone 6](http://people.apache.org/dist/ws/woden/milestones/1.0.0M6-incubating) declared
-
-- 2006-10-06 Second W3C WSDL 2.0 Working Group Interoperability Event
-
-- 2006-06-21 Woden [Milestone 5](http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M5-incubating) declared
-
-- 2006-06-05 W3C WSDL 2.0 Working Group Interoperability Event
-
-- 2006-05-30 Woden Presentation at ApacheCon Europe 2006
-
-- 2006-03-13 Woden [Milestone 4](http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M4-incubating) declared
-
-- 2006-01-26 Woden [Milestone 3](http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M3-incubating) declared
-
-- 2005-12-09 Woden [Milestone 2](http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M2-incubating) declared
-
-- 2005-10-02 Woden [Milestone 1](http://cvs.apache.org/dist/ws/woden/milestones/M1) declared
-
-- 2005-03-24 Project accepted by the Web services PMC
-
-- 2005-03-24 Project proposed on general@incubator mailing list<br></br>
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://ws.apache.org/woden/](http://ws.apache.org/woden/)  |
-| . | wiki |  [http://wiki.apache.org/ws/FrontPage/Woden/](http://wiki.apache.org/ws/FrontPage/Woden/)  |
-| Mailing list | dev |  [woden-dev@ws.apache.org](http://ws.apache.org/woden/mailinglists.html)  |
-| . | svn |  [woden-commits@incubator.apache.org](http://ws.apache.org/woden/mailinglists.html)  |
-| Bug tracking | JIRA |  [http://nagoya.apache.org/jira/browse/Woden](http://nagoya.apache.org/jira/browse/Woden)  |
-| Source code | svn |  [http://svn.apache.org/repos/asf/webservices/woden/](http://svn.apache.org/repos/asf/webservices/woden/)  |
-| Mentors | <br></br> | Davanum Srinivas (dims at apache.org)<br></br> |
-| <br></br> | <br></br> | Paul Fremantle (paul at wso2.com)<br></br> |
-| <br></br> | <br></br> | Sanjiva Weerawarana (sanjiva at opensource.lk) |
-| Committers | <br></br> | Matthew Duftler (duftler at apache.org)<br></br> |
-|  | <br></br> | Chathura Herath (chathura at opensource.lk)<br></br> |
-| <br></br> | <br></br> | Jeremy Hughes (hughesj at apache.org)<br></br> |
-| <br></br> | <br></br> | John Kaputin (jakaputin at gmail.com)<br></br> |
-| <br></br> | <br></br> | Lawrence Mandel (lmandel at apache.org)<br></br> |
-| <br></br> | <br></br> | Arthur Ryman (arthur.ryman at gmail.com)<br></br> |
-| <br></br> | <br></br> | Oshani Seneviratne (oshanis at gmail.com)<br></br> |
-| <br></br> | <br></br> | Graham Turrell (gturrell at apache.org)<br></br> |
-
-
-- <h3> [November 2007](http://wiki.apache.org/incubator/November2007) </h3>
-
-- <h3> [August 2007](http://wiki.apache.org/incubator/August2007) </h3>
-
-- <h3> [May 2007](http://wiki.apache.org/incubator/May2007#head-1a298493e0732f4127f01993e6abc54e3793f23e) </h3>
-
-- <h3> [March 2007](http://wiki.apache.org/incubator/March2007#head-1a298493e0732f4127f01993e6abc54e3793f23e) </h3>
-
-- <h3> [February 2007](http://wiki.apache.org/incubator/February2007#head-1a298493e0732f4127f01993e6abc54e3793f23e) </h3>
-
-- <h3> [December 2006](http://wiki.apache.org/incubator/December2006#head-1a298493e0732f4127f01993e6abc54e3793f23e) </h3>
-
-- <h3> [August 2006](http://wiki.apache.org/incubator/August2006#head-1a298493e0732f4127f01993e6abc54e3793f23e) </h3>
-
-- <h3> [May 2006](http://wiki.apache.org/incubator/May2006#head-ff9cbecb90f19a9674c9dff1291b71f7c1fef0ac) </h3>
-
-- 
-### Mar. 2006
-Woden has declared milestones 3 and 4. These milestones include parsing logic for the WSDL document and component models and the SOAP extensibility elements. Validation for the WSDL document and component models in nearing completion.<br></br><br></br>Woden was [demonstrated](http://lists.w3.org/Archives/Public/www-ws-desc/2006Feb/0063.html) at the W3C Web Service Description Working Group [F2F Meeting](http://lists.w3.org/Archives/Public/www-ws-desc/2006Mar/att-0001/20060228-ws-desc-minutes.html#item01) on Feb 28, 2006 during the [Technical Plenary Week](http://www.w3.org/2005/12/allgroupoverview.html) in Cannes, Mandelieu, France.<br></br><br></br>A [WSDL 1.1 - 2.0 converter](http://www.w3.org/2006/02/WSDLConvert.html) , which makes use of Woden, was created at the W3C.
-
-- 
-### Dec. 2005
-The milestone plan, originally too ambitious, was updated to reflect Woden's new schedule. Woden milestone 2 was declared. Milestone 2 contains parsing logic for WSDL 2.0 interface and binding elements and components, and validation logic for the WSDL 2.0 types element and interface element and component.
-
-- 
-### Oct. 2005
-We posted a Woden milestone plan in September covering M1 at end-Sept through to M5 in Jan 2006. Completion of the initial project objective, full WSDL 2.0 functionality, is targetted for M4 end-Nov. M1 was release on Mon 3 Oct and included most but not all of the planned scopd. M3 and M4 will be busy periods. M5 and future plans will emerge as we approach M4 and start thinking about other Woden objectives like WSDL 1.1 conversion and StAX XML parsing for the Axis community. We are using the woden-dev mailing list for communication and discussion and recently held our first conference call - although not all participants could make the call, it helped confirm the Milestone plan and resolve some technical issues. Most of the development is currently being done by 2 committers and this may continue up to M3/M4, by which time we will have a suitable base for others to start building on.
-
-- 
-### Sept. 2005
-Woden incubator progress slower than expected over summer, but plan now agreed with milestone deliverables each month to complete WSDL 2.0 functionality by December.
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2007-06-20 | 
-Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
-
-
-A search of the United States Patent and Trademark Office shows no results for Woden.
-
-
-A Google search for Woden turns up 385 results. Aside from such notable Woden references as the [Woden band](http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;friendID=72439386) , there are only two Woden references that are somewhat related to software:
-
-1.  [Woden Network Systems Ltd.](http://www.woden.com) , a telcom based in the UK
-
-1.  [Woden game for PPC Macs](http://www.macupdate.com/info.php/id/1114/woden-(ppc)) , from 1997 this game has had just over 2000 downloads
-
-
- |
-| N/A<br></br> | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| N/A<br></br> | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2005-12-09 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2007-05-22<br></br> | Subscribe all Mentors on the woden-dev list. |
-| 2007-05-22<br></br> | Give all Mentors access to all incubator SVN modules. (to be done by PMC chair) (see [http://people.apache.org/~jim/committers.html](http://people.apache.org/~jim/committers.html) ) |
-| 2005-12-09<br></br> | Tell Mentors to track progress in the file 'incubator/projects/woden.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2007-11-06 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2005-12-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2007-11-06 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.<br></br><br></br>All source code included with the distribution is under the Apache V2.0 or the W3C license. In addition, the binary libraries included in the Woden distribution are listed in the table below.
-| Library | License |
-|---------|---------|
- | axiom-api-1.2.3.jar |  [Apache V2.0](http://www.apache.org/licenses/LICENSE-2.0) |
- | axiom-impl-1.2.3.jar |  [Apache V2.0](http://www.apache.org/licenses/LICENSE-2.0) |
- | commons-logging-api-1.1.jar |  [Apache V2.0](http://www.apache.org/licenses/LICENSE-2.0) |
- | geronimo-stax-api_1.0_spec-1.0.jar |  [Apache V2.0](http://www.apache.org/licenses/LICENSE-2.0) |
- | wsdl4j.jar |  [CPL V1.0](http://www.opensource.org/licenses/cpl1.0.php) |
- | wstx-asl-3.2.0.jar |  [Apache V2.0](http://www.apache.org/licenses/LICENSE-2.0) |
- | xercesImpl.jar |  [Apache V2.0](http://www.apache.org/licenses/LICENSE-2.0) |
- | xml-apis.jar |  [W3C](http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231) |
- | XmlSchema-1.3.1.jar |  [Apache V2.0](http://www.apache.org/licenses/LICENSE-2.0) |
- |
-| 2005-12-09 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers ! {#Establish+a+list+of+active+committers+%21}
-
-| date | item |
-|-------|-------|
-| 2006-05-22 | Check that all active committers have submitted a contributors agreement. |
-| 2007-05-22 | Add all active committers in the STATUS file. |
-| 2007-05-22 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure ! {#Infrastructure+%21}
-
-| date | item |
-|-------|-------|
-| 2005-12-09 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2005-12-09 | Ask infrastructure to set up and archive Mailing lists. |
-| 2005-12-09 | Decide about and then ask infrastructure to setup an issuetracking system (Jira). |
-| 2005-12-09 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- 
- _Have all of the active long-term volunteers been identified and acknowledged as committers on the project?_ 
-
-
-Yes.
-
-
-
-- 
- _Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)_ 
-
-
-Yes. Woden is actively lead by John Kaputin and Lawrence Mandel, committers from IBM. The list of people who have made commits to the Woden repository are Eran Chinthaka (Indiana University), Matt Duftler (IBM), Chathura Herath (Indiana University), Jeremy Hughes (IBM), John Kaputin (IBM), Lawrence Mandel (IBM), Arthur Ryman (IBM), Oshani Seneviratne (MIT), Davanum 'Dims' Srinivas (independent), and Graham Turrell (IBM). Matt, Jeremy, Arthur, Oshani, and Graham have all made significant contributions to Woden. Chinthaka, Chathura, and Dims have all contributed bug fixes in support of Axis2. It is also of note that over the past year Woden has seen large contributions from non-committers such as Dan Harvey (IBM summer student), who fixed many bugs and refactored Woden's build process, Sagara Gunathunga (independent), who is currently working on serializing the Woden model, and Tomi Vanek (independent), who contributed a WSDL viewer.
-
-
-
-- 
- _Are project decisions being made in public by the committers?_ 
-
-
-Yes. All project decisions are discussed on both the public weekly Woden telecons and on the woden-dev mailing list.
-
-
-
-- 
- _Are the decision-making guidelines published and agreed to by all of the committers?_ 
-
-
-Yes. See the [Woden Decision Making and Development Processes](http://ws.apache.org/woden/dev/devprocess.html) document.
-
-
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-Yes.
-
-
-
-## Project Adoption {#Project+Adoption}
-
-Woden is playing a valuable role in the Web services space and as such has already been adopted by the following projects:
-
--  [Apache Axis2](http://ws.apache.org/axis2/) 
-
--  [Apache ServiceMix](http://incubator.apache.org/servicemix/) 
-
--  [Woden4SAWSDL](http://lsdis.cs.uga.edu/projects/meteor-s/opensource/woden4sawsdl/index.html) 
-
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?<br></br>Yes. The Web Services PMC accepted Woden in [a vote](http://mail-archives.apache.org/mod_mbox/ws-woden-dev/200711.mbox/%3c88f5d710711301045y41b70c2ftccd786ae4366de11@mail.gmail.com%3e) that resulted in 15 +1s, no 0s, and no -1s.
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?<br></br>Yes. The Incubator PMC [voted in favor of Woden's graduation](http://mail-archives.apache.org/mod_mbox/incubator-general/200712.mbox/%3c88f5d710712080020l2395aea7t6ea5201f43b8a356@mail.gmail.com%3e) with 8 +1s, no 0s, and no -1s. The vote was called on Dec. 8, 2007.
diff --git a/content/wookie.md b/content/wookie.md
deleted file mode 100644
index a597d6b..0000000
--- a/content/wookie.md
+++ /dev/null
@@ -1,189 +0,0 @@
-Title: Wookie Podling Status Page
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="graduated">The Wookie project graduated on 2012-11-22</span>
-
-
-Wookie is a Java server application that allows you to upload and deploy widgets for your applications. Wookie is based on the W3C Widgets specification, but widgets can also be included that use extended APIs such as Google Wave Gadgets and OpenSocial.
-
-
-
-- 2012-11-21 Apache Wookie TLP Created
-
-- 2012-10-31 IPMC voted and accepted to propose to the board to graduate Wookie to TLP.
-
-- 2012-10-23 PPMC voted and accepted to propose to the IPMC to graduate Wookie to TLP.
-
-- 2012-03-12 Matt Franklin joins as mentor.
-
-- 2012-02-16 Hoang Minh Tien added as a new committer.
-
-- 2012-01-11 Luciano Resende steps down as mentor
-
-- 2010-04-26 Raido Kuli added as a new committer.
-
-- 2010-02-03 Ross Gardler added as a new committer.
-
-- 2009-07-17 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://wookie.apache.org/](http://wookie.apache.org/)  |
-| Mailing list | developer |  `dev`  `@`  `wookie.apache.org`  |
-|  | private (PMC) |  `private`  `@`  `wookie.apache.org`  |
-|  | commits |  `commits`  `@`  `wookie.apache.org`  |
-|  | user |  `user`  `@`  `wookie.apache.org`  |
-| Bug tracking |  |  [https://issues.apache.org/jira/browse/WOOKIE](https://issues.apache.org/jira/browse/WOOKIE)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/wookie](http://svn.apache.org/repos/asf/wookie)  |
-| Mentors | rgardler | Ross Gardler |
-|  | asavory | Andrew Savory |
-|  | ate | Ate Douma |
-|  | sylvain | Sylvain Wallez |
-|  | mfranklin | Matt Franklin |
-| Committers | scottbw | Scott Wilson |
-|  | psharples | Paul Sharples |
-|  | krispopat | Kris Popat |
-|  | rgardler | Ross Gardler |
-|  | raido | Raido Kuli |
-|  | hmt | Hoang Minh Tien |
-
-
--  [November 2012](http://wiki.apache.org/incubator/November2012) 
-
--  [August 2012](http://wiki.apache.org/incubator/August2012) 
-
--  [May 2012](http://wiki.apache.org/incubator/May2012) 
-
--  [February 2012](http://wiki.apache.org/incubator/February2012) 
-
--  [November 2011](http://wiki.apache.org/incubator/November2011) 
-
--  [August 2011](http://wiki.apache.org/incubator/August2011) 
-
--  [May 2011](http://wiki.apache.org/incubator/May2011) 
-
--  [February 2011](http://wiki.apache.org/incubator/February2011) 
-
--  [November 2010](http://wiki.apache.org/incubator/November2010#Wookie) 
-
--  [August 2010](http://wiki.apache.org/incubator/August2010#Wookie) 
-
--  [May 2010](http://wiki.apache.org/incubator/May2010#Wookie) 
-
--  [February 2010](http://wiki.apache.org/incubator/February2010#Wookie) 
-
--  [November 2009](http://wiki.apache.org/incubator/November2009#Wookie) 
-
--  [October 2009](http://wiki.apache.org/incubator/October2009#Wookie) 
-
--  [September 2009](http://wiki.apache.org/incubator/September2009#Wookie) 
-
--  [August 2009](http://wiki.apache.org/incubator/August2009#Wookie) 
-
--  [July 2009](http://wiki.apache.org/incubator/July2009#Wookie) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2009-19-07 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| 2009-19-07 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2009-19-07 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| Done | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| Done | Subscribe all Mentors on the pmc and general lists. |
-| Done. | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| Done | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| Done | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| Done | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| Done | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| Done | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| Done | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the STATUS file. |
-| Done | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| Done | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2009-18-07 | Ask infrastructure to set up and archive Mailing lists. |
-| 2009-18-07 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| Done | Migrate the project to our infrastructure. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? - YES
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) - YES
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers? - YES
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? - YES
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? YES
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks? YES
diff --git a/content/ws-jaxws.md b/content/ws-jaxws.md
new file mode 100644
index 0000000..5e6fe91
--- /dev/null
+++ b/content/ws-jaxws.md
@@ -0,0 +1,50 @@
+Title: JAXWS
+
+
+The incoming code was contributed by IBM. The code is currently in JIRA (http://issues.apache.org/jira/browse/AXIS2-826). It implements JAX-WS standard for use with Apache Axis2.
+
+
+
+- Which PMC will be responsible for the code
+
+Apache Web Services PMC
+
+
+
+- Into which existing project/module
+
+/webservices/axis2/trunk/java/modules/jaxws
+
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2006-16-06 | Codebase has been uploaded into JIRA. |
+
+# Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2006-06-16 | Software Grant form received by Jim |
+
+# Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2006-06-16 | Software Grant form received by Jim |
+| 2006-06-19 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2006-06-19 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2006-06-19 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+
+- Has the receiving PMC voted to accept it?
+
+Started an explicit VOTE on 2006-06-19
+
diff --git a/content/ws-sandesha.md b/content/ws-sandesha.md
new file mode 100644
index 0000000..b0afe1b
--- /dev/null
+++ b/content/ws-sandesha.md
@@ -0,0 +1,50 @@
+Title: ws-sandesha
+
+
+The incoming code was contributed by University of Moratun. The code is currently in ws-fx/sandesha CVS. It implements WS-ReliableMessaging standard for use with Apache Axis.
+
+
+
+- Which PMC will be responsible for the code
+
+Apache Web Services PMC
+
+
+
+- Into which existing project/module
+
+WS-FX
+
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2004-05-02 | Codebase has been checked into WS-FX/Sandesha CVS. |
+
+# Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2004-01-23 | Software Grant form received by Jim |
+
+# Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2004-01-23 | Software Grant form received by Jim |
+| 2004-07-23 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2004-07-23 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2004-07-23 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+
+- Has the receiving PMC voted to accept it?
+
+YES
+
diff --git a/content/ws-swssf.md b/content/ws-swssf.md
new file mode 100644
index 0000000..d933f2d
--- /dev/null
+++ b/content/ws-swssf.md
@@ -0,0 +1,92 @@
+Title: Streaming-WebService-Security-Framework (swssf) Codebase Intellectual Property (IP) Clearance Status
+
+
+In order to be able to use WS-Security, typically the DOM processing model will be applied. For further processing, the XML document must be fully read into an object-tree by the DOM parser. The whole object-tree is hold in the computer memory during the processing. This requires a lot of processor and memory resources. Now, if an attacker sends over-sized SOAP documents, it can lead to a Denial-of-Service (DoS) attack. For encrypted documents the memory consumption is even higher. Firstly, the entire SOAP Message must be read into memory, then the decryption can be performed. The decrypted XML part must be read in an object-tree again. At this time, both the encrypted and decrypted XML part is present in the memory. Afterwards the encrypted XML part can be replaced with the decrypted one.
+
+
+WS-Security provides integrity, authenticity and confidentiality at the message level. But which parts of the SOAP message must be secured and how is not defined in the WS-Security standard. What are the requirements for a SOAP client to access a Web Service successfully? Must the entire SOAP body to be encrypted? Is a timestamp expected? Must the message be signed? Which keys must be used and in which format are they expected? In order to express such requirements, the WS-SecurityPolicy standard was introduced.
+
+
+If WS-SecurityPolicy is applied in an DOM environment and the client sends a message which does not correspond to the policy, a lot of computer resources are unnecessarily wasted again. The DOM parser fully reads the message into memory, the WS-Security framework processes the document using the security header and as last the WS-SecurityPolicy framework notes that the document was not protected as the policy it demanded.
+
+
+This work presents a streaming-based WebService-Security-Framework with the ability to process large SOAP documents efficiently. The streaming-based processing of the messages is done via the StAX-API. With the streaming-oriented approach it is possible to gradually read and process the messages without keeping the entire message in the memory. If it is not possible to process the message, for example because the used keys are not known, the process can be aborted immediately.
+
+
+The integration of WS-SecurityPolicy makes it possible to achieve the wished "fail-fast" behavior. This is, because policy relevant events can and will be evaluated immediately.
+
+
+Me, Marc Giger &lt;gigerstyle@gmx.ch&gt; contributes/donates my Streaming-WebService-Security-Framework (swssf) to the WSS4J project. A part of this work (encryption, decryption and policy-verification) was developed for my master-thesis in Applied IT Security. The swssf codebase consists of about 26396 lines java code and additionally about 9263 lines of test code (526 Tests).
+
+
+The contributed code is attached to issue WSS-311
+
+
+
+- Which PMC will be responsible for the code: Apache Web Services
+
+
+- Into which existing project/module: WSS4J
+
+
+- Officer or member managing donation: Daniel Kulp
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2011-08-23 | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product.<br></br>The framework will be integrated into WSS4J-2 and most probably renamed accordingly |
+
+MD5 or SHA1 sum for donated software: The svn dump is attached to https://issues.apache.org/jira/browse/WSS-311 and has an md5 of 9cd87d1ae47029f37fc4e30f7c185ebd and is digitally signed by the original author with a signature of: `
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.17 (GNU/Linux)
+
+iQEcBAABAgAGBQJOUQOgAAoJEF8Zt+R9dfyulyoIAKCQKQVvqNPC45j/MufbKs67
+J+7vK8hooJ8A3IaxRx0b5iIZwbWN1rX367yKniEMulkW9mNeu+VKj8d6JZcZuLkF
+I9IqNUrNG8o+u1LKD+84jdni8NVha584UXWJELG3I7000zX2AnTe6M3ePlOltj1G
+G7luUoMBLmsxTt4LIST+W1AAGlbwslRCe98CnWeYSrVDp+MFqd4z084ZkPTYLEJH
+bGFMWPIRtJpAp1mBUkykBHSp94g1blmYEZsqAQWivOZWRibYCEMMZ+bNqdt6QBrP
+imgQXercKOaXWbc2x37/1bSouGoBLel/l/PWeRzxjGF4Ol/OUKeqkHp1YBdzQcE=
+=6WD3
+-----END PGP SIGNATURE-----
+` 
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2011-08-29 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2011-08-24 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Marc Giger
+
+
+
+-  _For individuals, use the name as recorded on the committers page_ 
+
+| date | item |
+|------|------|
+| 2011-08-23 | Check that all active committers have a signed CLA on record. |
+| 2011-08-23 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2011-08-23 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2011-08-23 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote thread on the WebServices PMC](https://mail-search.apache.org/members/private-arch/ws-private/201108.mbox/%3C8221192.ACzd2zs93s@dilbert.dankulp.com%3E) (private list, ASF members only)
diff --git a/content/ws-wss4j.md b/content/ws-wss4j.md
new file mode 100644
index 0000000..0fcef01
--- /dev/null
+++ b/content/ws-wss4j.md
@@ -0,0 +1,50 @@
+Title: ws-wss4j
+
+
+The incoming code was contributed by Werner Dittmann and Davanum Srinivas. The code is currently in ws-fx/wss4j CVS. It implements several standards defined by OASIS Web Services Security TC for use with Apache Axis.
+
+
+
+- Which PMC will be responsible for the code
+
+Apache Web Services PMC
+
+
+
+- Into which existing project/module
+
+WS-FX
+
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|-------|-------|
+| 2004-02-24 | Codebase has been checked into WS-FX/wss4j CVS. |
+
+# Copyright {#Copyright}
+
+| date | item |
+|-------|-------|
+| 2004-02-23 | Software Grant form received by Jim |
+
+# Verify distribution rights {#Verify+distribution+rights}
+
+| date | item |
+|-------|-------|
+| 2004-02-24 | Software Grant form received by Jim |
+| 2004-07-23 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is is required to authorize their contributions under their individual CLA. |
+| 2004-07-23 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2004-07-23 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+
+- Has the receiving PMC voted to accept it?
+
+YES
+
diff --git a/content/wsrp4j.md b/content/wsrp4j.md
deleted file mode 100644
index ff48517..0000000
--- a/content/wsrp4j.md
+++ /dev/null
@@ -1,161 +0,0 @@
-Title: wsrp4j
-
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="retired">The WSRP4J project retired on 2010-04-18</span>
-
-
-The WSRP4J Project is an implementation of WSRP 1.0 Producer. WSRP is an OASIS specification that describes a protocol which allows portlets to be accessed remotely using Web Services.
-
-
-
-- 2010-04-18 Project terminated because of lack of community and interest
-
-- 2007-05-11 New committer: Ate Douma
-
-- 2006-05-30 New committer: Vishal Goenka
-
-- We developed Google Summer of Code proposal for a chunk of new features we have a student ready to implement them.
-
-- 2005-03-08 New committer: Diego Louzan
-
-- 2004-07-09 New committer: Scott Goldstein
-
-- We voted to move to Subversion and Maven.
-
-- We have received contributions from outside developers, which we hope grows into more diverse participation.
-
-- I (jmacna@apache.org) have met with constituents from higher education that are using WSRP4J and see a strong role for WSRP in their software plans, and I have encouraged them to contribute to the project publicly. We have seen increased participation from these teams already.
-
-| item | type | reference |
-|-------|-------|------------|
-| Website | www |  [http://portals.apache.org/wsrp4j/](http://portals.apache.org/wsrp4j/)  |
-| . | wiki |  [wsrp4j wiki](http://wiki.apache.org/portals/WSRP4J)  |
-| Mailing list | dev |  [wsrp4j-dev@portals.apache.org](mailto:wsrp4j-dev@portals.apache.org)  |
-| . | svn |  [wsrp4j-dev@portals.apache.org](mailto:wsrp4j-dev@portals.apache.org)  |
-| Bug tracking | JIRA |  [http://issues.apache.org/jira/browse/WSRP4J](http://issues.apache.org/jira/browse/WSRP4J)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/portals/wsrp4j/](http://svn.apache.org/repos/asf/portals/wsrp4j/)  |
-| Mentors |  [rubys@apache.org](mailto:rubys@apache.org)  | Sam Ruby |
-| . |  [dims@apache.org](mailto:dims@apache.org)  | Davanum Srinivas |
-| Committers |  [jacob@apache.org](mailto:jacob@apache.org)  | Richard Jacob |
-| . |  [taylor@apache.org](mailto:taylor@apache.org)  | David Sean Taylor |
-| . |  [jmacna@apache.org](mailto:jmacna@apache.org)  | Julie MacNaught |
-| . |  [behl@apache.org](mailto:behl@apache.org)  | Stefan Behl |
-| . |  [cziegeler@apache.org](mailto:cziegeler@apache.org)  | Carsten Ziegeler |
-| . |  [pfisher@apache.org](mailto:pfisher@apache.org)  | Peter Fischer |
-| . |  [sgala@apache.org](mailto:sgala@apache.org)  | Santiago Gala |
-| . |  [acoliver@apache.org](mailto:acoliver@apache.org)  | Andrew C. Oliver |
-| . |  [dims@apache.org](mailto:dims@apache.org)  | Davanum Srinivas |
-| . |  [sgoldstein@apache.org](mailto:sgoldstein@apache.org)  | Scott Goldstein |
-| . |  [dlouzan@apache.org](mailto:dlouzan@apache.org)  | Diego Louzan Martinez |
-| Extra | . | . |
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|-------|-------|
-| 2003-07-25 | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| 2003-01-21 | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|-------|-------|
-| 2003-07-25 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2003-09-03 | Subscribe all Mentors on the pmc and general lists. |
-| 2003-09-03 | Give all Mentors access to all incubator CVS modules. (to be done by PMC chair) |
-| 2003-09-03 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.cwiki' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|-------|-------|
-| 2003-09-02 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2004-03-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|-------|-------|
-| 2003-08-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| 2003-08-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|-------|-------|
-| 2003-09-03 | Check that all active committers have submitted a contributors agreement. |
-| 2004-01-07 | Add all active committers in the STATUS file. |
-| 2003-09-03 | Ask root for the creation of committers' accounts on cvs.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|-------|-------|
-| 2003-09-03 | Ask infrastructure to create source repository modules and add thecommitters to the avail file. |
-| 2003-09-03 | Ask infrastructure to set up and archive Mailing lists. |
-| 2003-09-03 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| 2003-09-03 | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project? Yes
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.) Yes.
-
-- Are project decisions being made in public by the committers? Yes
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers? Yes
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/xap.md b/content/xap.md
deleted file mode 100644
index e8fd2a2..0000000
--- a/content/xap.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: XAP Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise.
-
-
-<span class="retired">The XAP project retired on 2009-06-26</span>
-
-
-XAP is an XML-based declarative framework for building, deploying and maintaining rich, interactive Ajax powered web applications. It aims to reduce the need for scripting and help solve the development and maintenance challenges associated with large scale JavaScript programming.
-
-
-
-- 2009-06-26: Incubator PMC decided to retire the project
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/xap/](http://incubator.apache.org/xap/)  |
-| . | wiki | . |
-| Mailing list | dev |  `xap-dev`  ` at `  `incubator .apache.org`  |
-| . | user |  `xap-user`  ` at `  `incubator .apache.org`  |
-| . | commits |  `xap-commits`  ` at `  `incubator .apache.org`  |
-| . | ppmc |  `xap-private`  ` at `  `incubator .apache.org`  |
-| Bug tracking | jira |  [http://issues.apache.org/jira/browse/XAP](http://issues.apache.org/jira/browse/XAP)  |
-| Source code | SVN |  [http://svn.apache.org/repos/asf/incubator/xap/](http://svn.apache.org/repos/asf/incubator/xap/)  |
-| Mentors | cliffs | Cliff Schmidt |
-| . | rdonkin | Robert Burrell Donkin |
-| . | susie | Susan Wu |
-| Committers | . | . |
-| . | apien | Atsuko Pien |
-| . | bbuffone | Bob Buffone |
-| . | cliffs | Cliff Schmidt |
-| . | cwei | Coach Wei |
-| . | eacmen | Peter Eacmen |
-| . | jmargaris | James Margaris |
-| . | kaplansky | Igor Kaplansky |
-| . | mturyn | Michael Turyn |
-| . | sboyd | Scott Boyd |
-| . | schepers | Doug Schepers |
-| . | . | Jonathan Levin |
-| . | . | Animesh Kumar |
-
-
-- none yet
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated&amp;#xD; {#Identify+the+project+to+be+incubated%26%23xD%3B}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2006-06-19 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2006-05-02 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2006-06-20 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator SVN repository. (to be done by PMC chair) |
-| 2006-06-20 | Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, e have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2006-05-02 | Check that all active committers have submitted a contributors agreement. |
-| 2006-06-19 | Add all active committers in the STATUS file. |
-| ....-..-.. | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2006-06-01 | Ask infrastructure to set up and archive Mailing lists. |
-| 2006-06-20 | Decide about and then ask infrastructure to setup an issuetracking system (Bugzilla, Scarab, Jira). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/xmlbeans.md b/content/xmlbeans.md
deleted file mode 100644
index d1d327c..0000000
--- a/content/xmlbeans.md
+++ /dev/null
@@ -1,324 +0,0 @@
-Title: xmlbeans
-
-
----------------------------------------------------------------------- ---------
-
-
- **NOTE: XMLBeans has graduated from Incubation** - please see [http://xml.apache.org/xmlbeans/](http://xml.apache.org/xmlbeans/) 
-
-
----------------------------------------------------------------------- ---------
-
-
-<span class="graduated">The XMLBeans project graduated on 2004-06-23</span>
-
-
-
-- create STATUS file in incubator-cvs
-
-- create mailing lists
-
-- create xml-xmlbeans CVS
-
-
-- configure viewcvs
-
-- commit mails -&gt; xml-xmlbeans-cvs@apache.org
-
-- setup xmlbeans bugzilla
-
-- Complete License Grant agreement
-
-- Have all committers sign CLA's
-
-
-- Cezar Andrei
-
-- David Bau
-
-- Patrick Calahan
-
-- Ken Kress
-
-- Laurence Moroney
-
-- David Remy
-
-- Dutta Satadip
-
-- Cliff Schmidt
-
-- Eric Vasilik
-
-- David Waite
-
-- Scott Ziegler
-
-- Relicense XML beans files with ASL 2.0
-
-
-- add ASF copyright to all files
-
-- move all packages to org.apache.xmlbeans
-
-- eliminate all non ASL code and library dependencies
-
-- mailing list tasks
-
-
-- lists-archived:
-
-
-- mbox -&gt; xml.apache.org/mail
-
-- Eyebrowse setup
-
-- setup xmlbeans wiki area and refactor pages to there
-
-- set up to sign builds
-
-
-- committer PGP keys
-
-- committer keys signed by someone in ASF (probably twl)
-
-- build xmlbeans website
-
-- grant some comitters access to xml-site
-
-- Define incubation exit criteria
-
-- configure build to match ASF style
-
-- setup mirroring of builds
-
----------------------------------------------------------------------- ---------
-
-
-# Identify the project to be incubated: XMLBeans {#Identify+the+project+to+be+incubated%3A+XMLBeans}
-
-X- Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
-
-
-X- If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names.
-
-
-xml-xmlbeans
-
-
-xmlbeans-dev@xml.apache.org xmlbeans-user@xml.apache.org xmlbeans-cvs@xml.apache.org
-
-
-X- If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance.
-
-
-X- If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted.
-
-
-# Interim responsibility: {#Interim+responsibility%3A}
-
-X- Who has been identified as the shepherd for the incubation?
-
-
-Ted Leung &lt;twl@apache.org&gt;
-
-
-X- Are they tracking progress in the file
-
-
-incubator:site/projects/xmlbeans.cwiki
-
-
-# Copyright: {#Copyright%3A}
-
-X- Have the papers that transfer rights to the ASF been received? It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
-
-
-X- Have the files been updated to reflect the new ASF copyright?
-
-
-# Verify distribution rights: {#Verify+distribution+rights%3A}
-
-X- For all code included with the distribution that is not under the Apache license, do we have the right to combine with Apache-licensed code and redistribute?
-
-
-X- Is all source code distributed by the project covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms?
-
-
-# Establish a list of active committers: {#Establish+a+list+of+active+committers%3A}
-
-X- Are all active committers in the STATUS file?
-
-
-X- Do they have accounts on cvs.apache.org?
-
-
-X- Have they submitted a contributors agreement?
-
-
-# Infrastructure: {#Infrastructure%3A}
-
-X- CVS modules created and committers added to avail file?
-
-
-X- Mailing lists set up and archived?
-
-
-X- Problem tracking system (Jira)?
-
-
-X- Has the project migrated to our infrastructure?
-
-
-# Collaborative Development: {#Collaborative+Development%3A}
-
-X- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-
-X- Are there three or more independent committers?
-
-
-X- Are project decisions being made in public by the committers?
-
-
-X- Are the decision-making guidelines published and agreed to by all of the committers?
-
-
-# Organizational acceptance of responsibility for the project: {#Organizational+acceptance+of+responsibility+for+the+project%3A}
-
-N/A If graduating to an existing PMC, has the PMC voted to accept it?
-
-
-X- If graduating to a new PMC, has the board voted to accept it?
-
-
-# Incubator sign-off: {#Incubator+sign-off%3A}
-
-X- Has the Incubator decided that the project has accomplished all of the above tasks?
-
-
-# 2004-04-20 {#2004-04-20}
-
-```
-- Status report for the Incubator - Changes since last report in
-January: * Added Dutta Satadip as a committer * Released
-incubating-xmlbeans-1.0.2 after a thorough legal review ** after
-review of license issues: added jaxen to distribution, removed junit,
-noted W3C XML Schemas ** applied Apache License 2.0 * Formed a PPMC;
-set up mailing list and designed guidelines * Moved from bugzilla to
-JIRA. * Set up new wiki pages. Expectations for next three months: *
-Find two more committers * Release one more distribution * Improve
-web site (faq, current info, etc) * Exit incubator
-
-```
-
-# 2004-01-17 {#2004-01-17}
-
-```
-- Status report for the Incubator - Overall the xmlbeans project is
-progressing with good committer productivity and a growing user
-community. Converting over the Apache CVS systems and build process
-has been accomplished along with various other Apache administrative
-tasks such as setting up the Apache website. There is some movement
-towards growth in the development side of the community with one
-contributor (Dutta Satadip) submitting a nice enhancement and several
-other contributors submitting small patches related to bugs. More on
-each of the bullet points below. * is the STATUS file up to date?
-(also post link) &lt;Cliff Schmidt&gt; We need to update the status file
-with the latest incubator guidelines. We're mostly there, but there
-are a couple things that need to be added. I also think the status
-file needs to be updated in one or two other ways. For instance, the
-tasks completed should now include: - build xmlbeans website - grant
-some committers access to xml-site (Cliff and Remy) &lt;/Cliff Schmidt&gt;
-http://incubator.apache.org/projects/xmlbeans.html * any legal,
-cross-project or personal issues that still need to be addressed? In
-general it appears xmlbeans is through most of the known issues that
-existed getting started. The committers have been able to be
-productive and there is a lot of code being created in version 2 and
-fixes are being made into version 1. One issue that we have run into
-is how best to accommodate commonly used api jars primarily (but not
-exclusively) JCP related api's from SUN. We are not sure the
-appropriate process to determine whether we can use a particular jar
-and host the jar in the xmlbeans build. examples of api's that we are
-unsure the appropriate/best way to deal with are: * JSR173 api and
-JSR 173 RI (Streaming API for XML, a.k.a., STAX) - the JSR173 RI
-dependency is temporary. Currently xmlbeans downloads it from
-external server during the build process * SAAJ api - we used the
-saaj-api source code in axis. * xml commons resolver (Apache jakarta)
-* jaxen (jaxen.sourceforge.net - apache-style license, but not
-apache) Here are some specific questions on this subject that David
-Bau posted: &lt;David Bau&gt; - We currently load resolver.jar and
-jaxen.jar if the user happens to put them on the classpath, and throw
-a runtime exception if the user tries to use a resolver- or jaxen-
-dependent feature without those JARs present. This is OK, but it
-would be nicer for users if resolver and jaxen were just included in
-xbean.jar, but this presents both licensing issues (for jaxen) and
-possible-version-conflict issues (for commons resolver). A question
-is: is there a nice way we include resolver.jar and jaxen.jar inside
-xbean.jar, or should we stay away from that idea? - We need the JSR
-173 API to run, and this is definitely something that we want to be
-able to distribute either directly inside xbean.jar, or at least
-directly inside Apache since it's so core. In other words, we can't
-expect users to do anything without this API present. I've noticed
-that for other APIs, such as SAAJ, Apache seems to have a "clean
-room" copy of the APIs. Should we be making such a copy of the JSR
-173 APIs? What is the right way to do this? &lt;/David Bau&gt; * what has
-been done for incubation since the last report? &lt;David Bau&gt; The main
-thing is that we've been working on the project. We're getting more
-folks hanging around on the lists; we're getting some of the code
-that we've talked about on the lists and on the wiki actually written
-and checked in. We've been encouraging the wider community to
-critique and contribute ideas and code. Community-building is a
-gradual process; we don't have a mature community yet, but we've
-certainly gotten started at building a little one. &lt;/David Bau&gt; *
-source code checkin (was that since last status report?) * build and
-test ant scripts established * website updated including docs, source
-code access, etc. * established version 2 effort and modified CVS
-tree accordingly * proposed (close to implementing I think) branching
-strategy for version 1 (by Kevin Krouse) * gump integration (thanks
-to Robert Burrell Donkin) * plans and expectations for the next
-period? * development on v2 will continue incorporating community
-feedback. * continued work on soliciting volunteers for contribution
-and committership. * work on organizing bug tracking and follow up *
-xmlbeans-1.01 distribution (minor bug fixes to v1) * improve process
-of bug testing and fixing from BugZilla contributions. * any
-recommendations for how incubation could run more smoothly for you?
-Incubation seems to be going well with one, albeit an important one,
-challenge of getting outside committers. Having a large existing
-codebase in a fairly complicated area makes it challenging. The
-growing user community and the excellent posts that we are getting on
-the xmbleans-dev list make us optimistic we will make some
-breakthroughs in the next period. * things that xmlbeans could/will
-improve on (summary, contributed by Cliff Schmidt) 1. Bug management:
-http://nagoya.apache.org/bugzilla/buglist.cgi?product=XMLBeans (as
-has already been mentioned by one or two others) -- This is just as
-much related to community as code. Of the 12 bugs entered so far, we
-haven't done a very good job of keeping them updated with status. We
-should encourage people to file bugs by showing that the committers
-are actually responding to them (even if the response is "need more
-info to repro" or simply noting the priority). 2. Web site:
-http://xml.apache.org/xmlbeans/ -- We got this built and running but
-we need to keep it updated. For instance, it still shows the
-ApacheCon advertisement. 3. Binary download. -- We started to get
-this done, but I don't think we ever finished. Actually, I'd like to
-try to get this done in the next couple days. 4. PPMC -- The
-incubator introduced the idea of a PPMC and we haven't responded to
-this yet. I'll follow up in a separate post on what needs to be done.
-5. Status file -- We need to update the status file with the latest
-incubator guidelines. We're mostly there, but there are a couple
-things that need to be added. I also think the status file needs to
-be updated in one or two other ways. For instance, the tasks
-completed should now include: - build xmlbeans website - grant some
-committers access to xml-site (although I forgot who has this; I
-think it is me and Remy) 6. Committer keys Bau and I were both able
-to make it to ApacheCon and we both participated in the key-signing
-party. We need to get other committers to make keys and get them
-signed by me and Bau whenever we run into each other in person again.
-7. New Committers The biggest issue of all is definitely the new
-committers, as everyone seems to agree. We really need to find more
-ways to encourage others to contribute. I think we are all ready and
-willing to share some of the responsibility; we just need to find
-people who are showing enough interest (and action) to be considered
-for committership.
-
-```
diff --git a/content/xmlbeanscxx.md b/content/xmlbeanscxx.md
deleted file mode 100644
index 8fd1e12..0000000
--- a/content/xmlbeanscxx.md
+++ /dev/null
@@ -1,164 +0,0 @@
-Title: Apache XML Beans C++ Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-<div class="section">
-This page tracks the incubation status of the Apache XML Beans C++ project.
-
-
-<span class="retired">The XMLBeans/C++ project retired in 2007-05-16</span>
-
-</div><div class="section">
-The Apache XML Beans C++ project will produce a C++ equivalent to Apache's XMLBeans project for Java.
-
-
-XMLBeans provides the developer with an 'object' representation of structured XML data conforming to Schema language. Additionally, XMLBeans enables the developer to handle XML documents directly, achieving increased performance and flexibility in a single framework. The C++ version will provide a similar user experience to the popular Java version, but will be optimized to take advantage of the powerful, high-performance features of C++.
-
-</div><div class="section">
-
-- 2005-06-06 Project accepted by the Web services PMC.
-
-- 2005-05-15 Project proposed on general@incubator mailing.
-
-- 2005-02-09 xmlbeanscxx [project page](http://incubator.apache.org/xmlbeanscxx) and [status page](http://incubator.apache.org/projects/xmlbeanscxx.html) committed to subversion.
-</div><div class="section">
-| item | id | reference |
-|------|----|-----------|
-| Web site | www |  [http://incubator.apache.org/xmlbeanscxx/](http://incubator.apache.org/xmlbeanscxx/)  |
-|  | wiki |  [http://wiki.apache.org/xmlbeanscxx/](http://wiki.apache.org/xmlbeanscxx/)  |
-| Mailing lists | dev |  [cxx-dev@xmlbeans.apache.org](mailto:cxx-dev@xmlbeans.apache.org)  |
-|  | svn |  [cxx-commits@xmlbeans.apache.org](mailto:cxx-commits@xmlbeans.apache.org)  |
-|  | ppmc |  [TBD](mailto:)  |
-| Moderators | abrookes |  [Allen Brookes](mailto:abrookes_at_apache.org)  |
-|  | dhaney |  [David Haney](mailto:dhaney_at_apache.org)  |
-| Bug tracking | TBD |  [TBD]()  |
-| Source code | svn |  []( )  |
-| Sponsor |  |  [Incubator PMC](mailto:pmc_at_incubator.apache.org)  |
-| Mentors | Cliff Schmidt |  [Cliff Schmidt](mailto:) (See this [post](http://www.mail-archive.com/general@incubator.apache.org/msg04836.html) .) |
-| Committers | abrookes |  [Allen Brookes](mailto:abrookes_at_roguewave_dot_com)  |
-| hbuelow |  [Heidi Buelow](mailto:heidi.buelow_at_apache.org)  |
-|  | dhaney |  [David Haney](mailto:dhaney_at_apache.org)  |
-|  | myoder |  [Michael Yoder](mailto:yoder_at_roguewave.com)  |
-|  | ttriemstra |  [Tim Triemstral](mailto:ttriemstra_at_apache_dot_org)  |
-|  |  |  [TBD](mailto:tbd)  |
-
-Committers in _italics_ do not have a signed [Contributor License Agreement](http://incubator.apache.org/forms/ASF_Contributor_License_2_form.pdf) on file.
-
-</div><div class="section">
-| file | note |
-|------|------|
-| TBD | TBD |
-</div>
-
-
-
-# Project Setup {#Project+Setup}
-
-
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| TBD | Make sure that the requested project name does not already exist and check [NameProtect](http://www.nameprotect.com) to be sure that the name is not already trademarked for an existing software product. |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the cvs module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| N/A | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Interim responsibility {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| TBD | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| TBD | Subscribe all Mentors on the pmc and general lists. |
-| TBD | Give all Mentors access to all incubator SVN modules (to be done by PMC chair). |
-| TBD | Tell Mentors to track progress in the status file. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| TBD | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| TBD | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| TBD | Check and make sure that for all code included with the distribution that is not under the Apache license, has the right to combine with Apache-licensed code and redistribute. |
-| TBD | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| TBD | Check that all active committers have submitted a contributors agreement (see the list of [committers](#committers) above for any exceptions). |
-| TBD | Add all active committers to the status page. |
-| TBD | Ask root to create committers' accounts on cvs.apache.org ( [INFRA-440](http://issues.apache.org/jira/browse/INFRA-440) ). |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| TBD | Ask infrastructure to create source repository modules and grant the committers karma ( [INFRA-441](http://issues.apache.org/jira/browse/INFRA-441) ). |
-| TBD | Ask infrastructure to set up and archive mailing lists ( [INFRA-339](http://issues.apache.org/jira/browse/INFRA-339) ). |
-| TBD | Decide about and then ask infrastructure to setup an issue tracking system ( [INFRA-438](http://issues.apache.org/jira/browse/INFRA-438) ). |
-| TBD | Migrate the project to our infrastructure. |
-
-## Project-specific {#Project-specific}
-
-| date | item |
-|------|------|
-| TBD | Publish a [page](http://incubator.apache.org/xmlbeanscxx/bugs.html) on how to file issues against the project and how to submit patches ( [XMLBEANSCXX-9](http://issues.apache.org/jira/browse/XMLBEANSCXX-9) ). |
-| TBD | Improve the [project page](http://incubator.apache.org/xmlbeanscxx/) ( [XMLBEANSCXX-6](http://issues.apache.org/jira/browse/XMLBEANSCXX-6) ). |
-| TBD | Make the [Class Reference](http://svn.apache.org/repos/asf/incubator/xmlbeanscxx/trunk/doc/stdlibref/) and [Users Guide](http://svn.apache.org/repos/asf/incubator/xmlbeanscxx/trunk/doc/stdlibug/) available online, from the project page ( [XMLBEANSCXX-12](http://issues.apache.org/jira/browse/XMLBEANSCXX-12) ). |
-| TBD | Make a tarball of stable project sources available for download from the project site. |
-| TBD | Document the design and development practices and publish them on the project site. |
-| TBD | Put together a list of things to do and publish it on the project site. |
-| TBD | Check in the test driver. |
-| TBD | Check in the project test suite. |
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project-specific {#Project-specific-N10439}
-
- _No project-specific tasks._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/xmlgraphics-batik-xmleditor-component.md b/content/xmlgraphics-batik-xmleditor-component.md
new file mode 100644
index 0000000..5418d8b
--- /dev/null
+++ b/content/xmlgraphics-batik-xmleditor-component.md
@@ -0,0 +1,90 @@
+Title: XML Graphics Batik - XML Text Editor Component Codebase Intellectual Property (IP) Clearance Status
+
+
+The XML Text Editor Component is a Swing component for viewing and editing XML documents with syntax highlighting. It also has undo/redo functionality.
+
+
+ [Contributed code](http://issues.apache.org/bugzilla/attachment.cgi?id=21128) 
+
+
+
+- Which PMC will be responsible for the code: XML Graphics
+
+
+- Into which existing project/module: Batik
+
+
+- Committer doing all the work around the donation: Cameron McCormack
+
+
+- Officer or member managing donation: Jeremias Märki
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | 
+If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
+
+ |
+
+MD5 or SHA1 sum for [donated software](http://issues.apache.org/bugzilla/attachment.cgi?id=21128) : **23e6385ee569715ba3acb91ee9ab548b** (md5sum (GNU coreutils) 5.97)
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-11-20 | 
+Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
+
+ |
+| 2007-11-20 | 
+Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright.
+
+ |
+
+Identify name recorded for software grant:
+
+
+<quote> `Tonny Kohar, Product Manager / Representing Kiyut 
+    "Zip file of source files at http://issues.apache.org/bugzilla/attachment.cgi?id=21128"` </quote>
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights: Kiyut
+
+
+
+- Tonny Kohar
+
+| date | item |
+|------|------|
+| 2007-11-20 | 
+Check that all active committers have a signed CLA on record.
+
+ |
+| 2007-11-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-11-20 | 
+Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.
+
+ |
+| 2007-11-20 | 
+Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.
+
+ |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on general@xmlgraphics.a.o, 2007-11-26](http://mail-archives.apache.org/mod_mbox/xmlgraphics-general/200711.mbox/%3c20071126080745.7201.DEV@jeremias-maerki.ch%3e) 
diff --git a/content/xmlgraphics-commons-postscript-dsc-parser.md b/content/xmlgraphics-commons-postscript-dsc-parser.md
new file mode 100644
index 0000000..95c9ca3
--- /dev/null
+++ b/content/xmlgraphics-commons-postscript-dsc-parser.md
@@ -0,0 +1,65 @@
+Title: XYZ Codebase Intellectual Property (IP) Clearance Status
+
+
+The patch adds a DSC parser/processor to XML Graphics Commons. Commons already contains code to generate PostScript files. The DSC specification describes special comments in PostScript code which are used to structure a PostScript document. More detailed info can be found in the BugZilla issue.
+
+
+ [BugZilla issue #41582 containing the patch](http://issues.apache.org/bugzilla/show_bug.cgi?id=41582) 
+
+
+
+- Which PMC will be responsible for the code: Apache XML Graphics
+
+
+- Into which existing project/module: XML Graphics Commons
+
+
+- Officer or member managing donation: Jeremias Märki (jeremias)
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| n/a | If applicable, make sure that any associated name does not already exist and is not already trademarked for an existing software product. |
+
+MD5 or SHA1 sum for donated software: AF8552A7C0ADC7D15CA53D980D08B81D (MD5).
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2007-02-26 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
+| 2007-02-09 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
+
+Identify name recorded for software grant: _"A PostScript DSC parser/processor for the XML Graphics project (2007-02-09)."_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Original author and copyright owner: Jeremias Märki (availid: jeremias)
+
+
+Corporations and individuals holding existing distribution rights: Jeremias Märki (availid: jeremias)
+
+
+| date | item |
+|------|------|
+| 2007-02-09 | Check that all active committers have a signed CLA on record. |
+| 2007-02-09 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2007-02-09 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2007-02-09 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on general@xmlgraphics.apache.org](http://mail-archives.apache.org/mod_mbox/xmlgraphics-general/200702.mbox/%3c20070209092649.69B1.DEV@jeremias-maerki.ch%3e) ( [Thread in Nabble](http://www.nabble.com/-VOTE--New-component%3A-DSC-parser-processor-tf3166937.html) )
diff --git a/content/xmlgraphics-fop-afp-renderer.md b/content/xmlgraphics-fop-afp-renderer.md
new file mode 100644
index 0000000..d152742
--- /dev/null
+++ b/content/xmlgraphics-fop-afp-renderer.md
@@ -0,0 +1,138 @@
+Title: XML Graphics FOP - AFP Renderer Codebase Intellectual Property (IP) Clearance Status
+
+
+The AFP Renderer is an additional output backend (like PDF and PostScript) for Apache FOP. AFP is a printer language from IBM mostly used in high-volume printing.
+
+
+The AFP Renderer for FOP version 0.20.5 was developed by Pete Townsend with support from Joe Schmetzer. The project is currently hosted on SourceForge ( [http://afp-renderer.sourceforge.net/](http://afp-renderer.sourceforge.net/) ). Both developers have indicated their willingness to donate the code to the ASF.
+
+
+The code has already been extensively reviewed and adapted to the latest FOP release by Manuel Mall an active FOP committer.
+
+
+
+- Which PMC will be responsible for the code: XML Graphics
+
+
+- Into which existing project/module: FOP
+
+
+- Officer or member managing donation: Jeremias Märki
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2006-01-05 | 
+If applicable, make sure that any associated name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product.
+
+
+ _The codebase consists exclusively of Java sources in the package org.apache.fop.renderer.afp and subpackages. Once integrated into the FOP codebase this codebase will not have its own name as such but be simply part of FOP._ 
+
+ |
+
+MD5 or SHA1 sum for donated software:
+
+
+ [http://prdownloads.sourceforge.net/afp-renderer/afp-renderer-handover-src.tar.gz?download](http://prdownloads.sourceforge.net/afp-renderer/afp-renderer-handover-src.tar.gz?download) 
+
+
+MD5: **15a9710c6d5d2a2f400e33aaf41d4b66** afp-renderer-handover-src.tar.gz
+
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2006-04-19 | 
+Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project.
+
+
+ _Software grants received from all three contributors._ 
+
+ |
+| 2006-01-05 | 
+Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright.
+
+
+ _All sources have the ALv2 copyright header (checked by Manuel Mall)_ 
+
+ |
+
+Identify name recorded for software grant:
+
+
+<quote> `
+Joseph Francis Schmetzer / Representing Self
+    "Source Code for an AFP Renderer for Apache FOP
+     (to Apache XML Graphics PMC):
+       http://prdownloads.sourceforge.net/afp-renderer/afp-renderer-handover-src.tar.gz?download"
+     ALSO: Licensors Pete Townsend, Joe Schmetzer, Manuel Mall
+
+Manuel Mall / Representing Self
+    "Source Code for an AFP Renderer for Apache FOP
+     (to Apache XML Graphics PMC):
+       http://prdownloads.sourceforge.net/afp-renderer/afp-renderer-handover-src.tar.gz?download"
+     ALSO: Licensors Pete Townsend, Joe Schmetzer, Manuel Mall
+
+Pete Townsend / Representing Self
+    "Source Code for an AFP Renderer for Apache FOP
+     (to Apache XML Graphics PMC):
+       http://prdownloads.sourceforge.net/afp-renderer/afp-renderer-handover-src.tar.gz?download"
+     ALSO: Licensors Pete Townsend, Joe Schmetzer, Manuel Mall
+` </quote>
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+-  _For individuals, use the name as recorded on the [committers page](http://people.apache.org/~jim/committers.html) _ 
+
+| date | item |
+|------|------|
+| 2006-04-19 | 
+Check that all active committers have a signed CLA on record.
+
+
+
+- Pete Townsend (ICLA on record)
+
+- Joseph Francis Schmetzer (ICLA on record)
+
+- Manuel Mall (ID: manuel, exisiting ASF committer, ICLA on record)
+
+ _The active committers are Pete Townsend and Joe Schmetzer. Manuel Mall has conducted an extensive review of the codebase. Based on the structure and comments in the code, the coding style and the overall appearance it can be concluded that these two active committers are the original authors of the codebase._ 
+
+ |
+| 2006-04-20 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2006-01-05 | 
+Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute.
+
+
+ _The distribution consists exclusively of Java source files all of which are Apache-licensed (checked by Manuel Mall)._ 
+
+ |
+| 2006-01-05 | 
+Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.
+
+
+ _The project depends only on items already under Apache license, i.e. FOP (checked by Manuel Mall)._ 
+
+ |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs:
+
+
+
+-  [Vote on general@xmlgraphics.a.o, 2006-02-01](http://mail-archives.apache.org/mod_mbox/xmlgraphics-general/200602.mbox/%3c20060201160916.22D4.DEV@jeremias-maerki.ch%3e) 
diff --git a/content/yoko.md b/content/yoko.md
deleted file mode 100644
index d764960..0000000
--- a/content/yoko.md
+++ /dev/null
@@ -1,104 +0,0 @@
-Title: Yoko Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
- **Yoko (CORBA implementation) has been dissolved, with parts going to Geronimo and CXF.** 
-
-
-<span class="retired">The Yoko project retired on 2007-12-17</span>
-
-
-The Yoko project is a robust and high performance CORBA server which is integrated into Apache Geronimo but also be usable from inside any JVM. It is hoped that it will provide the ORB implementation for the Harmony project.
-
-
-
-- 2006-01-18 Project announced publicly.
-
-- 2006-01-31 Project proposed and accepted for incubation in Apache.
-
-- 2007-12-17 Project dissolved, with parts going to Geronimo and CXF.<br></br> **general-get.16751@incubator.apache.org** 
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/yoko/](http://incubator.apache.org/yoko/)  |
-| Wiki | wiki |  [http://wiki.apache.org/incubator-yoko/](http://wiki.apache.org/incubator-yoko/)  |
-| Mailing list | dev | yoko-dev@incubator.apache.org |
-| Mailing list | users | yoko-users@incubator.apache.org |
-| Mailing list | commits | yoko-commits@incubator.apache.org |
-| Bug tracking | JIRA<br></br> |  [https://issues.apache.org/jira/browse/YOKO](https://issues.apache.org/jira/browse/YOKO)  |
-| Source code | SVN<br></br> |  [http://svn.apache.org/repos/asf/incubator/yoko/](http://svn.apache.org/repos/asf/incubator/yoko/)  |
-| Proposal | Wiki |  [http://wiki.apache.org/incubator/CorbaProposal](http://wiki.apache.org/incubator/CorbaProposal) <br></br> |
-| Mentors |  | Matt Hogstrom, Geir Magnusson Jr., James Strachan |
-| Committer | dblevins | David Blevins |
-| Committer | bravi | Balaji Bravi |
-| Committer | adc | Alan Cabrera |
-| Committer | chirino | Hiram Chirino |
-| Committer | jgenender | Jeff Genender |
-| Committer | hogstrom | Matt Hogstrom |
-| Committer | djencks | David Jencks |
-| Committer | ahj | Anders Hessellund Jensen |
-| Committer | pkosuru | Prasad Kosuru |
-| Committer | lkuehne | Lars Kühne |
-| Committer | trustin | Trustin Lee |
-| Committer | rickmcg | Rick McGuire |
-| Committer | dmiddlem | Darren Middleman |
-| Committer | enolan | Edell Nolan |
-| Committer | cjodea | Conrad O'Dea |
-| Committer | dpicco | Dion Picco |
-| Committer | andypiper | Andy Piper |
-| Committer | jsommer | Jeppe Sommer |
-| Committer | adisakala | Adi Sakala |
-| Committer | dain | Dain Sundstrom |
-| Committer | krab | Kresten Krab Thorup |
-| Committer | dweir | David Weir |
-
-
-- http://svn.apache.org/repos/asf/incubator/yoko/trunk/STATUS
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache. This is currently in progress.
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it? **Not Applicable** 
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/yunikorn.md b/content/yunikorn.md
deleted file mode 100644
index 1f0f2f4..0000000
--- a/content/yunikorn.md
+++ /dev/null
@@ -1,179 +0,0 @@
-Title: Apache YuniKorn Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-YuniKorn is a standalone resource scheduler responsible for scheduling batch jobs and long-running services on large scale distributed systems running in on-premises environments as well as different public clouds.
-
-
-
-- 2021-07-07 New Committer, Manikandan R
-
-- 2021-07-07 New PPMC member, Kinga Marton
-
-- 2021-04-09 Apache YuniKorn v0.10.0 released.
-
-- 2021-02-03 New Committer, TingYao Huang
-
-- 2020-09-22 New Committer, Kinga Marton
-
-- 2020-08-26 Apache YuniKorn v0.9.0 released.
-
-- 2020-06-16 New Committer, Li Gao
-
-- 2020-05-04 First Apache YuniKorn release v0.8.0.
-
-- 2020-04-01 Published yunikorn website.
-
-- 2020-03-27 Changed JIRA and GitHub email notification lists.
-
-- 2020-01-21 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://yunikorn.apache.org/](http://yunikorn.apache.org/)  |
-| Mailing list | dev |  `dev`  `@`  `yunikorn.apache.org`  |
-| . | private |  `private`  `@`  `yunikorn.apache.org`  |
-| . | issues |  `issues`  `@`  `yunikorn.apache.org`  |
-| . | reviews |  `reviews`  `@`  `yunikorn.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/projects/YUNIKORN/issues](https://issues.apache.org/jira/projects/YUNIKORN/issues)  |
-| Source code | incubator-yunikorn-core | https://github.com/apache/incubator-yunikorn-core.git |
-| . | incubator-yunikorn-k8shim | https://github.com/apache/incubator-yunikorn-k8shim.git |
-| . | incubator-yunikorn-scheduler-interface | https://github.com/apache/incubator-yunikorn-scheduler-interface.git |
-| . | incubator-yunikorn-web | https://github.com/apache/incubator-yunikorn-web.git |
-| . | incubator-yunikorn-site | https://github.com/apache/incubator-yunikorn-site.git |
-| Roster | people.apache |  [YUNIKORN Roster](http://people.apache.org/phonebook.html?podling=yunikorn)  |
-| Mentors | junping_du | Junping Du |
-| . | felixcheung | Felix Cheung |
-| . | jlowe | Jason Lowe |
-| . | holden | Holden Karau |
-| Committers | akhilpb | Akhil PB |
-| . | asuresh | Arun Suresh |
-| . | curino | Carlo Curino |
-| . | dbtsai | DB Tsai |
-| . | jhung | Jonathan Hung |
-| . | kingamarton | Kinga Marton |
-| . | kkaranasos | Konstantinos Karanasos |
-| . | ligao | Li Gao |
-| . | mani | Manikandan R |
-| . | subru | Subramaniam Krishnan |
-| . | sunilg | Sunil G |
-| . | taoyang | Tao Yang |
-| . | tingyao | TingYao Huang |
-| . | vinodkv | Vinod Kumar Vavilapalli |
-| . | wangda | Wangda Tan |
-| . | wwei | Weiwei Yang |
-| . | wilfreds | Wilfred Spiegelenburg |
-
-
--  [YuniKorn Board Reports](https://whimsy.apache.org/board/minutes/yunikorn.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| N/A | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| 2020-01-29 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2020-01-29 | Request DNS (first step after creating podling status page) |
-| 2020-01-29 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator) Completed |
-| 2020-02-01 | Request [git repositories](https://reporeq.apache.org/) Completed |
-| 2020-01-29 | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). Completed |
-| N/A | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). Not Required |
-| 2020-02-04 | Migrate the project to our infrastructure. Completed |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2020-03-28 | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/yunikorn.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2020-02-04 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2020-05-04 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2020-02-04 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2020-02-04 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2020-02-15 | Check that all active committers have submitted a contributors agreement. |
-| 2020-03-12 | Add all active committers in the relevant section above. |
-| 2020-02-15 | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/zeppelin.md b/content/zeppelin.md
deleted file mode 100644
index 1fe9300..0000000
--- a/content/zeppelin.md
+++ /dev/null
@@ -1,179 +0,0 @@
-Title: Zeppelin Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-ZEPPELIN is a collaborative data analytics and visualization tool for distributed, general-purpose data processing systems such as Apache Spark, Apache Flink, etc.
-
-
-<span class="graduated">The Zeppelin project graduated on 2016-05-18</span>
-
-
-
-- 2016-03-29 New committer: Prabhjyot Singh.
-
-- 2016-01-16 New committer: Felix Cheung.
-
-- 2015-11-18 Zeppelin 0.5.5-incubating released.
-
-- 2015-10-03 New committer: Jongyoul Lee.
-
-- 2015-07-23 Zeppelin 0.5.0-incubating released.
-
-- 2015-06-24 New committer: Mina Lee.
-
-- 2014-12-23 Project enters incubation.
-
-
--  [Project website](http://zeppelin.incubator.apache.org/) 
-
-
--  [Project Wiki](https://cwiki.apache.org/confluence/display/ZEPPELIN) 
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://zeppelin.incubator.apache.org/](http://zeppelin.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/ZEPPELIN](https://cwiki.apache.org/confluence/display/ZEPPELIN)  |
-| Mailing list | users |  `users`  `@`  `zeppelin.incubator.apache.org`  |
-| . | dev |  `dev`  `@`  `zeppelin.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `zeppelin.incubator.apache.org`  |
-| . | private |  `private`  `@`  `zeppelin.incubator.apache.org`  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/ZEPPELIN](https://issues.apache.org/jira/browse/zeppelin)  |
-| Source code | Project GIT |  [https://gitbox.apache.org/repos/asf/incubator-zeppelin.git](https://gitbox.apache.org/repos/asf/incubator-zeppelin.git)  |
-| . | GitHub mirror |  [http://github.com/apache/incubator-zeppelin](http://github.com/apache/incubator-zeppelin)  |
-| Champion | . | . |
-| . | rvs | Roman Shaposhnik |
-| Mentors | . | . |
-| . | cos | Konstantin Boudnik |
-| . | hyunsik | Hyunsik Choi |
-| . | tdunning | Ted Dunning |
-| . | hsaputra | Henry Saputra |
-| . | rvs | Roman Shaposhnik |
-| Committers | . | . |
-| . | moon | Lee Moon Soo |
-| . | anthonycorbacho | Anthony Corbacho |
-| . | corneadoug | Damien Corneau |
-| . | bzz | Alexander Bezzubov |
-| . | kevinkim | Kevin Sangwoo Kim |
-| . | minalee | Mina Lee |
-| . | jongyoul | Jongyoul Lee |
-| . | felixcheung | Felix Cheung |
-| . | prabhjyotsingh | Prabhjyot Singh |
-
-
--  [September 2015](https://wiki.apache.org/incubator/September2015) 
-
--  [June 2015](https://wiki.apache.org/incubator/June2015) 
-
--  [May 2015](https://wiki.apache.org/incubator/May2015) 
-
--  [April 2015](https://wiki.apache.org/incubator/April2015) 
-
--  [March 2015](https://wiki.apache.org/incubator/March2015) 
-
--  [February 2015](https://wiki.apache.org/incubator/February2015) 
-
--  [January 2015](https://wiki.apache.org/incubator/January2015) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2015-01-03 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html) Tracking via [PODLINGNAMESEARCH-64](https://issues.apache.org/jira/browse/PODLINGNAMESEARCH-64)  |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2015-01-03 | Ask infrastructure to create source repository modules and grant the committers karma. Tracking via [INFRA-8968](https://issues.apache.org/jira/browse/INFRA-8968)  |
-| 2015-01-03 | Ask infrastructure to set up and archive mailing lists. |
-| 2015-01-03 | Ask infrastructure to set up issue tracker (JIRA). |
-| 2015-01-03 | Ask infrastructure to set up wiki (Confluence). |
-| 2015-01-03 | Ask infrastructure to set up svn pubsub website. |
-| 2015-03-25 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2015-01-03 | Subscribe all Mentors on the pmc and general lists. |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2015-03-20 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| 2015-11-14 | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| 2015-11-11 | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| 2015-11-11 | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2015-01-03 | Check that all active committers have submitted a contributors agreement. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/zetacomponents.md b/content/zetacomponents.md
deleted file mode 100644
index a6a1a59..0000000
--- a/content/zetacomponents.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Title: Zeta Components
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-<span class="retired">The Zeta Components project retired on 2012-04-20</span>
-
-
-Zeta Components is a high-quality library of loosely-coupled PHP components.
-
-
-ATTENTION: Apache Zeta Components has retired from incubation and left the Apache Software Foundation for various reasons. You can find the project on their new home at github: [http://github.com/zetacomponents](http://github.com/zetacomponents) .
-
-
-
-- 2012-04-20 Project is retired.
-
-- 2010-05-21 Project enters incubation.
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [http://incubator.apache.org/zetacomponents/](http://incubator.apache.org/zetacomponents/)  |
-| . | wiki |  [https://cwiki.apache.org/ZETACOMP](https://cwiki.apache.org/ZETACOMP)  |
-| Bug tracking | JIRA |  [https://issues.apache.org/jira/browse/ZETACOMP](https://issues.apache.org/jira/browse/ZETACOMP)  |
-| Source code | SVN |  [https://svn.apache.org/repos/asf/incubator/zetacomponents/](https://svn.apache.org/repos/asf/incubator/zetacomponents/)  |
-| Mentors | vermillard | Julien Vermillard |
-| . | clr | Craig L. Russel |
-| . | grobmeier | Christian Grobmeier |
-| Committers | derick | Derick Rethans |
-| . | kore | Kore Nordmann |
-| . | toby | Tobias Schlitt |
-| . | sebastian | Sebastian Bergmann |
-| . | oms | Ole Marius Smestad |
-| . | rolandb | Roland Benedetti |
-
-Zeta reports in February, May, August, November.
-
-
-
--  [August 2010](http://wiki.apache.org/incubator/August2010) 
-
--  [July 2010](http://wiki.apache.org/incubator/July2010) 
-
--  [June 2010](http://wiki.apache.org/incubator/June2010) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| ....-..-.. | Make sure that the requested project name does not already exist and check www.nameprotect.com to be sure that the name is not already trademarked for an existing software product. |
-| 2010-05-21 | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2010-07-31 | Ask infrastructure to create source repository modules and grant the committers karma. |
-| 2010-05-31 | Ask infrastructure to set up and archive mailing lists. |
-| 2010-06-14 | Ask infrastructure to set up issue tracker (JIRA, Bugzilla). |
-| 2010-08-13 | Ask infrastructure to set up wiki (Confluence, Moin). |
-| 2010-07-31 | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| 2010-05-21 | Identify all the Mentors for the incubation, by asking all that can be Mentors. |
-| 2010-06-02 | Subscribe all Mentors on the pmc and general lists. |
-| 2010-07-31 | Give all Mentors access to the incubator SVN repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| 2010-05-25 | Tell Mentors to track progress in the file 'incubator/projects/zetacomponents.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| 2010-07-12 | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project (signed by eZ Systems) |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| 2010-05-26 | Check that all active committers have submitted a contributors agreement. |
-| 2010-06-02 | Add all active committers in the STATUS file. |
-| 2010-06-04 | Ask root for the creation of committers' accounts on people.apache.org. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/zipkin.md b/content/zipkin.md
deleted file mode 100644
index 73a67ff..0000000
--- a/content/zipkin.md
+++ /dev/null
@@ -1,189 +0,0 @@
-Title: Apache Zipkin Project Incubation Status
-<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC"></link>
-
-This page tracks the project status, incubator-wise. For more general project status, look on the project website.
-
-
-Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. Zipkin’s design is based on the Google Dapper paper.
-
-
-<span class="retired">The Zipkin podling retired on 2019-06-19</span>
-
-
-
-- 2018-08-30 Project enters incubation.
-
-- 2019-06-19 The Zipkin podling retired on 2019-06-19
-
-
--  [Community Pages](http://zipkin.incubator.apache.org/community/) 
-
-
--  [Current Documentation](http://zipkin.incubator.apache.org/docs/) 
-
-
--  [Releases](http://zipkin.incubator.apache.org/releases/) 
-
-
-- link to the project status file (Committers,non-incubation action items,project resources, etc)
-
-If the project website and code repository are not yet setup, use the following table:
-
-
-| item | type | reference |
-|------|------|-----------|
-| Website | www |  [https://zipkin.io/](https://zipkin.io/) (podling [http://zipkin.incubator.apache.org/)](http://zipkin.incubator.apache.org/)  |
-| . | wiki |  [https://cwiki.apache.org/confluence/display/ZIPKIN](https://cwiki.apache.org/confluence/display/ZIPKIN)  |
-| Mailing list | dev |  `dev`  `@`  `zipkin.incubator.apache.org`  |
-| . | user |  `users`  `@`  `zipkin.incubator.apache.org`  |
-| . | private |  `private`  `@`  `zipkin.incubator.apache.org`  |
-| . | commits |  `commits`  `@`  `zipkin.incubator.apache.org`  |
-| Bug tracking | . |  [Zipkin](https://github.com/apache/incubator-zipkin/issues)  |
-| Source code | . | . |
-| . | incubator-zipkin | https://github.com/apache/incubator-zipkin.git |
-| . | incubator-zipkin-dependencies | https://github.com/apache/incubator-zipkin-dependencies.git |
-| . | incubator-zipkin-api | https://github.com/apache/incubator-zipkin-api.git |
-| . | incubator-zipkin-b3-propagation | https://github.com/apache/incubator-b3-propagation.git |
-| . | incubator-zipkin-docker-zipkin | https://github.com/apache/incubator-zipkin-docker-zipkin.git |
-| . | incubator-zipkin-docker-zipkin-dependencies | https://github.com/apache/incubator-zipkin-docker-zipkin-dependencies.git |
-| . | incubator-zipkin-report-java | https://github.com/apache/incubator-zipkin-report-java.git |
-| . | incubator-zipkin-brave | https://github.com/apache/incubator-zipkin-brave.git |
-| . | incubator-zipkin-aws | https://github.com/apache/incubator-zipkin-aws.git |
-| . | incubator-zipkin-gcp | https://github.com/apache/incubator-zipkin-gcp.git |
-| . | incubator-zipkin-docker-zipkin-gcp | https://github.com/apache/incubator-zipkin-docker-zipkin-gcp.git |
-| . | incubator-zipkin-brave-cassandra | https://github.com/apache/incubator-zipkin-brave-cassandra.git |
-| . | incubator-zipkin-docker-jre-full | https://github.com/apache/incubator-zipkin-docker-jre-full.git |
-| . | incubator-zipkin-brave-karaf | https://github.com/apache/incubator-zipkin-brave-karaf.git |
-| Roster | Whimsy |  [Zipkin Roster](https://whimsy.apache.org/roster/ppmc/zipkin)  |
-| Mentors |  | . |
-| . | mck | Michael Semb Wever |
-| . | reta | Andriy Redko |
-| . | johndament | John D. Ament |
-| . | ningjiang | Willem Ning Jiang |
-| . | wusheng | Sheng Wu |
-| Committers/PPMC |  | . |
-| . | abesto | Zoltán Nagy |
-| . | adriancole | Adrian Cole |
-| . | basvanbeek | Bas van Beek |
-| . | devinsba | Brian Devins-Suresh |
-| . | eirslett | Eirik Sletteberg |
-| . | jcchavezs | José Carlos Chávez |
-| . | kristofa | Kristof Adriaenssens |
-| . | llinder | Lance Linder |
-| . | mck | Mick Semb Wever |
-| . | mumismo | Jordi Polo Carres |
-| . | raja | Raja Sundaram Ganesan |
-| . | tommyludwig | Tommy Ludwig |
-
-
--  [Zipkin Board Reports](https://whimsy.apache.org/board/minutes/zipkin.html) 
-
-# Project Setup {#Project+Setup}
-
-This is the first phase on incubation, needed to start the project at Apache.
-
-
- _Item assignment is shown by the Apache id._  _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
-
-
-## Identify the project to be incubated {#Identify+the+project+to+be+incubated}
-
-| date | item |
-|------|------|
-| 2018-08-30 | Make sure that the requested project name does not already exist. [Please follow the guide to ensure a suitable project/product name.](http://www.apache.org/foundation/marks/naming.html)  |
-| N/A | If request from an existing Apache project to adopt an external package, then ask the Apache project for the SVN module and mail address names. |
-| ....-..-.. | If request from outside Apache to enter an existing Apache project, then post a message to that project for them to decide on acceptance. |
-| ....-..-.. | If request from anywhere to become a stand-alone PMC, then assess the fit with the ASF, and create the lists and modules under the incubator address/module names if accepted. |
-
-## Infrastructure {#Infrastructure}
-
-| date | item |
-|------|------|
-| 2018-09-01 | Request DNS (first step after creating podling status page) |
-| 2018-09-03 | Request [Mailing Lists](https://whimsy.apache.org/officers/mlreq/incubator)  |
-| ....-..-.. | Request [git repositories](https://reporeq.apache.org/)  |
-| ....-..-.. | Ask infrastructure to create source repository modules and grant the committers karma (if using SVN) |
-| N/A | Ask infrastructure to set up issue tracker ( [JIRA](https://selfserve.apache.org/jira.html) , Bugzilla). |
-| 2018-09-12 | Ask infrastructure to set up wiki ( [Confluence](https://selfserve.apache.org/confluence.html) ). |
-| ....-..-.. | Migrate the project to our infrastructure. |
-
-## Mentor-related responsibility/oversight {#Interim+responsibility}
-
-| date | item |
-|------|------|
-| N/A | Subscribe all Mentors on the pmc and general lists. |
-| ....-..-.. | Give all Mentors access to the incubator Git repository. (to be done by the Incubator PMC chair or an Incubator PMC Member wih karma for the authorizations file) |
-| ....-..-.. | Tell Mentors to track progress in the file 'incubator/projects/zipkin.html' |
-
-## Copyright {#Copyright}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that the papers that transfer rights to the ASF been received. It is only necessary to transfer rights for the package, the core code, and any new code produced by the project. |
-| ....-..-.. | Check and make sure that the files that have been donated have been updated to reflect the new ASF copyright. |
-
-## Verify distribution rights {#Verify+distribution+rights}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check and make sure that for all code included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
-| ....-..-.. | Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
-
-## Establish a list of active committers {#Establish+a+list+of+active+committers}
-
-| date | item |
-|------|------|
-| ....-..-.. | Check that all active committers have submitted a contributors agreement. |
-| ....-..-.. | Add all active committers in the relevant section above. |
-| ....-..-.. | Ask root for the creation of committers' accounts in LDAP. |
-
-## Project specific {#Project+specific}
-
- _Add project specific tasks here._ 
-
-
-# Incubation {#Incubation}
-
-These action items have to be checked for during the whole incubation process.
-
-
- _These items are not to be signed as done during incubation, as they may change during incubation._  _They are to be looked into and described in the status reports and completed in the request for incubation signoff._ 
-
-
-## Collaborative Development {#Collaborative+Development}
-
-
-- Have all of the active long-term volunteers been identified and acknowledged as committers on the project?
-
-- Are there three or more independent committers? (The legal definition of independent is long and boring, but basically it means that there is no binding relationship between the individuals, such as a shared employer, that is capable of overriding their free will as individuals, directly or indirectly.)
-
-- Are project decisions being made in public by the committers?
-
-- Are the decision-making guidelines published and agreed to by all of the committers?
-
-## Licensing awareness {#Licensing+awareness}
-
-
-- Are all licensing, trademark, credit issues being taken care of and acknowleged by all committers?
-
-## Project Specific {#Project+Specific}
-
- _Add project specific tasks here._ 
-
-
-# Exit {#Exit}
-
- _Things to check for before voting the project out._ 
-
-
-## Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
-
-
-- If graduating to an existing PMC, has the PMC voted to accept it?
-
-- If graduating to a new PMC, has the board voted to accept it?
-
-## Incubator sign-off {#Incubator+sign-off}
-
-
-- Has the Incubator decided that the project has accomplished all of the above tasks?
diff --git a/content/zookeeper.md b/content/zookeeper.md
new file mode 100644
index 0000000..6f1ad0a
--- /dev/null
+++ b/content/zookeeper.md
@@ -0,0 +1,111 @@
+Title: Zookeeper Intellectual Property (IP) Clearance Status
+
+ `-----8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;---- cut here-------8-&lt;----` 
+# Preamble {#premable}
+
+This is code for the zookeeper tool that was developed by Yahoo, which will be used and maintained with Hadoop to provide distributed coordination between servers. The tool was previously licensed under the Apache License 2.0 and has now been granted to the ASF.
+
+
+# Process {#process}
+
+
+1. IP Clearance processing must be executed either by an Officer or a Member of the ASF. _If you are not an Officer or a Member, please contact your project chair who will find an appropriate volunteer._ Incubator karma is also required. Please request karma from the incubator pmc if you do not have it.
+
+1. (Optional) _Commit an outline [form](#form-filling) , filling those parts which can be (at this stage)_ .
+
+1. A software grant must be provided to the ASF. This grant can either be done by the ASF Corporate CLA (via Schedule B) or the traditional License Agreement. Acceptable methods of sending the grant to the ASF includes:
+
+- snail-mail to the ASF office and/or ASF officer
+
+- FAXing to the ASF office and/or an ASF officer
+
+- Emailing the scanned document to secretary@apache.org _and_ legal-archive@apache.org.
+
+
+1. Receipt of the software grant form **must** be acknowledged by an Officer of the ASF by recording in the correct file ( _grants.txt_ for a License Grant or _cclas.txt_ for a Corporate CLA). In most normal circumstances, the officer should be the ASF Secretary, who must be provided a copy of the grant or CCLA in any case (if not originally sent or Emailed to him).
+
+1.  **Note:** the grant form **must** be acknowledged before continuing. If the source is referenced by checksum in the grant, commit the canonical tarball for the donated code into the incubator drop area together with a checksum and a detached signature. This will ensure that apache has a legal record of the grant.
+
+1. Complete and commit the [completed form](#form-filling) .
+
+1. Post a message to general@incubator prefixed [IP CLEARANCE] asking for clearance to be checked. Sign off is by lazy consensus so wait at least 72 hours for a -1.
+
+1. Post a [RESULT] to close the thread and let the project know that the code has been cleared for import.
+
+# Filling The Form {#form-filling}
+
+This file should not last long in place before it is moved to the successful incubation area. The sole purpose is to ensure that IP is cleared so that the codebase can be merged into the ASF SVN.
+
+
+For this file:
+
+
+
+- substitute the XYZ name with the real one
+
+- fill in the description
+
+- fill in the work items
+
+- remove this notice
+
+- set a proper "title" element for the html page
+
+When a work item is done, place the date in the supplied space.
+
+
+ _On the first edit of this file, please delete this notice._ 
+
+ `-----8-&lt;---- cut here -------8-&lt;---- cut here -------8-&lt;---- cut here-------8-&lt;----` 
+This is code for the zookeeper tool that was developed by Yahoo, which will be used and maintained with Hadoop to provide distributed coordination between servers. The tool was previously licensed under the Apache License 2.0 and has now been granted to the ASF.
+
+
+
+- Which PMC will be responsible for the code: Hadoop
+
+
+- Into which existing project/module: Hadoop/Zookeeper
+
+
+- Officer or member managing donation: Owen O'Malley
+
+ _Completed tasks are shown by the completion date (YYYY-MM-dd)._ 
+
+
+# Identify the codebase {#Identify+the+codebase}
+
+| date | item |
+|------|------|
+| 2008-07-15 | https://issues.apache.org/jira/secure/attachment/12383599/zk-dump.bz2 md5 = 0b293ed960cf7bc84af4825aa9b33b66 |
+
+## Copyright {#Copyright}
+
+| date | item |
+|------|------|
+| 2008-06-12 | Grant received by ASF |
+
+Identify name recorded for software grant: _the name of the grant as record in the grants.txt document so that the grant can be easily identified_ 
+
+
+## Verify distribution rights {#Verify+distribution+rights}
+
+Corporations and individuals holding existing distribution rights:
+
+
+
+- Yahoo!
+
+| date | item |
+|------|------|
+| 2008-07-15 | All active committers have a signed CLA on record. |
+| 2008-07-15 | Remind active committers that they are responsible for ensuring that a Corporate CLA is recorded if such is required to authorize their contributions under their individual CLA. |
+| 2008-07-15 | Check and make sure that for all items included with the distribution that is not under the Apache license, we have the right to combine with Apache-licensed code and redistribute. |
+| 2008-07-15 | Check and make sure that all items depended upon by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms. |
+
+Generally, the result of checking off these items will be a Software Grant, CLA, and Corporate CLA for ASF licensed code, which must have no dependencies upon items whose licenses that are incompatible with the Apache License.
+
+
+# Organizational acceptance of responsibility for the project {#Organizational+acceptance+of+responsibility+for+the+project}
+
+Related VOTEs: &lt;C6F0B17B-4ECC-419E-91B1-81470D83FA62@yahoo-inc.com&gt; on private@hadoop
+
