<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" />
  <link rel="stylesheet" href="../style/style.css" type="text/css" />
        <title>Apache XML Beans C++ Incubation Status - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row">
<div class="span12">
  <a href="http://www.apache.org/"><img src="http://incubator.apache.org/images/asf_logo_wide_small.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="62%"/></a>
</div>
<div class="span4">
<a href="http://incubator.apache.org/"><img src="../images/egg-logo2.png" alt="Apache Incubator" border="0"/></a>
</div>
</div>
  <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  
  <div class="row">
   <div class="span4">
    <form action="http://www.google.com/search" method="get">
     <input value="incubator.apache.org" name="sitesearch" type="hidden"/>
     <input size="20" name="q" id="query" type="text" value="search..."
      onclick="if(this.value == 'search...') {this.value = ''}"/>
     <input name="Search" value="Go" type="submit"/>
    </form>
          <div class="menuheader">General</div>
    <menu compact="compact">
          <li><a href="../index.html">Welcome</a></li> 
          <li><a href="../incubation/Process_Description.html">Incubation Overview</a></li> 
          <li><a href="../incubation/Incubation_Policy.html">Incubation Policy</a></li> 
          <li><a href="../guides/index.html">Incubation Guides</a></li> 
          <li><a href="../incubation/Roles_and_Responsibilities.html">Roles and Responsibilities</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> 
          <li><a href="../whoweare.html">Who We Are</a></li> 
          <li><a href="../sitemap.html">Site Map</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects/index.html">Project List</a></li> 
          <li><a href="../clutch.html">Clutch Report</a></li> 
          <li><a href="../ip-clearance/index.html">IP Clearance</a></li> 
          <li><a href="../history/index.html">Incubator History</a></li> 
            </menu>
      <div class="menuheader">Entry Guides</div>
    <menu compact="compact">
          <li><a href="../guides/proposal.html">Proposal Guide</a></li> 
            </menu>
      <div class="menuheader">Podling Guides</div>
    <menu compact="compact">
          <li><a href="../guides/committer.html">Podling Committers</a></li> 
          <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> 
          <li><a href="../guides/mentor.html">Podling Mentor</a></li> 
          <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> 
          <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> 
          <li><a href="../guides/sites.html">Podling Websites</a></li> 
          <li><a href="../guides/graduation.html">Graduation</a></li> 
          <li><a href="../guides/retirement.html">Retirement</a></li> 
            </menu>
      <div class="menuheader">Other Guides</div>
    <menu compact="compact">
          <li><a href="../guides/participation.html">Participation</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="../guides/pmc.html">Incubator PMC (IPMC)</a></li> 
          <li><a href="../guides/chair.html">IPMC Chair</a></li> 
          <li><a href="../guides/lists.html">Mailing Lists</a></li> 
          <li><a href="../guides/website.html">Incubator Website</a></li> 
            </menu>
      <div class="menuheader">ASF</div>
    <menu compact="compact">
          <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> 
          <li><a href="http://www.apache.org/foundation/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
            </menu>
    <!-- start Ads Server -->
    <iframe src="http://www.apache.org/ads/buttonbar.html"
     style="border-width:0; float: left" frameborder="0" scrolling="no"
     width="135" height="265"></iframe>
    <!-- end Ads Server -->
   </div>
   
   <div class="span12">
            <h2 id='Apache+xmlbeanscxx+Incubation+Status'><img src="../images/redarrow.gif" />Apache XML Beans C++ Incubation Status</h2>
<div class="section-content">
<div class="section">
        <p>This page tracks the incubation status of the Apache XML Beans C++ project.</p>
        <p><span class="retired">The XMLBeans/C++ project retired in 2007-05</span></p>
      </div>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<div class="section">
        <p> 
        
          The Apache XML Beans C++ project will produce a C++ equivalent 
          to Apache's XMLBeans project for Java.


        </p>
        <p> 
          
          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++.


        </p>
      </div>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<div class="section">
        <ul>
          <li>

            2005-06-06 Project accepted by the Web services PMC.

          </li>
          <li>

            2005-05-15 Project proposed on general@incubator mailing.

          </li>
          <li>

            2005-02-09 xmlbeanscxx <a href="http://incubator.apache.org/xmlbeanscxx">project
            page</a> and <a href="http://incubator.apache.org/projects/xmlbeanscxx.html">status
            page</a> committed to subversion.

          </li>
        </ul>
      </div>
</div>
        <h2 id='Project+Info'><img src="../images/redarrow.gif" />Project Info</h2>
<div class="section-content">
<div class="section">
        <table>
          <tr>
            <th>item</th>
            <th>id</th>
            <th>reference</th>
          </tr>
          <tr>
            <td>Web site</td>
            <td>www</td>
            <td>
              <a href="http://incubator.apache.org/xmlbeanscxx/">
                http://incubator.apache.org/xmlbeanscxx/</a>
            </td>
          </tr>
          <tr>
            <td />
            <td>wiki</td>
            <td><a href="http://wiki.apache.org/xmlbeanscxx/">http://wiki.apache.org/xmlbeanscxx/</a></td>
          </tr>
          <tr>
            <td>Mailing lists</td>
            <td>dev</td>
            <td>
              <a href="mailto:cxx-dev@xmlbeans.apache.org">cxx-dev@xmlbeans.apache.org</a>
            </td>
          </tr>
          <tr>
            <td />
            <td>svn</td>
            <td>
              <a href="mailto:cxx-commits@xmlbeans.apache.org">
                cxx-commits@xmlbeans.apache.org</a>
            </td>
          </tr>
          <tr>
            <td />
            <td>ppmc</td>
            <td>
              <a href="mailto:">
                TBD</a>
            </td>
          </tr>
          <tr>
            <td>Moderators</td>
            <td>abrookes</td>
            <td>
              <a href="mailto:abrookes_at_apache.org">Allen Brookes</a>
            </td>
          </tr>
          <tr>
            <td />
            <td>dhaney</td>
            <td>
              <a href="mailto:dhaney_at_apache.org">David Haney</a>
            </td>
          </tr>
          <tr>
            <td>Bug tracking</td>
            <td>TBD</td>
            <td>
              <a href="">
                TBD</a>
            </td>
          </tr>
          <tr>
            <td>Source code</td>
            <td>svn</td>
            <td>
              <a href=" ">
                </a>
            </td>
          </tr>
          <tr>
            <td>Sponsor</td>
            <td />
            <td>
              <a href="mailto:pmc_at_incubator.apache.org">
                Incubator PMC</a>
            </td>
          </tr>
          <tr>
            <td>Mentors</td>
            <td>Cliff Schmidt</td>
            <td>
              <a href="mailto:">
                Cliff Schmidt</a>(See this <a href="http://www.mail-archive.com/general@incubator.apache.org/msg04836.html">post</a>.)

            </td>
          </tr>
          <tr>
            <td id="committers">Committers</td>
            <td>abrookes</td>
            <td><a href="mailto:abrookes_at_roguewave_dot_com">
                Allen Brookes</a></td>
          </tr>
          <tr>
            <td>hbuelow</td>
            <td>
              <a href="mailto:heidi.buelow_at_apache.org">
                Heidi Buelow</a>
            </td>
          </tr>
          <tr>
            <td />
            <td>dhaney</td>
            <td>
              <a href="mailto:dhaney_at_apache.org">
                David Haney</a>
            </td>
          </tr>
          <tr>
            <td />
            <td>myoder</td>
            <td>
              <a href="mailto:yoder_at_roguewave.com">Michael Yoder</a>
            </td>
          </tr>
          <tr>
            <td />
            <td>ttriemstra</td>
            <td>
              <a href="mailto:ttriemstra_at_apache_dot_org">Tim Triemstral</a>
            </td>
          </tr>
          <tr>
            <td />
            <td> </td>
            <td>
              <a href="mailto:tbd">TBD</a>
            </td>
          </tr>
        </table>
        <p>

          Committers  in  <em>italics</em>do  not  have  a  signed  <a href="http://incubator.apache.org/forms/ASF_Contributor_License_2_form.pdf">Contributor
          License Agreement</a> on file.

        </p>
      </div>
</div>
        <h2 id='Incubation+Status+Reports'><img src="../images/redarrow.gif" />Incubation Status Reports</h2>
<div class="section-content">
<div class="section">
        <table>
          <tr>
            <th>file</th>
            <th>note</th>
          </tr>
          <tr>
            <td>
              TBD
            </td>
            <td>TBD</td>
          </tr>
        </table>
      </div>
</div>
        <h2 id='Incubation+Work+Items'><img src="../images/redarrow.gif" />Incubation Work Items</h2>
<div class="section-content">
<p />
<h3 id='Project+Setup'>Project Setup</h3>
<div class="section-content">
<p />
<h4 id='Identify+the+project+to+be+incubated'>Identify the project to be incubated</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Make  sure that  the requested  project name  does not
                already        exist        and        check        <a href="http://www.nameprotect.com">NameProtect</a>to be
                sure that  the name is not already  trademarked for an
                existing software product.

              </td>
            </tr>
            <tr>
              <td>N/A</td>
              <td>

                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.

              </td>
            </tr>
            <tr>
              <td>N/A</td>
              <td>

                If request  from outside  Apache to enter  an existing
                Apache project,  then post  a message to  that project
                for them to decide on acceptance.

              </td>
            </tr>
            <tr>
              <td>N/A</td>
              <td>

                If request from anywhere  to become a stand-alone PMC,
                then assess the fit with the ASF, and create the lists
                and modules  under the incubator  address/module names
                if accepted.

              </td>
            </tr>
          </table>
</div>
<h4 id='Interim+responsibility'>Interim responsibility</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Identify all the Mentors for the incubation, by asking
                all that can be Mentors.

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>Subscribe all Mentors on the pmc and general lists.</td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Give all  Mentors access to all  incubator SVN modules
                (to be done by PMC chair).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>Tell Mentors to track progress in the status file.</td>
            </tr>
          </table>
</div>
<h4 id='Copyright'>Copyright</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Check  and make  sure  that the  papers that  transfer
                rights to the ASF  been received. It is only necessary
                to transfer rights for the package, the core code, and
                any new code produced by the project.

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Check  and make  sure that  the files  that  have been
                donated  have  been updated  to  reflect  the new  ASF
                copyright.

              </td>
            </tr>
          </table>
</div>
<h4 id='Verify+distribution+rights'>Verify distribution rights</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                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.

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Check and  make sure that all  source code distributed
                by  the project  is  covered  by one  or  more of  the
                following  approved licenses:  Apache,  BSD, Artistic,
                MIT/X, MIT/W3C, MPL 1.1, or something with essentially
                the same terms.

              </td>
            </tr>
          </table>
</div>
<h4 id='Establish+a+list+of+active+committers'>Establish a list of active committers</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Check  that  all active  committers  have submitted  a
                contributors   agreement   (see   the   list   of   <a href="#committers">committers</a>above     for     any
                exceptions).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>Add all active committers to the status page.</td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Ask   root   to   create   committers'   accounts   on
                cvs.apache.org                                      (<a href="http://issues.apache.org/jira/browse/INFRA-440">INFRA-440</a>).

              </td>
            </tr>
          </table>
</div>
<h4 id='Infrastructure'>Infrastructure</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Ask infrastructure to create source repository modules
                and     grant     the     committers     karma     (<a href="http://issues.apache.org/jira/browse/INFRA-441">INFRA-441</a>).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Ask infrastructure to set up and archive mailing lists
                (<a href="http://issues.apache.org/jira/browse/INFRA-339">INFRA-339</a>).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Decide about  and then ask infrastructure  to setup an
                issue           tracking           system          (<a href="http://issues.apache.org/jira/browse/INFRA-438">INFRA-438</a>).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>Migrate the project to our infrastructure.</td>
            </tr>
          </table>
</div>
<h4 id='Project-specific'>Project-specific</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Publish                      a                      <a href="http://incubator.apache.org/xmlbeanscxx/bugs.html">page</a>on
                how  to file  issues against  the project  and  how to
                submit                   patches                   (<a href="http://issues.apache.org/jira/browse/XMLBEANSCXX-9">XMLBEANSCXX-9</a>).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Improve                     the                     <a href="http://incubator.apache.org/xmlbeanscxx/">project
                page</a>(<a href="http://issues.apache.org/jira/browse/XMLBEANSCXX-6">XMLBEANSCXX-6</a>).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Make                       the                      <a href="http://svn.apache.org/repos/asf/incubator/xmlbeanscxx/trunk/doc/stdlibref/">Class
                Reference</a>and                                     <a href="http://svn.apache.org/repos/asf/incubator/xmlbeanscxx/trunk/doc/stdlibug/">Users
                Guide</a>available online,  from the project  page (<a href="http://issues.apache.org/jira/browse/XMLBEANSCXX-12">XMLBEANSCXX-12</a>).

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Make a tarball of stable project sources available for
                download from the project site.

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Document  the  design  and development  practices  and
                publish them on the project site.

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Put together a list of  things to do and publish it on
                the project site.

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Check      in       the      test      driver.

              </td>
            </tr>
            <tr>
              <td>TBD</td>
              <td>

                Check    in    the     project    test    suite.

              </td>
            </tr>
          </table>
</div>
</div>
<h3 id='Incubation'>Incubation</h3>
<div class="section-content">
<p>

          These action items  have to be checked for  during the whole
          incubation process.

        </p>
<p>
          <em>

            These  items   are  not  to  be  signed   as  done  during
            incubation, as they may change during incubation.

          </em>
          <em>

            They are  to be  looked into and  described in  the status
            reports  and  completed  in  the  request  for  incubation
            signoff.

          </em>
        </p>
<h4 id='Collaborative+Development'>Collaborative Development</h4>
<div class="section-content">
<ul>
            <li>

              Have  all  of   the  active  long-term  volunteers  been
              identified  and   acknowledged  as  committers   on  the
              project?

            </li>
            <li>

              Are  there three  or more  independent  committers? (The
              legal definition of independent  is long and boring, but
              basically it means that there is no binding relationship
              between the individuals, such as a shared employer, that
              is capable of overriding their free will as individuals,
              directly or indirectly.)

            </li>
            <li>

              Are  project  decisions  being  made in  public  by  the
              committers?

            </li>
            <li>

              Are the decision-making  guidelines published and agreed
              to by all of the committers?

            </li>
          </ul>
</div>
<h4 id='Licensing+awareness'>Licensing awareness</h4>
<div class="section-content">
<ul>
            <li>

              Are all licensing,  trademark, credit issues being taken
              care of and acknowleged by all committers?

            </li>
          </ul>
</div>
<h4 id='Project-specific-N10439'>Project-specific</h4>
<div class="section-content">
<p>
            <em>No project-specific tasks.</em>
          </p>
</div>
</div>
<h3 id='Exit'>Exit</h3>
<div class="section-content">
<p>
          <em>Things to check for before voting the project out.</em>
        </p>
<h4 id='Organizational+acceptance+of+responsibility+for+the+project'>
            Organizational acceptance of responsibility for the project
          </h4>
<div class="section-content">
<ul>
            <li>

              If graduating to  an existing PMC, has the  PMC voted to
              accept it?

            </li>
            <li>

              If  graduating to  a new  PMC,  has the  board voted  to
              accept it?

            </li>
          </ul>
</div>
<h4 id='Incubator+sign-off'>Incubator sign-off</h4>
<div class="section-content">
<ul>
            <li>

              Has   the  Incubator  decided   that  the   project  has
              accomplished all of the above tasks?

            </li>
          </ul>
</div>
</div>
</div>
       </div>
   </div>
  
   <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span16 footer">
     Copyright &#169; 2009-2016 The Apache Software Foundation<br />
     Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
     Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
     
     
    </div>
  </div>
 </div> 
 </body>
</html>
