<!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>httpd-cli
 - 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='HTTPD+Project%2C+CLI+subproject%2C+mod_aspdotnet+Codebase+IP+Clearance+Status'><img src="../images/redarrow.gif" />HTTPD Project, CLI subproject, mod_aspdotnet Codebase IP Clearance
Status
</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise.
</p>
<p><span class="graduated">The httpd-CLI project graduated on 2004-12-16</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description
</h2>
<div class="section-content">
<p>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.
</p>
<p>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.
</p>
<p>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.
</p>
<p>The initial goal of the PMC is to release this ASP.NET implementation
of ASP.NET for he benefit of Apache httpd Win32 users.
</p>
<p>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.
</p>
<p>Once the CLI thunk is a seperate and distinct component, the next two
goals, may occur in parallel;
</p>
<ul>
        <li>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.
</li>
      </ul>
<ul>
        <li>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.
</li>
      </ul>
<p>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.
</p>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info
</h2>
<div class="section-content">
<ul>
        <li>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.
</li>
      </ul>
<ul>
        <li>The CLI sub-project's modules will be available under seperate
downloads, and are not envisioned to become part of a 'stock' httpd
distribution.
</li>
      </ul>
<h3 id='Detailed+References%3A'>Detailed References:
</h3>
<div class="section-content">
<table class="colortable" width="100%">
          <tr>
            <th>item
</th>
            <th>type
</th>
            <th>reference
</th>
          </tr>
          <tr>
            <td>Status file
</td>
            <td>www
</td>
            <td>http://incubator.apache.org/projects/httpd-cli.html
</td>
          </tr>
          <tr>
            <td>Website
</td>
            <td>www
</td>
            <td>To-Do; http://httpd.apache.org/cli/
</td>
          </tr>
          <tr>
            <td>Mailing list
</td>
            <td>dev
</td>
            <td>cli-dev@httpd.apache.org
</td>
          </tr>
          <tr>
            <td>Source code
</td>
            <td>SVN
</td>
            <td>/repos/asf/incubator/httpd/cli/trunk/
</td>
          </tr>
          <tr>
            <td>Mentor
</td>
            <td>wrowe
</td>
            <td>Will Rowe (CLA on file)
</td>
          </tr>
          <tr>
            <td>Committers
</td>
            <td>ridruejo
</td>
            <td>Daniel Lopez (CLA on file)
</td>
          </tr>
          <tr>
            <td>Committers
</td>
            <td>ianh
</td>
            <td>Ian Holsman (CLA on file)
</td>
          </tr>
          <tr>
            <td>Committers
</td>
            <td>jimjag
</td>
            <td>Jim Jagleski (CLA on file)
</td>
          </tr>
          <tr>
            <td>Committers
</td>
            <td>shughes
</td>
            <td>Sterling Hughes (CLA on file)
</td>
          </tr>
          <tr>
            <td>Committers
</td>
            <td>wrowe
</td>
            <td>Will Rowe (CLA on file)
</td>
          </tr>
          <tr>
            <td>Discussion Thread
</td>
            <td>mail
</td>
            <td>Message-Id: &lt;6.0.2.0.2.20040305114405.02b4db60@pop3.rowe-clan.net&gt;
</td>
          </tr>
        </table>
<p>
          <em>Completed tasks are shown by the completion date (YYYY-MM-dd).
</em>
        </p>
</div>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports
</h2>
<div class="section-content">
<ul>
        <li>19 July 2004
</li>
      </ul>
<p>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.
</p>
<p>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.
</p>
<p>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/).
</p>
<p>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.
</p>
<p>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.
</p>
<p>Will Rowe
</p>
<ul>
        <li>30 October 2004
</li>
      </ul>
<p>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.
</p>
<p>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.
</p>
<p>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.
</p>
<p>Will Rowe
</p>
<ul>
        <li>4 February 2005
</li>
      </ul>
<p>Graduation Report
</p>
<p>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.
</p>
<p>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.
</p>
<p>My appologies for taking so long to close the incubator pages, and
thank you to the incubation committee for helping promote this work.
</p>
<p>Will Rowe
</p>
</div>
        <h2 id='Incubation+work+items'><img src="../images/redarrow.gif" />Incubation work items
</h2>
<div class="section-content">
<h3 id='Project+Setup'>Project Setup
</h3>
<div class="section-content">
<h4 id='Identify+the+codebase'>Identify the codebase
</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date
</th>
              <th>item
</th>
            </tr>
            <tr>
              <td>2004-07-19
</td>
              <td>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.
</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>2004-02-19
</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>2004-02-26
</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>2004-07-19
</td>
              <td>Check that all active committers have a signed CLA on record.
</td>
            </tr>
            <tr>
              <td>2004-07-19
</td>
              <td>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.
</td>
            </tr>
            <tr>
              <td>2004-07-19
</td>
              <td>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.
</td>
            </tr>
            <tr>
              <td>2004-07-19
</td>
              <td>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.
</td>
            </tr>
          </table>
<p>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.
</p>
</div>
<h4 id='Organizational+acceptance+of+responsibility+for+the+project'>Organizational acceptance of responsibility for the project
</h4>
<div class="section-content">
<ul>
            <li>Has the receiving PMC voted to accept it?
</li>
          </ul>
<p>The Apache httpd project voted and it was adopted on 16 December,
2004.
</p>
</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>
