<!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>Celebrating 25 Years at The ASF</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">
  <link href="/css/new-ui.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" });
    });
    var pageTitle = 'Celebrating 25 Years at The ASF';
    if(pageTitle === '404'){
      window.addEventListener('DOMContentLoaded', (event) => {
          new PagefindUI({ element: "#page-404-search" });
      });
    }
  </script>
  

<!-- https://www.apache.org/licenses/LICENSE-2.0 -->  <!-- Matomo -->
  <script>
    var pageTitle = 'Celebrating 25 Years at The ASF';
    var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before
"trackPageView" */
    /* We explicitly disable cookie tracking to avoid privacy issues */
    _paq.push(['disableCookies']);
    if(pageTitle === '404'){
      /* Track 404 page hits */
      _paq.push(['setDocumentTitle',  '404/URL = ' +  encodeURIComponent(document.location.pathname+document.location.search) + '/From = ' + encodeURIComponent(document.referrer)]);
    }
    /* Measure a visit to flink.apache.org and nightlies.apache.org/flink
as the same visit */
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
      var u="//analytics.apache.org/";
      _paq.push(['setTrackerUrl', u+'matomo.php']);
      _paq.push(['setSiteId', '37']);
      var d=document, g=d.createElement('script'),
s=d.getElementsByTagName('script')[0];
      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    })();
  </script>
  <!-- End Matomo Code -->

</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">
          <div class="upper-nav">
            <div class="header-social-icons">
              <a target="_blank" href="https://infra.apache.org/slack.html"><img src="/images/slack-icon.svg" alt="slack icon"></a>
              <a target="_blank" href="https://github.com/apache"><img src="/images/github-mark-white.svg" alt="github icon"></a>
              <a target="_blank" href="https://www.linkedin.com/company/the-apache-software-foundation/"><img src="/images/linkedin-icon.png" alt="linkedIn icon"></a>
              <a target="_blank" href="https://www.youtube.com/c/TheApacheFoundation"><img src="/images/youtube-icon.svg" alt="youtube icon"></a>
              <a target="_blank" href="https://twitter.com/TheASF"><img src="/images/x-icon.svg" alt="X icon"></a>
            </div>
            <a href="/foundation/sponsorship" class="btn btn-default" onclick="_paq.push(['trackEvent', 'click', 'SponsorASF Button']);">Sponsor the ASF</a>
          </div>
          <ul class="nav navbar-nav navbar-justified n-navbar-padding">
            <li class="dropdown">
              <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/" target="_blank">Contributor Getting Started</a></li>
                <li><a href="https://community.apache.org/contributors/" target="_blank">Becoming a Committer</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/community-resources/">Community Resources</a></li>
                <li><a href="https://communityovercode.org/" target="_blank">Community Over Code</a></li>
                <li><a href="https://events.apache.org/" target="_blank">Events</a></li>
                <li><a href="https://www.redbubble.com/people/comdev/shop" target="_blank">Store</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <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="/projects">Projects</a></li>
                <li><a href="https://incubator.apache.org/" target="_blank">Incubator Projects</a></li>
                <li><a href="https://projects.apache.org/" target="_blank">Projects Directory </a></li>
                <li><a href="/foundation/mailinglists">Mailing Lists </a></li>
                <li><a href="/security">Report a Vulnerability</a></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/" target="_blank">Distributions</a></li>
                <li><a href="https://projects.apache.org/releases.html" target="_blank">Releases</a></li>
                <li><a href="https://status.apache.org/" target="_blank">Infrastructure Status</a></li>
                <li><a href="https://infra-reports.apache.org/#uptime" target="_blank">Infrastructure Statistics</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Learn&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://news.apache.org/" target="_blank">Blog</a></li>
                <li><a href="/foundation/how-it-works">How the ASF Works</a></li>
                <li><a href="/theapacheway/">The Apache Way</a></li>
                <li><a href="/legal/">Legal &amp; Trademark</a></li>
                <li><a href="/licenses">Licenses</a></li>
                <li><a href="/foundation/glossary">Glossary</a></li>
                <li><a href="/foundation/faq">FAQ</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Resources &amp; Tools&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/dev/">Developer Information</a></li>
                <li><a href="https://cwiki.apache.org/" target="_blank" >Wiki</a></li>
                <li><a href="https://issues.apache.org/" target="_blank" >Issues</a></li>
                <li><a href="https://infra.apache.org/slack.html" target="_blank" >Slack</a></li>
                <li><a href="https://selfserve.apache.org/" target="_blank" >Self Serve Portal</a></li>
                <li><a href="https://infra.apache.org/" target="_blank" >Infrastructure</a></li>
                <li><a href="https://whimsy.apache.org/" target="_blank" >Whimsy</a></li>
                <li><a href="/foundation/press/kit/">Brand Guidelines</a></li>
                <li><a href="/logos/">Project Logos</a></li>
              </ul>
            </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/">About</a></li>
                <li><a href="/foundation/sponsors">Our Sponsors</a></li>
		<li><a href="/foundation/sponsorship">Corporate Sponsorship</a></li>
                <li><a href="/foundation/individual-supporters">Individual Supporters</a></li>
                <li><a href="/foundation/leadership">Leadership</a></li>
                <li><a href="/foundation/members">Members</a></li>
                <li><a href="https://diversity.apache.org/" target="_blank">Diversity & Inclusion</a></li>
                <li><a href="/press/">Newsroom</a></li>
                <li><a href="/foundation/contact">Contact</a></li>
              </ul>
            </li>
            
           
            
            <li class="dropdown">
              <a href="#" class="dropdown-toggle hidden-xs" 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">

    </div>
 
  </header>
  <main id="maincontent">
<div class="container">    <div class="text-center">
<h1 id="celebrating-25-years-at-the-asf">Celebrating 25 Years at The ASF<a class="headerlink" href="#celebrating-25-years-at-the-asf" title="Permalink">&para;</a></h1>
<img alt="Apache 25 Year Anniversary" class="img-responsive" src="img/anniversary-hero-twenty-five.jpg"/>
<h2 id="asf25years">#ASF25Years<a class="headerlink" href="#asf25years" title="Permalink">&para;</a></h2>
</div>
<div class="spacer-100">
</div>
<div class="in-page-nav text-center">
<a class="btn btn-default mx-10" href="#software-the-world-relies-on" role="button">Software The World Relies On</a>
<a class="btn btn-default mx-10" href="#communities-that-endure" role="button">Communities That Endure</a>
<a class="btn btn-default mx-10" href="#everything-open-everyone-welcome" role="button">Everything Open, Everyone Welcome
</a>
</div>
<div class="spacer-100">
</div>
<h2 id="software-the-world-relies-on">Software The World Relies On<a class="headerlink" href="#software-the-world-relies-on" title="Permalink">&para;</a></h2>
<p>The ASF was founded with a mission to provide software for the public good. For 25 years the foundation has delivered reliable software that fuels innovation and powers organizations of all sizes - from small businesses to the most advanced data-driven enterprises.</p>
<p>From the flagship Apache HTTP project to more recent projects spanning AI/ML, big data, cloud computing, financial tech, geospatial, IoT, search, and more &ndash; ASF projects serve the public good with use cases such as fueling cancer research; aiding in clean energy research; and reducing food waste.</p>
<div class="spacer-100">
</div>
<h3 id="public-good-stories">Public Good Stories<a class="headerlink" href="#public-good-stories" title="Permalink">&para;</a></h3>
<div class="cards-50 updates">
<article class="card">
<div class="content">
<h4 id="apache-airflow">Apache Airflow<a class="headerlink" href="#apache-airflow" title="Permalink">&para;</a></h4>
<p>Genomic algorithms are highly demanding of CPU, RAM, and storage. The data engineering team at C2i Genomics uses Apache Airflow to enable high-scale orchestration of genomic algorithms for cancer research.</p>
</div>
<a class="continue" href="https://www.youtube.com/watch?v=j4fmIh3ir3I" target="_blank">Watch Video &rarr;</a>
</article>
<article class="card">
<div class="content">
<h4 id="apache-superset">Apache Superset<a class="headerlink" href="#apache-superset" title="Permalink">&para;</a></h4>
<p>The City of Ann Arbor uses Apache Superset to deliver high-quality data reporting for its public-facing dashboards including rain gauges, air quality, and traffic crash reporting &ndash; saving the city 94% in costs.</p>
</div>
<a class="continue" href="https://samfirke.com/2023/06/02/making-the-switch-to-apache-superset/" target="_blank">Read More &rarr;</a>
</article>
</div>
<p>Want to share your public good story? <a href="https://forms.gle/z1dSUjn1WaeK7Mi1A" target="_blank">Fill out the form</a>.</p>
<h3 id="project-spotlights">Project Spotlights<a class="headerlink" href="#project-spotlights" title="Permalink">&para;</a></h3>
<div class="cards-50 updates">
<article class="card">
<a href="https://news.apache.org/foundation/entry/asf-project-spotlight-apace-apisix" target="_blank">
<div class="content">
<h4 id="asf-project-spotlight-apache-apisix">ASF PROJECT SPOTLIGHT: APACHE APISIX<a class="headerlink" href="#asf-project-spotlight-apache-apisix" title="Permalink">&para;</a></h4>
</div>
</a>
</article>
<article class="card">
<a href="https://news.apache.org/foundation/entry/asf-project-spotlight-apache-wicket" target="_blank">
<div class="content">
<h4 id="asf-project-spotlight-apache-wicket">ASF PROJECT SPOTLIGHT: APACHE WICKET<a class="headerlink" href="#asf-project-spotlight-apache-wicket" title="Permalink">&para;</a></h4>
</div>
</a>
</article>
</div>
<div class="spacer-100">
</div>
<h3 id="the-voice-of-apache-podcast">The Voice of Apache Podcast<a class="headerlink" href="#the-voice-of-apache-podcast" title="Permalink">&para;</a></h3>
<div class="yt-container" id="yt-container-7nY2rlnPISg" style="background-image: url('/img/yt_preview_7nY2rlnPISg.jpg'); width: 640px; height: 360px;" youtube_id="7nY2rlnPISg"><div class="yt-notice"></div></div>
<div class="spacer-100">
</div>
<h2 id="communities-that-endure">Communities That Endure<a class="headerlink" href="#communities-that-endure" title="Permalink">&para;</a></h2>
<p>Open source projects need healthy communities to thrive. The ASF provides projects with services and mentorship for building resilient and durable communities throughout their lifecycle. New projects start in the Apache Incubator and graduate once they&rsquo;ve met certain criteria (and if it&rsquo;s not longer maintained, it goes in the Attic).</p>
<div class="updates">
<article class="card">
<div class="content">
<h4 id="current-incubating-projects">Current Incubating Projects<a class="headerlink" href="#current-incubating-projects" title="Permalink">&para;</a></h4>
<p>See all <a href="https://incubator.apache.org/projects/#current">Incubating projects</a>.</p>
</div>
</article>
<article class="card">
<div class="content">
<h4 id="recently-graduated-projects">Recently Graduated Projects<a class="headerlink" href="#recently-graduated-projects" title="Permalink">&para;</a></h4>
<ul>
<li><a href="https://eventmesh.apache.org/">Apache EventMesh</a></li>
<li><a href="https://flagon.apache.org/">Apache Flagon</a></li>
<li><a href="https://kvrocks.apache.org/">Apache Kvrocks</a></li>
<li><a href="https://opendal.apache.org/">Apache OpenDAL</a> </li>
<li><a href="https://seatunnel.apache.org/">Apache SeaTunnel</a></li>
</ul>
</div>
</article>
<article class="card">
<div class="content">
<h4 id="apache-attic">Apache Attic<a class="headerlink" href="#apache-attic" title="Permalink">&para;</a></h4>
<p>If a project is no longer being supported by an active community, it&rsquo;s retired to the Apache Attic for preservation including code, mailing lists, and all other project communications in the event that those artifacts become useful again in the future. Recent projects that entered the Attic include: Apache OODT, Apache Giraph, Apache MXNet, Apache Any23, and Apache jUDDI.</p>
</div>
</article>
</div>
<div class="spacer-100">
</div>
<h2 id="everything-open-everyone-welcome">Everything Open, Everyone Welcome<a class="headerlink" href="#everything-open-everyone-welcome" title="Permalink">&para;</a></h2>
<p>The ASF aims to foster a welcoming and open environment built on respect, empathy, openness, patience, candor, and dependability. According to the 2023 <a href="https://news.apache.org/foundation/entry/the-state-of-diversity-and-inclusion-in-the-asf-community-a-pulse-check" target="_blank">State of Diversity and Inclusion report</a>, people feel welcome and included at The ASF and that they have an equal chance of getting their contributions accepted. </p>
<h3 id="first-contribution-campaign">First Contribution Campaign<a class="headerlink" href="#first-contribution-campaign" title="Permalink">&para;</a></h3>
<p>We recognize community members through our First Contribution campaign that highlights a contributor&rsquo;s first contribution to any ASF project. Look for the hashtag #FirstASFContribution on LinkedIn and X.</p>
<div class="cards-50 updates">
<article class="card">
<a href="https://news.apache.org/foundation/entry/first-time-asf-contributors-improve-technical-documentation-for-asf-projects-and-its-users" target="_blank">
<div class="content">
<h4 id="first-time-asf-contributors-improve-technical-documentation-for-asf-projects-and-its-users">First-Time ASF Contributors Improve Technical Documentation for ASF Projects and Its Users<a class="headerlink" href="#first-time-asf-contributors-improve-technical-documentation-for-asf-projects-and-its-users" title="Permalink">&para;</a></h4>
</div>
</a>
</article>
<article class="card">
<a href="https://news.apache.org/foundation/entry/first-time-contributors-enhance-code-for-asf-projects" target="_blank">
<div class="content">
<h4 id="first-time-contributors-enhance-code-for-asf-projects">First-Time Contributors Enhance Code for ASF Projects<a class="headerlink" href="#first-time-contributors-enhance-code-for-asf-projects" title="Permalink">&para;</a></h4>
</div>
</a>
</article>
<!-- <article class="card">
        <a target="_blank" href="https://news.apache.org/foundation/entry/first-time-asf-contributors-fix-bugs-for-asf-projects-improving-oss-quality-security-and-usability">
            <div class="content">
                <h4>First-Time ASF contributors Fix Bugs for ASF projects, Improving OSS Quality, Security, and Usability </h4>
            </div>
        </a>
    </article> -->
</div>
<p><a href="https://news.apache.org/foundation/entry/category/first-contributions" target="_blank">See all posts</a> and <a href="https://news.apache.org/foundation/entry/the-asf-launches-firstasfcontribution-campaign" target="_blank">submit your first contribution</a></p>
<h2 id="get-involved-with-asf">Get Involved with ASF<a class="headerlink" href="#get-involved-with-asf" title="Permalink">&para;</a></h2>
<ul>
<li>Follow us on social: <a href="https://twitter.com/TheASF" target="_blank">X</a>, <a href="https://www.linkedin.com/company/the-apache-software-foundation/" target="_blank">LinkedIn</a>, and <a href="https://www.youtube.com/c/TheApacheFoundation" target="_blank">YouTube</a></li>
<li><a href="https://www.apache.org/projects/">Host a Project</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Become an ASF Sponsor  </a></li>
<li><a href="https://apache.org/community-resources/" target="_blank">Community Resources</a></li>
<li><a href="https://communityovercode.org/" target="_blank">Attend Community Over Code</a></li>
</ul>
<div class="spacer-100">
</div>
<img alt="Apache 25 Year Anniversary" class="img-responsive" src="img/community-anniversary.jpg"/>
<style>
    .yt-container {
        background-size: cover;
        background-position: center;
    }

    .yt-notice {
        padding: 0.5em;
        color: black;
        background-color: white;
    }
    .yt-notice::after {
        content: "Clicking to play this video establishes a connection with YouTube";
    }
</style><script>
    var cachedPromise;
    function loadScript() {
        cachedPromise = cachedPromise || new Promise((resolve, reject) => {
            let script = document.createElement('script');
            script.src = 'https://www.youtube.com/iframe_api';
            script.addEventListener('load', resolve);
            script.addEventListener('error', (e) => reject(e));
            document.body.appendChild(script);
        });
        return cachedPromise;
    }

    function startPlayer(id, youtube_id) {
        loadScript().then(() => {
            window.YT.ready(function() {
                let player = new YT.Player(id, {
                videoId: youtube_id,
                playerVars: {
                    'playsinline': 1
                },
                events: {
                    'onReady': (event) => {
                        event.target.playVideo();
                    }
                }
                });
            });
        });
    }
    function addElement(e) {
        startPlayer(e.target.id, e.target.attributes['youtube_id'].value);
    }
    document
      .querySelectorAll('.yt-container')
      .forEach((video) => video.addEventListener('click', addElement))
</script>
</div>  </main>

  <!-- Footer -->
  <footer class="bg-primary">
    <div class="container">
      <div class="row">
        <br />
        <div class="col-sm-2">
          <h5 class="white">Community</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="https://community.apache.org/" target="_blank">Contributor Getting Started</a></li>
            <li><a href="https://community.apache.org/contributors/" target="_blank">Becoming a Committer</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="/community-resources/">Community Resources</a></li>
            <li><a href="https://communityovercode.org/" target="_blank">Community Over Code</a></li>
            <li><a href="https://events.apache.org/" target="_blank">Events</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/shop" target="_blank">Store</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Projects</h5>
          <ul class="list-unstyled white" role="menu">
              <li><a href="/projects">Projects</a></li>
              <li><a href="https://incubator.apache.org/" target="_blank">Incubator Projects</a></li>
              <li><a href="https://projects.apache.org/" target="_blank">Projects Directory </a></li>
              <li><a href="/foundation/mailinglists">Mailing Lists </a></li>
              <li><a href="/security">Report a Vulnerability</a></li>
          </ul>
        </div>
        <div class="col-sm-2">
          <h5 class="white">Downloads</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="https://downloads.apache.org/" target="_blank">Distributions</a></li>
            <li><a href="https://projects.apache.org/releases.html" target="_blank">Releases</a></li>
            <li><a href="https://status.apache.org/" target="_blank">Infrastructure Status</a></li>
            <li><a href="https://infra-reports.apache.org/#uptime" target="_blank">Infrastructure Statistics</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Learn</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="https://news.apache.org/" target="_blank">Blog</a></li>
            <li><a href="/foundation/how-it-works">How the ASF Works</a></li>
            <li><a href="/theapacheway/">The Apache Way</a></li>
            <li><a href="/legal/">Legal &amp; Trademark</a></li>
            <li><a href="/licenses">Licenses</a></li>
            <li><a href="/foundation/glossary">Glossary</a></li>
            <li><a href="/foundation/faq">FAQ</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Resources &amp; Tools</h5>
          <ul class="list-unstyled white" role="menu">
              <li><a href="/dev/">Developer Information</a></li>
              <li><a href="https://cwiki.apache.org/" target="_blank" >Wiki</a></li>
              <li><a href="https://issues.apache.org/" target="_blank" >Issues</a></li>
              <li><a href="https://infra.apache.org/slack.html" target="_blank" >Slack</a></li>
              <li><a href="https://selfserve.apache.org/" target="_blank" >Self Serve Portal</a></li>
              <li><a href="https://infra.apache.org/" target="_blank" >Infrastructure</a></li>
              <li><a href="https://whimsy.apache.org/" target="_blank" >Whimsy</a></li>
              <li><a href="/foundation/press/kit/">Brand Guidelines</a></li>
              <li><a href="/logos/">Project Logos</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">About</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/foundation/">About</a></li>
            <li><a href="/foundation/sponsors">Our Sponsors</a></li>
	    <li><a href="/foundation/sponsorship">Corporate Sponsorship</a></li>
            <li><a href="/foundation/individual-supporters">Individual Supporters</a></li>
            <li><a href="/foundation/leadership">Leadership</a></li>
            <li><a href="/foundation/members">Members</a></li>
            <li><a href="https://diversity.apache.org/" target="_blank">Diversity & Inclusion</a></li>
            <li><a href="/press/">Newsroom</a></li>
            <li><a href="/foundation/contact">Contact</a></li>
            <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy Policy</a></li>
          </ul>
        </div>


      </div>
      <hr class="col-lg-12 hr-white" />
      <div class="row">
        <div class="col-lg-12">
          <p class="text-center">Copyright &#169; 2024 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 src="/js/new-ui.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>