<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Home page of The Apache Software Foundation">
  <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
  <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
  <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
  <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
  <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
  <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
  <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
  <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
  <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
  <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
  <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
  <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
  <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
  <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
  <link rel="manifest" href="/favicons/manifest.json">
  <link rel="shortcut icon" href="/favicons/favicon.ico">
  <meta name="msapplication-TileColor" content="#603cba">
  <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
  <meta name="msapplication-config" content="/favicons/browserconfig.xml">
  <meta name="theme-color" content="#282661">

  <title>The Apache Software Foundation's "Apache Way" continues to gain momentum, recognition and influence on the future of open source technologies.</title>
  <link href="/css/Montserrat-300-600.css" rel="stylesheet">
  <link href="/css/min.bootstrap.css" rel="stylesheet">
  <link href="/css/styles.css" rel="stylesheet">
  <style>
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}  </style>

<!-- https://www.apache.org/licenses/LICENSE-2.0 -->
</head>

<body >
  <!-- Navigation -->
  <header>
	<div id="skiptocontent">
		<a href="#maincontent">Skip to Main Content</a>
	</div>
    <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
      <div class="container">
        <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <div class="collapse navbar-collapse" id="mainnav-collapse">
          <ul class="nav navbar-nav navbar-justified">
            <li><a href="/index.html#news">News</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation">Overview</a></li>
                <li><a href="/foundation/how-it-works.html">Process</a></li>
                <li><a href="/foundation/governance/">Governance</a></li>
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="/foundation/governance/members.html">Membership</a></li>
                <li><a href="https://community.apache.org/">Community</a></li>
                <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/foundation/glossary.html">Glossary</a></li>
				  <li><a href="/apache-name">About Our Name</a></li>
                <li><a href="/foundation/preFAQ.html">FAQ</a></li>
                <li><a href="/foundation/contributing.html">Support Apache</a></li>
                <li><a href="/press/">Media/Analysts</a></li>
                <li><a href="/foundation/contact.html">Contact</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation/contributing.html">Donate Now</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li>
                <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li>
                <li><a href="https://smile.amazon.com/gp/chpf/homepage/ref=smi_se_scyc_srch_stsr?q=apache+software+foundation&orig=%2F">Shop smile.amazon.com</a></li>
                <li><a href="/foundation/sponsorship.html">ASF Sponsorship</a></li>
                <li><a href="/foundation/thanks#targeted-sponsors">Targeted Sponsorship</a></li>
                <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">The Apache Way&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="https://s.apache.org/GhnI">Sustainable Open Source</a></li>
                <li><a href="/foundation/how-it-works.html">How it Works</a></li>
                <li><a href="/foundation/how-it-works.html#meritocracy">Merit</a></li>
                <li><a href="https://blogs.apache.org/foundation/category/SuccessAtApache">Success at Apache</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">Join Us&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://community.apache.org/gettingStarted/101.html">Getting Started</a></li>
                <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                <li><a href="https://www.apachecon.com/">ApacheCon</a></li>
                <li><a href="http://community.apache.org/calendars/">Community Events</a></li>
                <li><a href="/travel/">Travel Assistance</a></li>
                <li><a href="https://community.apache.org/gsoc.html">Summer of Code</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="https://community.apache.org/contributors/etiquette">Etiquette</a></li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/index.html#projects-list">Project List</a></li>
                    <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
                    <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
                    <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
                    <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
                    <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
                    <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
                    <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
                    <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="/foundation/marks/">Brand Management</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
                    <li><a href="/foundation/members.html">Members</a></li>
                    <li><a href="https://community.apache.org/contributors/">Committers</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Officers  &amp; Project VPs</a></li>
                    <li><a href="https://community.zones.apache.org/map.html">Location Map</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://people.apache.org/">Committer Directory</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="https://community.apache.org/about/">Community Development</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://community.apache.org/">Get Involved</a></li>
                    <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
                    <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
                    <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/dev/infrastructure.html">Infra overview</a></li>
                    <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
                    <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
                    <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
                    <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
                    <li><a href="/foundation/marks/list/">Trademarks</a></li>
					<li><a href="/licenses/exports/">Exports</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
                    <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
                    <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
                    <li><a href="/foundation/contributing.html">Individual Donations</a></li>
                    <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
                  </ul>
                </li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Downloads&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://downloads.apache.org/">Distribution</a></li>
                <li><a href="https://projects.apache.org/releases.html">Releases</a></li>
                <li><a href="https://status.apache.org/">Infrastructure Status</a></li>
                <li><a href="/uptime/">Infrastructure Statistics</a></li>
              </ul>
            </li>
            <li class="dropdown hidden-xs">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"><span class="glyphicon glyphicon-search"
                  aria-hidden="true"></span><span class="sr-only">Search</span></a>
              <ul class="dropdown-menu search-form" role="search">
                <li>
                  <div class="input-group" style="width: 100%; padding: 0 5px;">
                    <script async src="https://cse.google.com/cse.js?cx=cb41d2753d228d8b7"></script>
                    <div class="gcse-search"></div>
                  </div>
                </li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </header>
  <!-- / Navigation -->
  <header id="main-header" class="container">
    <div class="sideImg">
          <a class="visible-home" href="https://events.apache.org/x/current-event.html">
            <img class="img-responsive" style="width: 125px;" src="/events/current-event-125x125.png" alt="Apache Events"/>
<!-- STALE: <img class="img-responsive" style="width: 125px;" src="https://www.apachecon.com/event-images/default-square-light.png" alt="ApacheCon 2021 Coming Soon!" /> -->
          </a>
      <a class="hidden-home" href="/"><img class="img-responsive" src="/img/asf-estd-1999-logo.jpg" alt="The Apache Software Foundation"></a>
    </div>
    <div class="main">
      <img class="img-responsive center-block visible-home" src="/img/asf-estd-1999-logo.jpg" alt="Apache 20th Anniversary Logo">
      <h2 class="text-center">Community-led development "The&nbsp;Apache&nbsp;Way"</h2>
      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
    <div class="sideImg">
      <a href="/foundation/contributing.html"><img class="img-responsive" src="/img/support-apache.jpg" alt="Apache Support Logo" /></a>
    </div>
  </header>
  <main id="maincontent">
<div class="container">    <p>( <a href="pr_2008_06_17.txt">plain text</a> )</p>
<p>FOREST HILL MD &ndash; 17 June 2008 &ndash; The Apache Software Foundation (ASF)
&ndash; stewards, incubators, and developers of leading Open Source projects
&ndash; today announced that both the organization's community and its
meritocratic process (known as "the Apache Way") continues to gain
recognition as one of the most influential, prominent, and innovative
leaders in Open Source.</p>
<p>A midyear review of the initiatives underway at the all-volunteer
Foundation showed that not only does the Apache HTTP Server continue to be
the world's most popular Web server software, but numerous ASF Projects
lead the way in Open Source technology, and the ASF community is also
playing a vital role in championing the collaborative development of
consensus-driven, enterprise-grade solutions.</p>
<p>"The demand for quality Open Source products continues to grow," said ASF
Chairman Jim Jagielski. "A significant number of organizations depend on
Apache-developed solutions. As the landscape continues to evolve, through
our thought leadership, well-established process, and ability to spearhead
new projects while maintaining an active, healthy community, we're poised
to successfully deliver software that meets the demands of the marketplace
and helps our users achieve their business goals."</p>
<p>The <a href="/">newly-redesigned ASF Website</a> reflects how the
Apache Way is realized through its new tagline, "Meritocracy in Action":
more than 1,500 ASF Committers and countless contributors and users
collaborate to the development of Apache-related activities across the Open
Source landscape. The ASF are responsible for millions of lines of code and
roughly one dozen servers comprising its infrastructure; nearly 500
community-driven modules have been developed to extend functionality of the
Apache HTTP Server alone.</p>
<h3 id="2008-achievements-to-date">2008 ACHIEVEMENTS TO DATE<a class="headerlink" href="#2008-achievements-to-date" title="Permalink">&para;</a></h3>
<p><strong>Board</strong> : The ASF recently held its Members' Meeting that included the
election of the following Members to the ASF Board of Directors: Bertrand
Delacretaz, Justin Erenkrantz, J. Aaron Farr, Jim Jagielski, Geir Magnusson
Jr., William Rowe Jr., Sam Ruby, Henning Schmiedehausen, and Greg Stein.</p>
<p>The annually-elected ASF Board oversees the management of the Foundation;
in turn, the Board appoints a set of officers to manage the day-to-day
operations and oversee ASF Projects and initiatives.</p>
<p><strong>Membership</strong> : The founding 21 individuals who oversaw the development of
the Apache HTTP Server formed the Foundation's core membership. The group
grew with the addition of "Committers": developers who contributed code,
patches, or documentation, and were subsequently granted access by the
Membership to: 1) "commit" or "write" directly to the code repository; 2)
to vote on community-related decisions; and 3) propose an active user for
Committership. Committers who demonstrate merit in the Foundation's growth,
evolution, and progress are nominated for ASF Membership by existing
members.</p>
<p>The ASF as a whole, including its Board, Officers, Members, and Committers,
is composed of individuals participating solely on behalf of the
Foundation. Whilst corporations are unable to qualify for Membership, those
contributing to ASF projects who are employed by corporate entities are
able to participate in ASF activities during "work time", but are expected
to act as individuals, independent of their employer, unless stated
otherwise under very specific circumstances. A key strength of the ASF is
that affiliations do not cloud personal contributions &ndash; a prescript that
applies to all Members.</p>
<p>The recent ASF Membership vote closed with the election of 17 new Members,
totaling 276.</p>
<p><strong>Sponsorship</strong> : The ASF is a private, 501(c)(3) non-profit charitable
organization, funded solely through tax-deductible contributions from
corporations, foundations, and individuals. To help offset day-to-day
operating expenses, The ASF created its Sponsorship Program in late 2006.
The Foundation welcomed two new sponsors:</p>
<ul>
<li>
<p>Silver Level: IONA Technologies (NASDAQ: IONA)</p>
</li>
<li>
<p>Bronze Level: Matt Mullenweg</p>
</li>
</ul>
<p>&hellip; to the following organizations and individuals whose generous
contributions continue to help advance the work of The ASF:</p>
<ul>
<li>
<p>Platinum Level: Google (NASDAQ: GOOG), Yahoo! (NASDAQ: YHOO)</p>
</li>
<li>
<p>Gold Level: HP (NYSE: HPQ)</p>
</li>
<li>
<p>Silver Level: Covalent</p>
</li>
<li>
<p>Bronze Level: AirPlus International, Tetsuya Kitahata, and Two Sigma
Investments</p>
</li>
</ul>
<p><strong>ApacheCon</strong> : Now in its tenth year, the official user and developer
conference, trainings, and expo of The Apache Software Foundation continues
to explore some of the hottest topics in Open Source. The continued
interest and increased adoption of Open Source technologies in Europe is
reflected in the success of ApacheCon Europe held in Amsterdam in April,
which boasted an increase in participation by 40%. ApacheCon US will be
held in New Orleans on 3-7 November 2008, and will feature several
enhancements to bring the Apache community of developers and users
together, including expanded tracks, more Fast Feather presentations, the
OFBiz Symposium (a dedicated "track" to the Apache Open For Business
Project's suite of enterprise applications), as well as CampApache (a
one-day, ad-hoc gathering with discussions, demos and interaction from
participants to share and learn in an open environment).</p>
<p><strong>Community Outreach</strong> : For the third consecutive year, the ASF is
participating in the Google Summer of Code. As part of its ongoing
mentorship on "the Apache Way", 32 ASF representatives have paired up with
student developers from Algeria, Austria, Brazil, China, Croatia, France,
India, Hungary, the Netherlands, Norway, Poland, Russia, Sri Lanka, the
Ukraine, and the United States for the opportunity to collaborate on 78
different tasks using Apache Projects such as Axis2, Cayenne, Derby,
Harmony, ODE, Roller, Sling, Solr, Tuscany, and Xerces2-J, as well as
several projects in the Apache Incubator.</p>
<p>In addition, the Foundation had participated in the Google Highly Open
Participation (GHOP) Contest, which concluded in February. This initiative
tasked nearly 400 pre-university students worldwide to produce a variety of
Open Source code, documentation, training materials and user experience
research for ten participating organizations, including the ASF. Spencer
Davis, GHOP Grand Prize winner chosen from the ASF's student contestants,
will be joined by Bertrand Delacretaz, GHOP project administrator for the
ASF, at the competition&rsquo;s awards ceremony in July.</p>
<p><strong>Project Achievements</strong> : With just two Projects (Apache HTTP Server, and
the ApacheCon Conference Planning committee) at its inception, The ASF
today comprises 62 Top-Level Projects (TLPs), 24 projects under Incubation
(comprising both the codebase and its community, known as Podlings), and 20
active initiatives registered in the Apache Labs.</p>
<p>Each ASF Project is managed by a self-selected team of technical experts
who actively contribute to the project according to the guidelines for
collaborative development best suited to that particular project. The
day-to-day activity of each TLP (and any sub-projects) is overseen by
Project Management Committees (PMCs).</p>
<p>For twelve years running, the Apache HTTP Server remains the #1 Web server,
powering more than 75 million Websites across the Internet, according to
the Netcraft May 2008 Web Server Survey. In addition, the 1 June Web Server
Survey by Security Space shows that Apache continues to hold 74% market
penetration across all Web Server domains.</p>
<p>Both Incubating- and sub-projects continue to go from strength to strength.
The following initiatives have graduated to ASF Top-Level Projects (TLPs):</p>
<ul>
<li>
<p>Apache Hadoop (sub-project of Apache Lucene; PMC Chair: Owen O'Malley)
&mdash; January 2008</p>
</li>
<li>
<p>Apache Continuum (sub-project of Apache Maven; PMC Chair: Emmanuel
Venisse) &mdash; February 2008</p>
</li>
<li>
<p>Apache Archiva (sub-project of Apache Maven; PMC Chair: Maria Odea Ching)
&mdash; March 2008</p>
</li>
<li>
<p>Apache CXF (from the Apache Incubator; PMC Chair: Daniel Kulp) &mdash; April
2008</p>
</li>
<li>
<p>Apache Tuscany (sub-project of Apache Web Services; PMC Chair: Ant Elder)
&mdash; May 2008</p>
</li>
</ul>
<p>Additional Project announcements include the release of: Apache HTTP Server
2.2.9; Apache Cocoon 2.2.0; Apache Portable Runtime 1.3.0; Apache Lucene
Java 2.3.0; Apache Harmony 5.0M6; Apache Lenya 2.0; Apache CXF 2.1; Apache
Wicket 1.3; Apache Jackrabbit 1.4; Apache Batik 1.7; Apache Axis2/C 1.3.0;
Apache QPid 2.1.</p>
<p><strong>Recognition and Awards</strong> : The ASF continues to garner ongoing
recognition by editors, technical experts, writers, analysts, and other
industry influencers. The "buzz" generated by many of The ASF's Projects
are testament to its innovation and leadership within the Open Source
community. Recent awards include:</p>
<ul>
<li>
<p>Java Community Process (JCP) Member of the Year The ASF won its third
Member of the Year prize awarded by the JCP Program Management Office. Geir
Magnusson, Vice President of the ASF JCP committee and JCP Executive
Committee member, accepted this prestigious award on behalf of the ASF at
the JCP Spec Lead Dinner on 6 May. "The ASF has been active and engaged
since the beginning, with wide participation at both the EC level and in
projects, as members of Expert Groups," said Magnusson in his acceptance
speech.</p>
</li>
<li>
<p>InfoWorld BOSSIE Award: Apache SpamAssassin won the InfoWorld "Best Of
Open Source Software" BOSSIE Award, as the winner in the anti-spam
category. According to InfoWorld "Our Bossie winner for anti-spam is the
ubiquitous SpamAssassin. Powerful, extensible, and effective, SpamAssassin
uses a trainable neural network engine to identify spam and minimize false
positives, in addition to the classic techniques of blacklisting and
Bayesian filtering."</p>
</li>
<li>
<p>Eclipse Community Award: Apache Directory Studio Apache Directory Studio
finishes as runner-up for Best Open Source RCP Application at the Eclipse
Community Awards announced on 18 March at EclipseCon. Earlier that week,
the Apache Directory team announced the second release candidate for the
version 1.1.0 Apache Directory Studio, its Eclipse based LDAP Browser and
Directory client.</p>
</li>
<li>
<p>JAX Innovation Award: Apache Sling Barely six months under incubation,
Apache Sling &ndash; the Web framework that uses a Java Content Repository,
such as Apache Jackrabbit, to store and manage content &ndash; won a JAX
Innovation Award on 25 April. The award was accepted on behalf of the
project by Committers Carsten Ziegeler and Felix Meschberger, who were
excited to spread the word that Apache Sling is "bringing back the fun (to
Java development)!"</p>
</li>
<li>
<p>SD Times 100: Influencers; Application Servers The ASF topped the
Software Development (SD) Times 100 list of Industry Influencers for the
third year running. The sixth edition of these coveted awards was published
on 2 June in recognition of the organizations or individuals that have
demonstrated innovation and leadership in their markets. "Apache stayed on
top of its game, continuing to offer enterprise-class sever software at a
price not even Microsoft could match," stated the SD Times, bestowing
Apache its third server award, highlighting Apache Geronimo powering
proprietary server solutions, and Apache Tomcat as the most popular Java
application server.</p>
</li>
</ul>
<p>Users and developers interested in becoming involved with any of the above
initiatives are invited to download software, join mailing lists, submit
patches/bug fixes/documentation, and offer feedback through the Projects
listed on the ASF Website.</p>
<h3 id="about-the-apache-software-foundation">ABOUT THE APACHE SOFTWARE FOUNDATION<a class="headerlink" href="#about-the-apache-software-foundation" title="Permalink">&para;</a></h3>
<p>Established in 1999, The Apache Software Foundation provides
organizational, legal, and financial support for a broad range of Open
Source software projects, including Apache HTTP Server &mdash; the world's most
popular Web server software for more than a decade. The Foundation provides
an established framework for intellectual property and financial
contributions that simultaneously limits contributors' potential legal
exposure. Through a collaborative and meritocratic development process,
Apache projects deliver enterprise-grade, freely available software
products that attract large communities of users. The pragmatic Apache
License makes it easy for all users, commercial and individual, to deploy
Apache products. For more information, please see
<a href="/">http://www.apache.org/</a></p>

</div>  </main>

  <!-- Footer -->
  <footer class="bg-primary">
    <div class="container">
      <div class="row">
        <br />
        <div class="col-sm-1">

        </div>
        <div class="col-sm-2">
          <h5 class="white">Community</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="http://community.apache.org/">Overview</a></li>
            <li><a href="/foundation/conferences.html">Conferences</a></li>
            <li><a href="http://community.apache.org/gsoc.html">Summer of Code</a></li>
            <li><a href="http://community.apache.org/newcomers/">Getting Started</a></li>
            <li><a href="/foundation/how-it-works.html">The Apache Way</a></li>
            <li><a href="/travel/">Travel Assistance</a></li>
            <li><a href="/foundation/getinvolved.html">Get Involved</a></li>
            <li><a href="/foundation/policies/conduct.html">Code of Conduct</a></li>
            <li><a href="http://community.apache.org/newbiefaq.html">Community FAQ</a></li>
            <li><a href="/memorials/">Memorials</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Innovation</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="http://incubator.apache.org/">Incubator</a></li>
            <li><a href="http://labs.apache.org/">Labs</a></li>
            <li><a href="/licenses/">Licensing</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/foundation/marks/">Trademark Policy</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Tech Operations</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/dev/">Developer Information</a></li>
            <li><a href="/dev/infrastructure.html">Infrastructure</a></li>
            <li><a href="/security/">Security</a></li>
            <li><a href="http://status.apache.org">Status</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Press</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/press/">Overview</a></li>
            <li><a href="https://blogs.apache.org/">ASF News</a></li>
            <li><a href="https://blogs.apache.org/foundation/">Announcements</a></li>
            <li><a href="https://twitter.com/TheASF">Twitter Feed</a></li>
            <li><a href="/press/#contact">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Legal</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/legal/">Legal Affairs</a></li>
            <li><a href="/legal/dmca.html">DMCA</a></li>
            <li><a href="/licenses/">Licensing</a></li>
            <li><a href="/foundation/marks/">Trademark Policy</a></li>
            <li><a href="/foundation/records/">Public Records</a></li>
            <li><a href="/foundation/policies/privacy.html">Privacy Policy</a></li>
            <li><a href="/licenses/exports/">Export Information</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-1">
        </div>

      </div>
      <hr class="col-lg-12 hr-white" />
      <div class="row">
        <div class="col-lg-12">
          <p class="text-center">Copyright &#169; 2023 The Apache Software Foundation, Licensed under the <a class="white" href="/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
          <p class="text-center">Apache and the Apache feather logo are trademarks of The Apache Software Foundation. </p>
        </div>
      </div>
    </div>

  </footer>

  <!-- / Footer -->

  <script src="/js/jquery-2.1.1.min.js"></script>
  <script src="/js/bootstrap.js"></script>
  <script src="/js/slideshow.js"></script>
  <script>
    (function($){
    $(document).ready(function(){
    $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
    event.preventDefault();
    event.stopPropagation();
    $(this).parent().siblings().removeClass('open');
    $(this).parent().toggleClass('open');
    console.log('WOrked');
    });
    });
    })(jQuery);
  </script>
</body>
</html>