<!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">

      <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>
 
  </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>