<!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>ASF Highlights: 1999-2019</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>

  <!-- pagefind search -->
  <link href="/_pagefind/pagefind-ui.css" rel="stylesheet">
  <script src="/_pagefind/pagefind-ui.js" type="text/javascript"></script>
  <script>
    window.addEventListener('DOMContentLoaded', (event) => {
        new PagefindUI({ element: "#pagefind-search" });
    });
  </script>

<!-- 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="/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="https://tac.apache.org">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 id="pagefind-search" class="input-group" style="width: 100%; padding: 0 5px;"></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">    <h1 id="asf-highlights-1999-2019">ASF Highlights: 1999-2019<a class="headerlink" href="#asf-highlights-1999-2019" title="Permalink">&para;</a></h1>
<p>Celebrating over two decades of open source leadership promoting Community Over Code.</p>
<div id="toc"><ul><li><a class="toc-href" href="#early" title="Highlights: pre-1999">Highlights: pre-1999</a></li><li><a class="toc-href" href="#1999" title="Highlights: 1999">Highlights: 1999</a></li><li><a class="toc-href" href="#2000" title="Highlights: 2000">Highlights: 2000</a></li><li><a class="toc-href" href="#2001" title="Highlights: 2001">Highlights: 2001</a></li><li><a class="toc-href" href="#2002" title="Highlights: 2002">Highlights: 2002</a></li><li><a class="toc-href" href="#2003" title="Highlights: 2003">Highlights: 2003</a></li><li><a class="toc-href" href="#2004" title="Highlights: 2004">Highlights: 2004</a></li><li><a class="toc-href" href="#2005" title="Highlights: 2005">Highlights: 2005</a></li><li><a class="toc-href" href="#2006" title="Highlights: 2006">Highlights: 2006</a></li><li><a class="toc-href" href="#2007" title="Highlights: 2007">Highlights: 2007</a></li><li><a class="toc-href" href="#2008" title="Highlights: 2008">Highlights: 2008</a></li><li><a class="toc-href" href="#2009" title="Highlights: 2009">Highlights: 2009</a></li><li><a class="toc-href" href="#2010" title="Highlights: 2010">Highlights: 2010</a></li><li><a class="toc-href" href="#2011" title="Highlights: 2011">Highlights: 2011</a></li><li><a class="toc-href" href="#2012" title="Highlights: 2012">Highlights: 2012</a></li><li><a class="toc-href" href="#2013" title="Highlights: 2013">Highlights: 2013</a></li><li><a class="toc-href" href="#2014" title="Highlights: 2014">Highlights: 2014</a></li><li><a class="toc-href" href="#2015" title="Highlights: 2015">Highlights: 2015</a></li><li><a class="toc-href" href="#2016" title="Highlights: 2016">Highlights: 2016</a></li><li><a class="toc-href" href="#2017" title="Highlights: 2017">Highlights: 2017</a></li><li><a class="toc-href" href="#2018" title="Highlights: 2018">Highlights: 2018</a></li><li><a class="toc-href" href="#2019" title="Highlights: 2019">Highlights: 2019</a></li><li><a class="toc-href" href="#learnmore" title="Learn More">Learn More</a></li><li><a class="toc-href" href="#contact" title="Contact Us">Contact Us</a></li></ul></div>
<h3 id="early">Highlights: pre-1999<a class="headerlink" href="#early" title="Permalink">&para;</a></h3>
<p>Brian Behlendorf started collecting patches to be applied to the
last version of the NCSA http server. The Apache Group, consisting of 8
individuals, traded patches on a mailing list set up for the purpose. In
<strong>April of 1995</strong> the first public release of Apache (version 0.6.2)
came out. Apache 1.0 released on <strong>December 1, 1995</strong>, and within a year surpassed
NCSA as the most-used web server.</p>
<h3 id="1999">Highlights: 1999<a class="headerlink" href="#1999" title="Permalink">&para;</a></h3>
<p>The ASF formally incorporates as a Delaware-based 501(c)(3)
non-profit corporation from The Apache Group on 1 June. Original
directors are: Brian Behlendorf (President), Ken Coar (VP Conferences),
Roy T. Fielding (Chairman), Ben Hyde (VP Apache HTTP Server Project),
Jim Jagielski (Secretary and EVP), Ben Laurie, Sameer Parekh, Randy
Terbush (Treasurer), and Dirk-Willem van Gulik. New Apache Jakarta
and XML Projects join the Apache HTTP Server Project. Board Committees on
ASF Conferences, Licenses, and Security are formed. Discussions
about ASF's role as an Open Source incubator address fostering new
technologies such as Cocoon. The ASF receives numerous industry awards,
including the ACM Software System Award, the Datamation Product of
the Year, and LinuxWorld Editor's Award. ASF is listed in the Industry
Standard's "100 Companies That Matter" and included in the
ServerWatch Hall of Fame.</p>
<h3 id="2000">Highlights: 2000<a class="headerlink" href="#2000" title="Permalink">&para;</a></h3>
<p>Perl-Apache Project, as well as Apache PHP, Apache/TCL Project, and Apache
Portable Runtime Project are established. Apache Struts, Batik, FOP,
and Ant undergo "incubation". The ASF draws record attendance at the
second ApacheCon in Orlando (the first-ever conference was held in
San Francisco in 1998), and launches its first European event in London
later that year.</p>
<h3 id="2001">Highlights: 2001<a class="headerlink" href="#2001" title="Permalink">&para;</a></h3>
<p>Apache Avalon, Commons, and Jetspeed/Portals undergo "incubation". Work
begins on next version of the Apache License. The fourth ApacheCon
is held in Santa Clara, where the ASF maxim of "Community Over Code" is
widespread and collaborators meet in person for the very first time.
The ASF receives the Internet Service Providers Association's
Internet Industry Awards for "Best Software Supplier" Apache XML's Xalan-Java
1.2.2 is a finalist in the Best Java-XML Application category in the
JavaWorld Editors' Choice Awards.</p>
<h3 id="2002">Highlights: 2002<a class="headerlink" href="#2002" title="Permalink">&para;</a></h3>
<p>Participation in The ASF booms; its process for community and collaborative
development becomes known as "the Apache Way". New Board is formed:
Greg Stein elected Chairman, Dirk-Willem van Gulik as President,
Randy Terbush as Treasurer (later replaced that year by Chuck Murko), and Jim
Jagielski as Executive Vice President/Secretary. Apache Jakarta
launches sub-project BSF; the Apache Incubator Project is born: new
projects include Apache Ant, Avalon, DB, Forrest, HC, POI, and TCL.
Apache HTTP Server and Portable Runtime Project Management
Committees are reestablished. New Board Committees on Infrastructure as well as
Fundraising are formed. The ASF participates in the Java Community
Process. The fifth ApacheCon takes place in Las Vegas. The first community-driven
Apache Cocoon GetTogether is held.</p>
<h3 id="2003">Highlights: 2003<a class="headerlink" href="#2003" title="Permalink">&para;</a></h3>
<p>"Web 2.0" comes to the ASF; the Apache Web Services Project is formed.
New projects in the Apache Incubator include Directory, Geronimo, Gump,
James, Logging Services, Maven, Pluto, SpamAssassin, Tapestry, and XML
Beans. Perl-Apache Project is renamed to the Apache Perl Project,
and Cocoon becomes a Top Level Project. The sixth ApacheCon is held in Las
Vegas, featuring an expo exchange with COMDEX. The Apache HTTP
Server wins Best Server Software by Linux Format; Apache Ant wins Software
Development Magazine Jolt Product Excellence and Productivity Award,
the Java Pro Readers' Choice Award for Most Valuable Java Deployment
Technology, as well as the JavaWorld Editors' Choice Award for "Most
Useful Java Community-Developed Technology". JavaWorld also awards
Apache Xerces-J Editors' Choice for "Best Java XML Tool".
SpamAssassin wins the OSDir Editor's Choice Award. The Apache License v.1.2 is
released; all products of the Foundation are required to be
released under the new license.</p>
<h3 id="2004">Highlights: 2004<a class="headerlink" href="#2004" title="Permalink">&para;</a></h3>
<p>ASF Board members are re-elected: Greg Stein as Chairman, Dirk-Willem
van Gulik as President, Chuck Murko as Treasurer, and Jim Jagielski as
Executive Vice President/Secretary. The stable Apache License v.2.0
is released, and the ASF Contributor License Agreement (CLA) is expanded
to accommodate corporate donations. New Apache projects in the
Incubator include Beehive, Excalibur, Forrest, Gump, Hivemind,
iBatis, Lenya, myFaces, Portals, SpamAssassin, Struts, wsrp4J (Portals
sub-project), Xalan, XMLBeans, and XML Graphics. The Apache Commons
project is terminated, as well as the Project Management Committee
for Avalon. A New Public Relations Committee is established, and The ASF
issues a formal response regarding alleged JBoss IP infringement in
Geronimo. The PHP project amicably separates from The ASF, granting
all rights and responsibilities pertaining to its codebases to the PHP
Group. ApacheCon returns to Las Vegas for its seventh conference.
Apache Ant wins the Java Developer's Journal "Editors Choice Award".</p>
<h3 id="2005">Highlights: 2005<a class="headerlink" href="#2005" title="Permalink">&para;</a></h3>
<p>The ASF continues to be the community of choice to spearhead new
innovations through its Incubator. Numerous projects in development
include activeMQ, Apollo, Bridges, Continuum, Derby, Directory,
Felix, Harmony, Roller, stdcxx, Synapse, and Xerces; Apache Lucene graduates
as a Top Level Project. ApacheCon returns to Europe with the eighth
conference held in Stuttgart, Germany, followed by ApacheCon US in
San Diego.  Tomcat receives the SD Software Development Readers' Choice Awards for
"Best Open Source Tool"; Software Development Magazine's JOLT! Awards
recognize Apache Jakarta and Tomcat.</p>
<h3 id="2006">Highlights: 2006<a class="headerlink" href="#2006" title="Permalink">&para;</a></h3>
<p>A new Board of Directors is elected: Greg Stein and Jim Jagielski are
re-elected as Chairman and Executive Vice President/Secretary
respectively; Sander Striker joins the Board as President, and
Justin Erenkrantz is elected Treasurer. The Incubator matures, with new
projects created to meet growing industry interest in Open Source
solutions for enterprise resource planning and manage related business
processes. Projects undergoing incubation are Abdera, Archiva,
Cayenne, CXF, Hadoop, Harmony, HiveMind, Jackrabbit, MINA, ODE, OfBIZ, Open JPA,
Open EJB, Qpid, Santuario, Shale, Tapestry, Tiles, and Velocity;
Apache Cayenne, OFBiz, and Tiles graduate to become Top Level Projects later
that year. The Apache Security Team is re-established, a new Testing
project is established to oversee the creation of software related
to the domain of software testing; in addition, and the ASF launches new
Innovation Laboratories for the experimentation of new ideas
without Project bylaws or community building requirements. The ASF hosts
its tenth ApacheCon in Dublin, Ireland, followed by ApacheCon US in Austin,
and launches ApacheCon Asia in Colombo, Sri Lanka. The Foundation
establishes the Sponsorship program to help offset day-to-day
operating expenses; donations are accepted by both individual and corporate
contributors. SpamAssassin wins the Linux New Media Award, and
Tapestry was awarded Sun's annual Duke's Choice Award for outstanding Java
product innovation.</p>
<h3 id="2007">Highlights: 2007<a class="headerlink" href="#2007" title="Permalink">&para;</a></h3>
<p>The breadth and capability of The ASF is reflected in the largest
changeover its Board members since its incorporation: Jim Jagielski
is elected Chairman, Justin Erenkrantz as President, J. Aaron Farr as
Treasurer, and Sam Ruby as Executive Vice President/Secretary. New
projects continue to germinate, including Buildr, Camel, C++
Standard Library, Pig, Quetzalcoatl, ServiceMix, Synapse, and Tiles entering the
Incubator; Apache ActiveMQ, Commons (Jakarta), Felix,
HttpComponents, ODE, OpenEJB, OpenJPA, POI, Quetzalcoatl, Roller, ServiceMix, Turbine,
and Wicket graduate as Top Level Projects. The ASF establishes a
Legal Affairs Committee to manage legal policies, as well as a Travel
Assistance Committee to provide financial support to select individuals
otherwise unable to attend ApacheCon. The twelfth ApacheCon is
successfully held in Amsterdam, The Netherlands, followed by
ApacheCon US in Atlanta.</p>
<h3 id="2008">Highlights: 2008<a class="headerlink" href="#2008" title="Permalink">&para;</a></h3>
<p>The ASF re-elects Jim Jagielski, Justin Erenkrantz, and Sam Ruby to the
Board as Chairman, President, and Secretary respectively; Sander
Striker is elected Executive Vice President, and J. Aaron Farr is
Treasurer. HBase, Hive, and Zookeeper enter the Incubator; Apache
Abdera, Archiva, Buildr, Continuum, CouchDB, CXF, Hadoop, Qpid, and
Tuscany become Top Level Projects. The Apache Attic is established
to retire ASF projects that have reached their end of life through a
scalable process. Apache user gatherings continue to gain popularity,
with events hosted by projects that include Cocoon, Derby, Forrest,
Hadoop, Jakarta, OfBIZ, Pig, Wicket, among others. The fourteenth
ApacheCon is held in Amsterdam, The Netherlands, followed by
ApacheCon US in New Orleans, where sixty members of the community participate in
voluntourism efforts to help rebuild the City still suffering from
the effects of Hurricane Katrina. ApacheCon US also marks the expansion of
ASF-wide developer and user community events to include
"unconferences" such as BarCamps, GetTogethers, Symposia, and the first ASF Meet Up in
Beijing. Apache tops the Software Development Times 100 list of
Industry Influencers for the third year running in the category of
Application Servers, The ASF wins its third Member of the Year prize
awarded by the Java Community Process Program Management Office,
Apache SpamAssassin won the InfoWorld "Best Of Open Source Software" BOSSIE
Award, Apache Directory Studio finishes as runner-up for the Eclipse
Community Award's Best Open Source RCP Application, and barely six
months under incubation, Sling wins the JAX Innovation Award.</p>
<h3 id="2009">Highlights: 2009<a class="headerlink" href="#2009" title="Permalink">&para;</a></h3>
<p>The ASF announces Ten Years of Apache; celebrates a decade of
innovation in Open Source software and community development. Nearly 300 ASF
Members collaborate successfully with more than 2,000 Committers; 68
Top Level Projects, 35 initiatives in the Incubator, and 23 Labs
concepts are currently active at the Foundation.
<a href="http://www.eu.apachecon.com/c/aceu2009/">ApacheCon Europe 2009</a>
was held 23-27 March in Amsterdam, with the Hackathon (face-to-face
Apache project-related collaboration/development with ASF Members
and Committers) open to the public and including another BarCamp. 10th
Anniversary celebrations continued at
<a href="http://www.us.apachecon.com/c/acus2009/">ApacheCon US 2009</a>,
in Oakland 2-6 November, where both the <a href="https://blogs.apache.org/foundation/entry/governor_schwarzenegger_and_mayor_dellums">Governor of California and
the Mayor of Oakland congratulated Apache</a> on its success.</p>
<h3 id="2010">Highlights: 2010<a class="headerlink" href="#2010" title="Permalink">&para;</a></h3>
<p>The ASF hits its millionth code commit with a revision milestone today with a commit by ASF Member Yonik Seeley on behalf of the Apache Lucene Project. Apache Aries, Avro, Cassandra, Click, ESME, HBase, Hive, jUDDI, Karaf, Mahout, Nutch, OODT, Pig, Pivot, Shindig, Shiro, Subversion, Thrift, Tika, Traffic Server, UIMA, ZooKeeper become Top-level Projects. Alois, Amber, Bean Validation, Celix, Chukwa, Deltacloud, Gora, Isis, Jena, Kitty, Lucy, ManifoldCF, Mesos, NPanday, Nuvem, OODT, OpenNLP, SIS, Stanbol, Wave, Whirr, and Zeta Components entered the Apache Incubator. Milestone project releases include Cassandra 0.6, Cayenne 3.0, FOP 1.0, Maven 3.0, SpamAssassin 3.3.0, and Tomcat 7.0. Apache Excalibur, iBatis, Quetzalcoatl, and WSIF Projects were retired to the Attic. The ASF launches "Apache Extras" (hosted by Google) to provide a "home-away-from-home" for code associated with Apache projects. The ASF issued Public Statements about Apache Harmony as well
as Oracle's decision on the Java SE Technology Compatibility Kit's Field Of Use, and resigns from the Java Community Process Executive Committee. Shane Curcuru, Doug Cutting, Bertrand Delacretaz, Roy T. Fielding, Jim Jagielski, Sam Ruby, Noirin Shirley, Greg Stein, and Henri Yandell have been elected to serve on the ASF Board of Directors; Geir Magnusson, Jr., is named as replacement for Henri Yandell. ASF Director Greg Stein awarded O'Reilly Open Source Award at OSCON. New role of Executive Assistant has been created and staffed. 30 new ASF Members were elected this year. ASF Platinum Sponsors are Google, Microsoft, and Yahoo!; IBM joins Gold Sponsor Hewlett-Packard; Silver Sponsors are Cloudera, Progress Software and Springsource/VMWare, and Bronze Sponsors are BlueNog, Intuit, Joost, and Matt Mullenweg. ApacheCon North America took place in Atlanta, Georgia. BarCampApache in Sydney, Australia, was the first ASF-backed event to take place in the
Southern Hemisphere.</p>
<h3 id="2011">Highlights: 2011<a class="headerlink" href="#2011" title="Permalink">&para;</a></h3>
<p>Apache ACE, Chemistry, Deltacloud, JMeter, Libcloud, River, Whirr became Top-level Projects. More projects than ever submitted to become part of the Apache community: Accumulo, Airavata, Ambari, Any23, AWF, Bigtop, Bloodhound, Cordova, DeltaSpike, DirectMemory, EasyAnt, Flex, Flume, Giraph, HCatalog, Kafka, Kalumet, Lucene.Net, MRUnit, ODF Toolkit, OGNL, Oozie,   OpenMeetings, OpenOffice, Rave, S4, and Sqoop entered the Incubator. Apache Alois retired from the Incubator. Apache Harmony, Jakarta, and Xindice moved to the Attic. Milestone project releases include Cassandra 0.7 and 1.0, Geronimo v3.0-beta-1, Pivot 2.0, Subversion 1.7.0, Tika 1.0, and Turbine 4.0-M1. Apache TomEE is certified as Java EE 6 Web Profile Compatible. Apache UIMA and Hadoop advance data intelligence and semantic capabilities of Watson, IBM's "Smartest Machine on Earth" demonstrated in first-ever man vs. machine competition on Jeopardy! quiz show. Apache Hadoop wins
MediaGuardian&rsquo;s "Innovator of the Year" award. The ASF accepted to become an Affiliate at the Open Source Initiative. New Executive Committee is appointed: Doug Cutting as Chair, Greg Stein as Vice Chair, Jim Jagielski as President, Noirin Plunkett as Executive Vice President, Sam Ruby as Vice President - Infrastructure, Craig L Russell as Secretary, Sam Ruby as Assistant Secretary, and Geir Magnusson, Jr., as Treasurer. The ASF is subpoenaed by the United Stated District Court to produce documents in Oracle America vs. Google related to the use of Apache Harmony code in the Android software platform, and the unsuccessful attempt by Apache to secure an acceptable license to the Java SE Technology Compatibility Kit. The ASF issues statement on Apache OpenOffice.org (the first mature, end-user-facing Apache project) and Open Letter to the Open Document Format Ecosystem clarifying that its code base was not pursued by the ASF prior to its acceptance into
the Apache Incubator, and articulating the project&rsquo;s vision within the wider Open Document Format ecosystem. 42 new ASF Members were elected, bringing the active membership to 370 individuals and 2,663 Apache Committers world-wide. ASF Platinum Sponsors are Google, Microsoft, and Yahoo!; AMD, Facebook, and Hortonworks join Gold Sponsors Hewlett-Packard and IBM; PSW Group joins Silver Sponsors Cloudera, Progress Software and Springsource/VMWare; and Liip AG, Lucid Imagination, Talend, and WANdisco join Bronze Sponsors BlueNog, Intuit, Joost, and Matt Mullenweg. ApacheCon North America took place in Vancouver, Canada.</p>
<h3 id="2012">Highlights: 2012<a class="headerlink" href="#2012" title="Permalink">&para;</a></h3>
<p>The ASF celebrated the 17th Anniversary of the Apache HTTP Server with the release of v2.4; the project maintains its standing as the world's most popular Web server, powering nearly 400 million sites. The Apache Incubator continues to gain momentum, with 85 podlings graduating over the past decade. Apache Accumulo, Airavata, Any23, Bigtop, BVal, Cordova, Creadur, DirectMemory, Empire-db, Flex, Flume, Giraph, Gora, Hama, ISIS, Jena, Kafka, Lucene.Net, Lucy, ManifoldCF, MRUnit, Oozie, OpenNLP, OpenOffice, Rave, SIS, Sqoop, Stanbol, Steve, Syncope, VCL, Wink, Wookie become Top-level Projects. Allura, Blur, CloudStack, Crunch, cTAKES, DeviceMap, Drill, Hadoop Development Tools, Helix, Marmotta, Ripple, Streams, and Syncope entered the Incbuator. Apache AWF, HISE, Kato, Kitty, and PhotArk retired from the Incubator. Milestone project releases include Deltacloud 1.0, Hadoop 1.0, Nutch 2.0, TomEE 1.0, Traffic Server 3.2, and Wicket 6.0. New Executive Committee
is appointed: Doug Cutting as Chair, Greg Stein as Vice Chair, Jim Jagielski as President, Ross Gardler as Executive Vice President, Craig L Russell as Secretary, Chris Mattmann as Treasurer, and Sam Ruby as Assistant Secretary. ASF Officers that now serve at the direction of the President are: Vice President, Brand Management; Vice President, Fundraising; Vice President, Marketing and Publicity; and Vice President, Conference Planning. The office of Vice President, Java Community Process is dissolved. 46 new ASF Members were elected this year. Citrix became an ASF Sponsor, joining Facebook, Google, Microsoft, and Yahoo! at the Platinum level; AMD, Hortonworks, HP, IBM, and Matt Mullenweg at the Gold level; GoDaddy, Huawei, and In Motion Hosting joined Basis Technology, Cloudera, PSW GROUP, SpringSource, and WANdisco at the Silver level; and Intuit and Twitter joined BlueNog, Digital Primates, Intuit, Joost, Liip AG SA Ltd, Lucid Imagination, Talend,
and Two Sigma Investments at the Bronze level. The ASF returned to Europe with the ApacheCon Europe Community Edition in Sinsheim, Germany, underwritten and hosted by SAP.</p>
<h3 id="2013">Highlights: 2013<a class="headerlink" href="#2013" title="Permalink">&para;</a></h3>
<p>Apache Ambari, Bloodhound, Chukwa, Clerezza, CloudStack, Crunch, cTAKES, Curator, DeltaSpike, Etch, Helix, jclouds, JSPWiki, Marmotta, Mesos, Oltu, Onami, OpenMeetings, graduate as Top-level Projects. Aurora, BatchEE, Curator, Falcon, jclouds, Knox, log4cxx2, MetaModel, MRQL, Olingo, Open Climate Workbench, Phoenix, Provisionr, Samza, Sentry, Sirona, Spark, Storm, Stratos, Tajo, Tez, Twill, Usergrid entered the Apache Incubator. Apache Provisionr retired from the Incubator. Milestone project releases include Cassandra 1.2 and 2.0, OpenOffice 4.0, and Subversion 1.8.0. Apache Struts 1 announces End-Of-Life, and recommends Struts 2 as successor. Apache C++ Standard Library (STDCXX), ESME, and XMLBeans moved to the Attic. The ASF issues a statement on Oracle's Technology Compatibility Kit License. Shane Curcuru, Doug Cutting, Bertrand Delacretaz, Roy Fielding, Jim Jagielski, Chris Mattmann, Brett Porter, Sam Ruby, and Greg Stein were elected to the ASF
Board of Directors. The office of Vice President, Conference Planning, was dissolved; committee was renamed to Events Planning. 36 new ASF Members were elected, bringing the active membership to 468 individuals. ASF Sponsors are Citrix, Facebook, Google, Microsoft, and Yahoo! at the Platinum level; AMD, Hortonworks, HP, IBM, and Matt Mullenweg at the Gold level; Basis Technology, Cloudera, GoDaddy, Huawei, InMotion Hosting, PSW GROUP, SpringSource, and WANdisco at the Silver level; and BlueNog, Digital Primates, Intuit, Joost, Liip AG SA Ltd, Lucid Imagination, Talend, Twitter, and Two Sigma Investments at the Bronze level. Freie Universit&auml;t Berlin (FUB) committed to become the provider of Apache server hosting and bandwidth in Europe. The ASF was accepted into the Google Summer of Code (GSoC) as a mentoring organization for the eighth consecutive year; hundreds of students have been mentored in "The Apache Way" under the guidance of the ASF Community
Development Project, with many continuing to be long-term code committers on a variety of Apache projects, as well as some active program participants elected as ASF Members. ApacheCon North America took place in Vancouver, Canada, marking the 25th event in the conference series.</p>
<h3 id="2014">Highlights: 2014<a class="headerlink" href="#2014" title="Permalink">&para;</a></h3>
<p>The ASF exceeded 2 Million code commits: the two millionth revision was by ASF Member Daniel Kulp on behalf of the Apache CXF Project. The Apache HTTP Server remains the world's leading Web server: the Netcraft September Web Server Survey exceeded a billion Websites, stating "Apache truly dominates this market, with more than half of all active sites choosing to use Apache software". Interest in Apache's projects continued to boom, accelerating development and participation by 100% in four years: Apache Allura, Celix, Knox, Olingo, Open Climate Workbench, Phoenix, Spark, Storm, Stratos, Tajo, Tez, VXQuery became Top-level Projects. Argus, Brooklyn, Calcite, DataFu, Flink, HTrace, Ignite, Johnzon, Lens, Parquet, REEF, Slider, Tamaya, and Taverna entered the Apache Incubator. Milestone project releases included Cayenne 3.1, CloudStack 4.3, Log4j 2, SpamAssassin 3.4.0, and Spark 1.0. Apache Click was retired to the Attic. Apache OpenOffice reached a major
adoption milestone with 100 million downloads. Apache TomEE won a Duke's Choice and Geek Choice Award; DeltaSpike, dubbed &ldquo;the Swiss Army Knife of modern Java EE&rdquo; won a Duke's Choice Award. The ASF Celebrated Document Freedom Day, with numerous Apache Projects supporting standards-based document accessibility and interoperability. Rich Bowen, Doug Cutting, Bertrand Delacretaz, Ross Gardler, Jim Jagielski, Chris Mattmann, Brett Porter, Sam Ruby, and Greg Stein were elected to the ASF Board of Directors. The ASF boasts 505 active Members and 4,081 Apache Committers. The ASF Infrastructure team continues to keep the ASF's multi-datacenter, multi-cloud deployment running 24x7x365 on multiple continents, distributing terabytes of artifacts per week and archiving more than 11 million Apache email messages. Apache's repositories changed greatly with the introduction of Git to the source code management system four years ago; since then the original
Subversion repository had been decentralized and augmented with 268 Git repositories, and a robust GitHub presence with 564 different repositories. In addition, the Infrastructure team launched a new status service that provides extensive information about the health of the Apache infrastructure and activity within its projects, as well as a new code signing service for Java, Windows and Android applications for any Apache project to use to sign their releases. The ASF provided new "Powered by Apache" graphical assets for Apache projects, developers, and users to identify their affiliation with products and initiatives under the Apache umbrella. The ASF continues to flourish thanks to support from Platinum Sponsors Citrix, Facebook, Google, Matt Mullenweg, Microsoft, and Yahoo!; Gold Sponsors Cloudera, Comcast, HP, Hortonworks, and IBM; Silver Sponsors Budget Direct, Cerner, Huawei, InMotion Hosting, Pivotal, Produban, and WANdisco; and Bronze Sponsors
Accor, Basis Technology, Bluehost, Cloudsoft Corporation, Samsung, Talend, and Twitter. The ASF decided to accept donations using Bitcoin, and received more than 90 transactions within 48 hours of opening its Bitcoin wallet. ApacheCon North America took place in Denver, Colorado, and ApacheCon Europe was held in Budapest, Hungary.</p>
<h3 id="2015">Highlights: 2015<a class="headerlink" href="#2015" title="Permalink">&para;</a></h3>
<p>Apache Projects continue to gain visibility and command industry attention: Gartner Magic Quadrant reports featured Apache projects more than 400 times throughout the year. The Apache HTTP Server celebrated its 21st Anniversary. The Apache Hadoop ecosystem continues to dominate the Big Data marketplace. Millions of people worldwide access the ASF's two dozen servers and 75 distinct hosts each day. The ASF averaged 16,000 monthly code commits. 175 committees managed 291 Top-level Projects (TLPs) and dozens of sub-projects; Apache Aurora, Brooklyn, Calcite, Groovy, Ignite, Kylin, Lens, NiFi, Orc, Parquet, REEF, Samza, Serf, Usergrid, Whimsy, Yetus, and Zest become Top-Level Projects. A record 55 podlings undergo development in the Apache Incubator, with new entrants Milagro, Myriad, Rya, S2Graph, SINGA, and Toree. Apache Labs features 39 initiatives. Apache DeltaCloud, DirectMemory, Lenya, Shindig, and Whirr retire into the Attic. Apache projects now overseen by 2,000+ Project Management Committee (PMC) members, with 743 repositories under management, and a 33% increase in signed Individual Contributor License Agreements (CLAs).
3,425 ASF Committers and 5,922 Apache code contributors (21% increase) added nearly 20M lines of code; average 18,000 code commits per month, and total 315,533,038 Lines of code changed (65% increase) during the year. Apache services run 24x7x365 at near 100% uptime on an annual budget of less than US$5,000 per project. New experiment with Github initiated to automate user management and group permissions for 5,000+ Apache users. New "Help Wanted" service launched to match volunteers with Apache projects and activities seeking assistance. 58 new individual ASF Members were elected. The ASF continued its longstanding relationship with Google Summer of Code (GSoC), where it has served as a mentoring organization since the program's creation in 2005. Countless GSoC students mentored in &ldquo;The Apache Way&rdquo; continue as long-term code committers on a variety of Apache projects, and some active program participants were elected as Members of the ASF. Apache Projects and their communities participated in hundreds of events globally across countless conferences, workshops, and regional MeetUps. ApacheCon spins its Big Data tracks to a co-located event, Apache:Big Data, and holds both events in Europe in Budapest. ApacheCon North America was held in Austin. Marketing &amp; Publicity launched new ASF brand identity. Trademarks, brand management, and legal support grew to accommodate dozens of existing and new projects. Organizational backing bolstered, with 37 ASF Sponsors and 11 Infrastructure partners. The ASF exited FY 2015 with revenue at $996K, ahead of projected budget.</p>
<h3 id="2016">Highlights: 2016<a class="headerlink" href="#2016" title="Permalink">&para;</a></h3>
<p>"With hundreds of projects and thousands of committers, the Apache Foundation has found stunning success without knuckling under to the software titans."
--Matt Asay, InfoWorld</p>
<p>The ASF has scaled 35,000% since its incorporation with very limited resources. ASF Membership has grown to 588 individuals and the number of Apache Committers increased to 5,427 collaborating across six continents. Apache Apex, Arrow, AsterixDB, Bahir, Beam, Eagle, Geode, Johnzon, Sentry, Tinkerpop, Twill, and Zeppelin graduated as new Top-Level Projects. Annotator, Edgent, Hivemall, NetBeans, Omid, OpenWhisk, Pony Mail, Sensoft, Spot, Tephra, and Weex are accepted into the Apache Incubator. Apache Etch, Onami, Rave, and Wookie retired to the Attic. 3,648 committers changed 96,315,588 lines of code over 278,959 commits. The Top 5 individual Apache projects with the highest repository activity by commits are, in order: Ambari, Camel, Ignite, Sling, and Spark. NetBeans enters the Apache Incubator with the highest repository in size at the ASF that year, with nearly 8 million lines of code. To manage the influx of infrastructure support activity, Greg Stein resigned from the Board of Directors and as Vice President Subversion to assume the role of Infrastructure Administrator alongside Vice President Infrastructure. Rich Bowen was appointed Vice President Conferences, and oversaw the co-located ApacheCon and Apache:Big Data North America in Vancouver and ApacheCon and Apache:Big Data Europe events in Seville. ASF Sponsors are Platinum: Cloudera, Facebook, Google, LeaseWeb, Microsoft, Pivotal, and Yahoo; Gold: ARM, Bloomberg, Comcast, Hortonworks, HP, IBM, ODPi, and PhoenixNap; Silver: Alibaba Cloud Computing, Capital One, Cerner, Confluent, Budget Direct, Huawei, InMotion Hosting, iSIGMA, Private Internet Access, Produban, Red Hat, Serenata Flowers, and Wandisco. The number of Bronze sponsors has also increased to 19 organizations, and the ASF&rsquo;s infrastructure sponsors hold steady with the support of 11 organizations.</p>
<h3 id="2017">Highlights: 2017<a class="headerlink" href="#2017" title="Permalink">&para;</a></h3>
<p>The ASF closes out the year with 318 projects + sub-projects (excluding Apache Labs initiatives): 193 Top-Level Projects and 53 podlings undergoing development in the Apache Incubator. Apache Atlas, CarbonData, DRAT, Fineract, Fluo,Guacamole, Impala, Juneau Kibble, MADlib, Metron, Mnemonic, Mynewt, PredictionIO, Ranger, RocketMQ, Royale, Streams, SystemML, Trafodion graduated as Top-Level Projects. Amaterasu, Crail, Daffodil, Gobblin, Heron, Livy, MXNet, PageSpeed, PLC4X, Ratis, SDAP, SkyWalking, and Superset entered the Apache Incubator. Apache Abdera, Ace, Stratos, and Wink retired to the Attic. The ASF&rsquo;s  Membership grows to 683 individuals, with a whopping 64 new Members elected this year. The total number of Apache Committers is 6,504; 6,165 of whom are active. Over the year, 3,050 Committers changed 60,276,457 lines of code over 188,262 commits. Top 5 committers, in order, are Shad Storhaug (2,472 commits; 1,465,542 lines changed); Claus Ibsen (2,406 commits; 560,595 lines changed); Jean-Baptiste Onofr&eacute; (2,142 commits; 1,243,862 lines changed); Mark Thomas (1,954 commits; 113,266 lines changed); and Colm &Oacute; h&Eacute;igeartaigh (1,768 commits; 521,215 lines changed). The Top 5 Apache Project repositories by commits are: Hadoop, Ambari, Lucene-Solr, Camel, and Ignite; and by size (lines of code): OpenOffice (6,375,345), NetBeans (5,536,881), Flex (whiteboard: 5,164,279; SDK 3,919,006), Trafodion (3,077,781), and Mynewt (core: 2,748.040). "If it didn't happen on-list, it didn't happen": 21,772 authors sent 1,617,547 emails on 642,005 topics across 1,131 mailing lists. Top 10 most active Apache mailing lists (user@ + dev@) are, in order: Flex, Lucene, Ignite, Kafka, Geode, Flink, Tomcat, Cassandra, Beam, and Sentry. Nearly 300 new monthly code contributors have signed up and 300-400 new people filed issues each month. 860 Individual Contributor License Agreements (ICLAs) and 27 Corporate Contributor License Agreements (CCLAs) were signed, and 18 Software Grants submitted by individuals and corporations donating existing software or documentation to Apache projects. The ASF was among the charities selected by Amazon for early access to Alexa Donations with Amazon Pay ("Alexa: make a donation to the Apache Software Foundation"). The ASF&rsquo;s Guidestar profile was elevated to Gold status. ASF Sponsors include Platinum: Cloudera, Comcast, Facebook, Google, LeaseWeb, Microsoft, Oath, and Pineapple Fund; Gold: Anonymous, ARM, Bloomberg, Hortonworks, Huawei, IBM, Indeed, ODPi, and Pivotal; Silver: Aetna, Budget Direct, Capital One, Cerner, Inspur, Private Internet Access, Red Hat, Target, and Union Investment; Bronze: Airport Rentals, The Blog Starter, Casino Bonus, Bookmakers, Casino2k, Emerio, HostChecka.com, HostingAdvice.com, HostPapa Web Hosting, The Linux Foundation, Mobile Slots, SCAMS.info, Site Builder Report, Twitter, and Web Hosting Secret Revealed. Work is underway on formalizing a Targeted Sponsorship program. ApacheCon North America was held in Miami, and was the last contracted event held in partnership with the Linux Foundation. Numerous members of Apache Community Development supported the ASF at existing conferences with booth presence and/or presentations on The Apache Way at OpenExpo Madrid, Solutions Hamburg, MesosCon Europe, Open Source Summit Paris, FOSDEM, GOTO Chicago, and Re;publica. The results of the Apache Committers Diversity Survey were presented at the Diversity Empowerment Summit in Prague. To support the ASF&rsquo;s presence at various global events, volunteers translated the ASF brochure from English to Catalan, French, Italian, German, Spanish, Russian, and Japanese. ASF Marketing &amp; Publicity held Media &amp; Analyst Trainings for ASF Directors and Officers and led a rigorous 5-month crisis communications campaign to support Apache Struts during the exposure and unraveling of the Equifax breach.</p>
<h3 id="2018">Highlights: 2018<a class="headerlink" href="#2018" title="Permalink">&para;</a></h3>
<p>Nearly 200M lines of code are under the ASF's stewardship, reinforcing the ongoing success of community-led development "The Apache Way". Total number of Apache projects + sub-projects grew to 328 (excluding Apache Labs initiatives), with 198 Top-Level Projects and 51 podlings undergoing development in the Apache Incubator. Apache Airflow, DataFu, Freemarker, Griffin, HAWQ, Joshua, Pulsar, ServiceComb, and Traffic Control graduated as Top-Level Projects. Apache Lucy, Oltu, Polygene, and Tiles entered the Attic. 19,435 authors sent 1,497,005 emails on 505,793 topics across 1,131 mailing lists. Overall Apache Committers totaled 7,032 (6,693 active), 730 of whom are individual ASF Members. 44 individuals were elected as new Members. 3,208 Apache Committers changed 78,493,228 lines of code over 201,220 commits. We also welcomed 4,638 new code contributors and 15,861 new issue/pull request contributors. An average of 387 new code contributors and 1,250 new people filed issues each month. A total of 831 ICLAs and 35 CCLAs were signed, and 25 Software Grants submitted. At the annual Members&rsquo; Meeting, Rich Bowen, Shane Curcuru, Bertrand Delacretaz, Isabel Drost-Fromm, Ted Dunning, Brett Porter, Roman Shaposhnik, Phil Steitz, and Mark Thomas were elected to the ASF Board of Directors. The ASF thanked Chris Mattmann and Jim Jagielski, who chose not to stand for re-election this year, and celebrated Jagielski's service as a member of the ASF Board for the past 19 years. New positions of Assistant Vice President Legal Affairs, Vice President Finance, and Vice President Data Privacy were established. The Board published the ASF Vision Statement, which serves as the basis for the ASF&rsquo;s 5-Year Strategic Plan. In addition, it established an extended budget to map against the plan. The ASF completed and passed its first-ever financial audit: unqualified; and reported change in net assets for FY2017-2018 of $548,630. Apache Conferences held an Apache Roadshow Europe co-located with FOSS Backstage in Berlin, and ApacheCon North America took place in Montreal, Canada. ASF Fundraising yielded a positive net income, and raised 150% of goals. The position of VP Sponsor Relations was established by VP Fundraising to help with day-to-day liaison with ASF Sponsors, who include Platinum: Cloudera, Comcast, Facebook, Google, LeaseWeb, Microsoft, Oath, Pineapple Fund, and Tencent Cloud; Gold: Anonymous, ARM, Bloomberg, Handshake, Hortonworks, Huawei, IBM, Indeed, Pivotal, and Union Investment; Silver: Aetna, Alibaba Cloud Computing, Baidu, Budget Direct, Capital One, Cerner, Inspur, ODPi, Private Internet Access, Red Hat, and Target; Bronze: Airport Rentals, Best VPN, The Blog Starter, Bookmakers, Cash Store, Casino Bonus, Casino2k, Cloudsoft, Emerio, Footprints Recruiting, HostChecka.com, HostingAdvice.com, HostPapa Web Hosting, The Linux Foundation, Mobile Slots, Mutuo Kredit AG, Online Holland Casino, RX-M, SCAMS.info, Site Builder Report, Talend, The Best VPN, Twitter, and Web Hosting Secret Revealed. ASF Targeted Sponsors provide the Foundation with contributions for specific activities or programs. Targeted Platinum: DLA Piper, Microsoft, Oath, OSU Open Source Labs, and Sonatype; Targeted Gold: Atlassian, The CrytpoFund, Datadog, PhoenixNAP, and Quenda; Targeted Silver: Amazon Web Services, HotWax Systems, and Rackspace; Targeted Bronze: Bintray, Education Networks of America, Google, Hopsie, No-IP, PagerDuty, Peregrine Computer Consultants Corporation, Sonic.net, SURFnet, and Virtru; ASF Fundraising also launched dedicated, semi-annual, &ldquo;Support Apache&rdquo; campaigns for individual giving.</p>
<h3 id="2019">Highlights: 2019<a class="headerlink" href="#2019" title="Permalink">&para;</a></h3>
<p>2019 kicked off with the "Apache in 2018 - By The Digits" report, highlighting the ASF&rsquo;s booming growth and Open Source community leadership. The first quarter of the year saw 1,588 committers change 12,791,559 lines of code across 39,989 commits.Entering the Apache Incubator are Hudi (Big Data), Training (Education), and TVM (Deep Learning). Apache Unomi (Customer Data Platform) graduated as a Top-Level Project. Apache Xalan was rebooted, coming out of retirement from the Attic. The "Success at Apache" blog series continues, with the addition of new ASF Sponsor case studies published featuring profiles on Gold Sponsor Bloomberg and Platinum Sponsor Leaseweb. ASF operations teams, including Infrastructure, Marketing &amp; Publicity, Brand Management, Conferences, and Travel Assistance continue to plan new budgets to map against the ASF 5-Year Plan. The ASF Sponsorship program continues to bolster the ASF&rsquo;s operations, with thanks to ASF Platinum Sponsors: Amazon Web Services, Cloudera, Comcast, Facebook, Google, Leaseweb, Microsoft, Pineapple Fund, Tencent Cloud, and Verizon Media. Gold: Anonymous, ARM, Bloomberg, Handshake, Huawei, IBM, Indeed, Pivotal, Union Investment, Workday. Silver: Aetna, Alibaba Cloud Computing, Baidu, Budget Direct, Capital One, Cerner, Inspur, ODPi, Private Internet Access, Red Hat, Target. Bronze: Airport Rentals, Best VPN, The Blog Starter, Bookmakers, Cash Store, Casino Bonus, Casino2k, Cloudsoft, Emerio, Footprints Recruiting, HostChecka.com, Host Advice, HostingAdvice.com, HostPapa Web Hosting, Mobile Slots, Mutuo Kredit AG, Online Holland Casino, PureVPN, RX-M, SCAMS.info, Site Builder Report, Talend, The Best VPN, Twitter, Web Hosting Secret Revealed. ASF Targeted Sponsors continue to support the Foundation with in-kind contributions for specific activities or programs in support of Apache projects and general ASF operations. Targeted Platinum: DLA Piper, Microsoft, OSU Open Source Labs, Sonatype, and Verizon Media. Targeted Gold: Atlassian, The CrytpoFund, Datadog, PhoenixNAP, and Quenda. Targeted Silver: Amazon Web Services, HotWax Systems, and Rackspace; Targeted Bronze: Bintray, Education Networks of America, Google, Hopsie, No-IP, PagerDuty, Peregrine Computer Consultants Corporation, Sonic.net, SURFnet, and Virtru. The ASF is a Google Summer of Code mentoring organization for the 15th consecutive year and is in the process of accepting student project applications. Apache Roadshow/DC, the first of four official Apache events, took place in March 2019; Apache Roadshow/Chicago will take place in May, ApacheCon North America is scheduled for September in Las Vegas, and ApacheCon Europe is scheduled for October in Berlin. Preparations are underway for the ASF&rsquo;s 20th Anniversary on 26 March. The Annual ASF Members&rsquo; meeting will also take place that day, and will include elections for new Members and Board of Directors.</p>
<h3 id="learnmore">Learn More<a class="headerlink" href="#learnmore" title="Permalink">&para;</a></h3>
<p>As a non-profit corporation built upon collaborative consensus, we
strive to keep records open and to document what we do. Some other resources to
find out about the history of the ASF include:</p>
<ul>
<li><a href="/foundation/board/calendar.html">Board Minutes</a></li>
<li><a href="/foundation/records/">Formal Corporate Records</a></li>
<li><a href="/history/">ASF History</a></li>
<li><a href="/memorials/">Community Memorials</a></li>
</ul>
<h3 id="contact">Contact Us<a class="headerlink" href="#contact" title="Permalink">&para;</a></h3>
<p>For any issues not addressed in the individual links above, you may
<a href="mailto:press@apache.org?subject=[Highlights]%20I%20need%20more%20highlights">contact us</a>.
All technical questions or questions about
<a href="http://projects.apache.org/">individual projects</a>
should always be directed to the appropriate
<a href="/foundation/mailinglists.html">project mailing list</a>.
You may also
<a href="/foundation/contact.html">contact The ASF</a>
via hardcopy mail or fax as well.</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="https://tac.apache.org">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="https://privacy.apache.org/policies/privacy-policy-public.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.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>