<!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>Media and Analyst Relations</title>
  <link href="/css/Montserrat-300-600.css" rel="stylesheet">
  <link href="/css/min.bootstrap.css" rel="stylesheet">
  <link href="/css/styles.css" rel="stylesheet">
  <style>
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}  </style>

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

<body >
  <!-- Navigation -->
  <header>
	<div id="skiptocontent">
		<a href="#maincontent">Skip to Main Content</a>
	</div>
    <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
      <div class="container">
        <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <div class="collapse navbar-collapse" id="mainnav-collapse">
          <ul class="nav navbar-nav navbar-justified">
            <li><a href="/index.html#news">News</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation">Overview</a></li>
                <li><a href="/foundation/how-it-works.html">Process</a></li>
                <li><a href="/foundation/governance/">Governance</a></li>
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="/foundation/governance/members.html">Membership</a></li>
                <li><a href="https://community.apache.org/">Community</a></li>
                <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/foundation/glossary.html">Glossary</a></li>
				  <li><a href="/apache-name">About Our Name</a></li>
                <li><a href="/foundation/preFAQ.html">FAQ</a></li>
                <li><a href="/foundation/contributing.html">Support Apache</a></li>
                <li><a href="/press/">Media/Analysts</a></li>
                <li><a href="/foundation/contact.html">Contact</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation/contributing.html">Donate Now</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li>
                <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li>
                <li><a href="/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 class="input-group" style="width: 100%; padding: 0 5px;">
                    <script async src="https://cse.google.com/cse.js?cx=cb41d2753d228d8b7"></script>
                    <div class="gcse-search"></div>
                  </div>
                </li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </header>
  <!-- / Navigation -->
  <header id="main-header" class="container">
    <div class="sideImg">
          <a class="visible-home" href="https://events.apache.org/x/current-event.html">
            <img class="img-responsive" style="width: 125px;" src="/events/current-event-125x125.png" alt="Apache Events"/>
<!-- STALE: <img class="img-responsive" style="width: 125px;" src="https://www.apachecon.com/event-images/default-square-light.png" alt="ApacheCon 2021 Coming Soon!" /> -->
          </a>
      <a class="hidden-home" href="/"><img class="img-responsive" src="/img/asf-estd-1999-logo.jpg" alt="The Apache Software Foundation"></a>
    </div>
    <div class="main">
      <img class="img-responsive center-block visible-home" src="/img/asf-estd-1999-logo.jpg" alt="Apache 20th Anniversary Logo">

      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
 
  </header>
  <main id="maincontent">
<div class="container">    <h1 id="media-and-analyst-relations">Media and Analyst Relations<a class="headerlink" href="#media-and-analyst-relations" title="Permalink">&para;</a></h1>
<p>This is a comprehensive resource for members of the press and industry analysts.
Those seeking electronic press kits and/or sample press materials may
<a href="mailto:press@apache.org?subject=[Press%20request]%20Please%20send%20a%20press%20kit">contact us</a>
for additional assistance.</p>
<div id="toc"><ul><li><a class="toc-href" href="#about" title="About The Apache Software Foundation (ASF)">About The Apache Software Foundation (ASF)</a></li><li><a class="toc-href" href="#news" title="News and Announcements">News and Announcements</a></li><li><a class="toc-href" href="#timeline" title="Timeline/Fast Facts">Timeline/Fast Facts</a></li><li><a class="toc-href" href="#interviews" title="Interview and Analyst Briefing Requests">Interview and Analyst Briefing Requests</a></li><li><a class="toc-href" href="#releases" title="Press Release Review Process">Press Release Review Process</a><ul><li><a class="toc-href" href="#asf-joint-announcements" title="ASF Joint Announcements">ASF Joint Announcements</a></li><li><a class="toc-href" href="#asf-supporting-announcements" title="ASF-Supporting Announcements">ASF-Supporting Announcements</a></li><li><a class="toc-href" href="#third-party-announcements" title="Third Party Announcements">Third Party Announcements</a></li></ul></li><li><a class="toc-href" href="#project-guides" title="Publicity Guidelines for Apache Top-Level Projects">Publicity Guidelines for Apache Top-Level Projects</a></li><li><a class="toc-href" href="#apache-feather-and-project-logos" title="Apache Feather And Project Logos">Apache Feather And Project Logos</a></li><li><a class="toc-href" href="#whoweare" title="Who We Are">Who We Are</a></li><li><a class="toc-href" href="#contact" title="Contact The ASF Press Team">Contact The ASF Press Team</a></li></ul></div>
<h2 id="about">About The Apache Software Foundation (ASF)<a class="headerlink" href="#about" title="Permalink">&para;</a></h2>
<p>Incorporated in 1999, the all-volunteer Foundation oversees <a href="https://projects.apache.org/">more than 350 leading Open Source projects</a>, including Apache HTTP Server &mdash; the world's most popular Web server software since its creation in 1994.</p>
<p>Evolving from the original eight developers (collectively known as "the Apache Group") who contributed code enhancements to the NCSA daemon Web server, The ASF today is a fully-distributed, US 501(c)3 <a href="/foundation/">not-for-profit organization</a>
comprising more than <a href="https://projects.apache.org/timelines.html">730 individual Members and over 7,000 Committers</a> <a href="http://community.zones.apache.org/map.html">across six continents</a>.</p>
<p>The ASF develops, stewards, and incubates dozens of enterprise-grade Open Source projects that power mission-critical applications in financial services, aerospace, publishing, government, healthcare, research, infrastructure, and more. From Accumulo to ZooKeeper, many Apache projects serve as the backbone for some of the world's most visible and widely used applications in Big Data, Cloud, Search and CMS, DevOps and Build Management, IoT and Edge Computing, Machine and Deep Learning, Servers, Web Frameworks, and <a href="https://projects.apache.org/projects.html?category">much more</a>.</p>
<p>The ASF's successful collaborative, meritocratic technology and community development process known as "<a href="/foundation/how-it-works.html">The Apache Way</a>" is both highly-emulated by other Open Source foundations and the subject of numerous industry case studies and business school curricula. Each Apache project is overseen by a Project Management Committee (PMC), a self-selected team of active contributors that <a href="/foundation/governance/">guides the project's day-to-day operations</a>, including community development and product releases.</p>
<p>Billions of users benefit from the ASF&rsquo;s <a href="https://blogs.apache.org/foundation/entry/apache-is-open">freely available Open Source software</a>: countless non-ASF-developed software applications have been distributed under the terms of the popular, business-friendly Apache License. By allowing source code to be used for the development of any software &ndash;both Open Source and proprietary&ndash; the <a href="/licenses/">Apache License makes it easy for all users to implement and deploy Apache products</a>.</p>
<p>The Foundation provides organizational, legal, and financial support for the <a href="http://incubator.apache.org/">incubation and development of new projects</a>, and minimizes the potential <a href="/legal/">legal exposure of intellectual property</a> and financial contributions.</p>
<p>The <a href="http://community.apache.org/">Apache community</a> actively participates in ASF mailing lists, mentoring initiatives, and ApacheCon, the Foundation's official user conference, trainings, and expo. Now in its 20th year, <a href="http://www.apachecon.com/">ApacheCon, along with smaller events such as the Apache Roadshow</a>, continues to draw attendees from all over the world to embrace &rdquo;Tomorrow&rsquo;s Technology Today&rdquo; through unparalleled educational, collaboration, and networking opportunities.</p>
<p>As charitable organization, the ASF is funded through <a href="/foundation/contributing.html">tax-deductible contributions</a> from corporations, foundations, and private individuals. The ASF runs a very lean operation, spending 10% or less on overhead. Critical Infrastructure support services keep Apache bandwidth, connectivity, servers, and hardware running 24x7x365 at near 100% uptime for less than US$5K per project annually. Donations to the ASF also help offset day-to-day operating expenses such as legal and accounting services, brand management, public relations, and general office expenditures.</p>
<p>Hailed for nearly two decades as a leading source for Open Source software and tools that meet the demand for <a href="https://s.apache.org/gK4Q">interoperable, adaptable, and sustainable solutions</a>, the <a href="/board/plan.html">ASF is developing a 5-year strategic plan</a> and budget to help sustain the development of community-driven innovations for the next 20+ years.</p>
<h2 id="news">News and Announcements<a class="headerlink" href="#news" title="Permalink">&para;</a></h2>
<p>Official ASF press releases can be found on the
<a href="https://blogs.apache.org/foundation/">Foundation</a> blog, with archives of <a href="/foundation/news.html">our announcements from 1999-2010</a> also available. Additional news updates are posted on the
<a href="http://twitter.com/TheASF">@TheASF Twitter feed</a>,
the <a href="http://twitter.com/apachecon">@ApacheCon Twitter feed</a>, as well as the
<a href="/foundation/mailinglists.html#foundation-announce">Apache Announce Lists</a>.</p>
<p>Please <a href="mailto:press@apache.org?subject=[Press%20request]%20Please%20send%20news%20information">contact us</a>
to be added to the media briefing list on ASF-related activities.
Note that participation in the specific press program is restricted to credentialed
members of the press and analyst community only.</p>
<h2 id="timeline">Timeline/Fast Facts<a class="headerlink" href="#timeline" title="Permalink">&para;</a></h2>
<ul>
<li><a href="highlights.html">ASF Highlights: 1999-2009</a>
(This does not represent every activity within the Foundation;
please refer to the comprehensive list of
<a href="/">ASF Top Level Projects</a>
for detailed history of individual projects.)</li>
<li><a href="/foundation/">Overview on The ASF</a></li>
<li><a href="/foundation/board/">The Board</a></li>
<li><a href="/foundation/governance/">Foundation Governance</a></li>
<li><a href="/foundation/members.html">The Membership</a></li>
<li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
<li><a href="/foundation/how-it-works.html#management">"The Apache Way"</a></li>
<li><a href="/foundation/how-it-works.html#meritocracy">Meritocracy</a></li>
<li><a href="/foundation/how-it-works.html#incubator">Project Incubation</a></li>
<li><a href="/foundation/sponsorship.html">Sponsorship</a></li>
</ul>
<h2 id="interviews">Interview and Analyst Briefing Requests<a class="headerlink" href="#interviews" title="Permalink">&para;</a></h2>
<p>Lauded as one of the most compelling communities in Open Source, The
Apache Software Foundation frequently works with members of the
media and industry analysts as experts on a broad range of
technology, development, and community issues. We are happy to
serve as a resource to editors and analysts; provide quotes from
ASF executives and Project Management Committee members; review
upcoming articles for accuracy of Apache-related facts; and provide
industry insight to select organizations.</p>
<p>Kindly note that The ASF is vendor-neutral: we are unable to provide any
statements that endorse, promote, or advertise the capability,
credibility, or quality of any technology, product, or service.
Please <a href="mailto:press@apache.org?subject=[Press%20request]%20Briefing%20requests">contact us</a>
for assistance.</p>
<h2 id="releases">Press Release Review Process<a class="headerlink" href="#releases" title="Permalink">&para;</a></h2>
<p>Any press release or news announcement that refers to The ASF and/or
its projects must be reviewed and approved by the VP, Marketing and Publicity in
advance of its distribution. Our review/approval process requires
a minimum two weeks (10 business days) to review for general
content and to ensure messaging accuracy within the announcement
and supporting documents fall within our guidelines. We are
sensitive to internal approval processes and will expedite
feedback where possible. <strong>IMPORTANT:</strong> kindly notify us if you plan
to distribute your announcement in advance to the media (or hold
briefings) under embargo.</p>
<p>Please forward the document in its entirety (even if in draft stage) to
<a href="mailto:press@apache.org?subject=[Review]%20Please%20review%20this%20press%20release">press@apache.org</a>
for consideration. Note that The ASF is
vendor-neutral and does not provide any testimonials that
endorse, promote, or advertise the capability, credibility, or
quality of any technology, product, or service. If seeking a
quote from The ASF, please supply a quote that we can review and
modify: we will confirm the appropriateness of the quote, along
with the correct spokesperson for attribution. We will not
participate in announcements that contain any statements that we
perceive to be disparaging, inflammatory, or harmful.</p>
<h3 id="asf-joint-announcements">ASF Joint Announcements<a class="headerlink" href="#asf-joint-announcements" title="Permalink">&para;</a></h3>
<p>Joint announcements are rarely issued; examples of such
releases include instances where a major industry milestone or
initiative takes place, or announcing
<a href="/foundation/sponsorship.html">ASF Platinum-level Sponsorships</a>.
Sample Headlines might include: "ASF Reaches Agreement with Sun Microsystems
to Allow Open Source Java Implementations", or "Company X
Announces ASF Platinum Sponsorship". Kindly contact the VP, Marketing and Publicity
directly at <a href="mailto:press@apache.org?subject=[Review]%20Please%20review%20this%20joint%20release">press@apache.org</a> for guidelines pertaining to
headline/lead, dateline, and boilerplate use. If seeking a quote
from The ASF, please supply a quote that we can review and
modify: note that The ASF is vendor-neutral and does not provide
any testimonials that endorse, promote, or advertise the
capability, credibility, or quality of any technology, product,
or service. We will confirm the appropriateness of the quote,
along with the correct spokesperson for attribution.</p>
<h3 id="asf-supporting-announcements">ASF-Supporting Announcements<a class="headerlink" href="#asf-supporting-announcements" title="Permalink">&para;</a></h3>
<p>The following applies to those
directly involved with The ASF, for example, a company whose
employees actively participate in the development of an ASF
project, or products are based on ASF projects, or has become a
new ASF Sponsor. Sample headlines might include: "Company X Applauds the
Release of Apache ProjectName v.1.5", or "Company X Supports
Apache ProjectName with Product". The announcement may state that
employees or consultants participate in the development of an ASF
project, or serve The ASF on a Project Management Committee (PMC)
or executive level position. Such an individual may provide a
quote in the press release, but cannot imply that the statement
is on behalf of The ASF unless prior permission has been granted
and the proposed quote approved by the VP, Marketing and Publicity.</p>
<p>Another such release
would be a general industry announcement: for example, a report
on Open Source development practices or research findings that
featured
The ASF, its projects, or The Apache Way. Sample headlines might include:
"Government Study Finds New Technology Development Methods
Strongly Influenced by Open Source Best Practices". A
vendor-neutral industry-related statement or quote may be
provided by The ASF <em>only</em> with prior permission; the overall
announcement content and proposed quote must be approved by the
VP, Marketing and Publicity. The announcement must not include The ASF boilerplate,
dateline location, logo, media contacts (including agencies
acting on behalf of the ASF) may not be used in such
announcements; additionally, The ASF cannot be an active lead in
the headline or lead.</p>
<h3 id="third-party-announcements">Third Party Announcements<a class="headerlink" href="#third-party-announcements" title="Permalink">&para;</a></h3>
<p>This applies to those indirectly involved
with The ASF, for example: a company whose products and services
are based on Apache-developed projects (where the Apache project
is an "ingredient brand"), or announcing conference speakers or
special events (such as a user group meetings and trainings).
SAMPLE headlines: "Company X CEO to Deliver Keynote at
ApacheCon", or "CompanyName to hold Apache ProjectName User Group
Meeting/Training/etc.", or "CompanyName Launches Product Powered
by Apache ProjectName".</p>
<p>The ASF is vendor-neutral and does not provide any testimonials that
endorse, promote, or advertise the capability, credibility, or
quality of any technology, product, or service. A quote cannot be
provided by The ASF, <em>except under very rare circumstances</em> with
the overall announcement and proposed quote approved by the VP, Marketing and Publicity.
The announcement must not include The ASF boilerplate, dateline
location, logo, media contacts (including agencies acting on
behalf of The ASF). In addition, The ASF cannot be an active lead
in the headline, nor can the announcement state that the third
party is in partnership with or jointly announces to do something
together with The ASF.</p>
<h2 id="project-guides">Publicity Guidelines for Apache Top-Level Projects<a class="headerlink" href="#project-guides" title="Permalink">&para;</a></h2>
<p>Apache projects and their communities are encouraged to actively build awareness of their project and activities through emails, blog posts, tweets, and other means of outreach. Educational opportunities include ApacheCon, MeetUps, videos, podcasts, articles, third party conferences, and related community events.</p>
<p>Whilst speaking with members of the media and analyst community, projects must be referred to as "Apache <em>Project Name</em>" as per the <a href="/foundation/marks/#guidelines">ASF Branding Guidelines</a>. Be prepared to answer "who uses you?": as a project&rsquo;s known user base grows, PMCs are welcome to promote their users in a "Powered By" page like the <a href="https://cwiki.apache.org/confluence/display/hadoop2/PoweredBy">Apache Hadoop Powered By page</a>.  Create and encourage project supporters to utilize the project&rsquo;s <a href="/foundation/press/kit/#poweredby">"Powered By" logo</a>. Ensure that the project maintains <a href="/press/media.html#interviews"><strong>vendor neutrality</strong></a>, particularly when referring to project users.</p>
<p>Projects are advised to prepare news announcements and hone their messaging privately within their PMCs (keeping the content confidential to the PMC, and not on dev@, user@ or any other public list or forum) to ensure that the public or press don&rsquo;t scoop your story before it&rsquo;s out or publish inaccurate information. At times messaging changes, features are unable to be delivered as intended, testimonials need adjusting, and so on, and it&rsquo;s best to minimize the chances of your story to get out with incorrect information, or for nobody to recognize your news story because it was covered earlier and is therefore no longer considered newsworthy.</p>
<p>Projects should refrain from issuing announcements under embargo. Pre-announcing project features or release dates to members of the media is risky, as not all journalists or outlets honor confidentiality requests in general, or adhere to embargo dates/requirements. Furthermore, many journalists are unable or unwilling to fulfill requests for retractions or corrections. Be aware, be careful.</p>
<p>Apache PMCs are responsible for the "care and feeding" of a project&rsquo;s code, community, and communications on a day-to-day basis. Projects are recommended to:</p>
<ul>
<li>Review and adhere to the Publicity Guidelines for Top-Level Projects as described here</li>
<li>Ensure your <a href="https://projects.apache.org/">project listing and DOAP (Description Of A Project) file</a> accurately reflect what the project is about --be succinct, particularly with the short description (note that the project may fall under one category): this helps those unfamiliar with your project be able to find you. The longer project description should be used as the official project boilerplate ("About Apache <em>Project Name</em>") and, for consistency, be included in official news announcements, media briefings, and other applications (the ASF Boilerplate is for Foundation-originating press releases and is <strong>not</strong> to be used in any project announcements);</li>
<li>Upload a high-resolution version of your project&rsquo;s logo at <a href="/logos/">apache.org/logos/</a>;</li>
<li>Contact ASF Infrastructure to establish a <a href="https://blogs.apache.org/_PROJECTNAME">https://blogs.apache.org/_PROJECTNAME</a>_ project blog directory (and admin/publishing credentials);</li>
<li>Request a project interview on <a href="https://feathercast.apache.org/">Feathercast, the voice of the ASF</a>;</li>
<li>Gain additional exposure by posting newsworthy project updates and milestones to <a href="/foundation/mailinglists.html#foundation-announce">announce(at)apache(dot)org</a>; these will be added to the Apache Weekly News Round-Ups which is also sent to members of the media and analyst community;</li>
<li>Establish a Twitter (and/or other social media) account(s) with a handle that includes "Apache" or "ASF" with the project name and description (example at <a href="https://twitter.com/ApacheAccumulo">https://twitter.com/ApacheAccumulo</a> ) --share information often, and point to your project Website and mailing list archives where possible;</li>
<li>Participate in Media &amp; Analyst Training (held during ApacheCon; complimentary for Apache Committers and Members); and</li>
<li>Comply with guidelines for "founding" individuals, organizations, and communities of Apache projects as applicable (detailed below).</li>
</ul>
<p>No formal press releases or announcements can be made by a third party on behalf of an Apache project --for example, "Company ABC announces new features in Apache Project Name" (or including it as part of upcoming features/support in their own products). However, interested parties may issue supporting announcements with pointers to official project-originating news providing that a link to the corresponding mailing list(s) and/or blog post is included. Third parties are prohibited from using the official ASF Boilerplate or project boilerplates in their press releases or announcements unless authorized by ASF Marketing &amp; Publicity.</p>
<p>Guidelines for "founding" individuals, organizations, and communities of Apache Projects: many projects enter the Apache Incubator with a recognized individual founder, a group of founders, or a corporate entity where the project originated and/or which was responsible for its development/administration. The ASF is vendor neutral: all Apache projects are overseen by their respective Project Management Committees (PMCs), who guide the project's day-to-day operations. Once a project comes to the ASF, its development and oversight is the responsibility of the project&rsquo;s PMC and community. There are no "owners" of any Apache project. Individuals and companies who founded projects that are now under the auspices of the ASF may be referred to as "original creator of Apache Project Name" or "original developer of Apache Project Name". Examples: 1) individual&rsquo;s title --"Individual&rsquo;s Name, Apache Member (or Committer) and original developer of Apache Project Name"; 2) company whose founders or employees are the original creators of an Apache project --"Company Name, founded by the original creators of Apache Project Name..." or "several Company Name team members are the original developers of Apache Project Name...".</p>
<p>The ASF Marketing &amp; Publicity team is happy to work with organizations as they relate to Apache projects and their overall involvement with the ASF, particularly those with "original developers" status. The <a href="/foundation/press/Project-PR-BrandGuidelines.pdf">publicity/brand/communications guidelines created by Databricks</a> serve as a "good practice" model for other Apache-focused organizations to emulate.</p>
<h2 id="apache-feather-and-project-logos">Apache Feather And Project Logos<a class="headerlink" href="#apache-feather-and-project-logos" title="Permalink">&para;</a></h2>
<p>Note that as a distributed organization, each individual Apache project manages
their own logos and trademarks.  High quality images of the ASF's logo
and selected Powered By logos available for third party use under certain cases
are available on our <a href="/foundation/press/kit/">Press Kit page</a>.</p>
<p>Kindly note that all Apache project logos and names are <a href="/foundation/marks">trademarks of the ASF</a>.</p>
<h2 id="whoweare">Who We Are<a class="headerlink" href="#whoweare" title="Permalink">&para;</a></h2>
<p><a href="index.html">The Apache Press Team</a>
is responsible for overall media and analyst relations,
as well as any related inquiries.
The Apache Press Team is led by our <a href="https://www.apache.org/foundation/#who-runs-the-asf">VP, Marketing and Publicity</a>.
Members of the Apache Press Team are carefully selected members of the
ASF membership who monitor the press@ list and are available to speak
with reporters.</p>
<h2 id="contact">Contact The ASF Press Team<a class="headerlink" href="#contact" title="Permalink">&para;</a></h2>
<p>Email <strong><a href="mailto:press@apache.org?subject=[Contact]%20Media%20question">press@apache.org</a></strong>
with all media-related inquiries. Please be sure to include
the following information:</p>
<ul>
<li>First and Last Name (surname)</li>
<li>Company/Publication</li>
<li>Daytime phone and email address</li>
<li>Topic of Inquiry (e.g., HTTP Server, Big Data, Sponsorship, Foundation structure, etc.)</li>
<li>Request (please provide as much detail as possible e.g., interview, general inquiry, analyst briefing, background information, fact-checking, resource support, request to be added to briefing list etc.)</li>
<li>Interview Format (phone, in-person, email, etc.; please also specify the language of the final interview if other than English)</li>
</ul>
<p><strong>Timeframe/Deadline</strong>
We will endeavor to respond to your inquiry within two business days; however, as The ASF is an international collective of volunteers, additional time may be needed to secure the appropriate spokespeople.</p>
<p><strong>For all other (non-media) related questions, please see:</strong></p>
<ul>
<li><a href="/foundation/mailinglists.html">All <strong>technical</strong> questions about our projects</a>
-- should be addressed to the appropriate project mailing list.</li>
<li><a href="/foundation/marks">Brand, Trademark and Logo Usage</a>
-- if you're planning to use The ASF logos or trademarks, or to report misuse of The ASF brand.</li>
<li><a href="/legal/">Legal or Licensing questions</a>
-- Questions related to the Apache license, or legal issues requiring a response from the ASF or an Apache project.</li>
<li><a href="/foundation/sponsorship.html">Sponsorship Program</a>
-- if you're interested in becoming a sponsor of The ASF.</li>
<li><a href="/foundation/contributing.html#how-to-donate">Fundraising at The ASF</a>
-- if you're looking for other ways to donate to The ASF.</li>
</ul>
<p>*[ASF]: Apache Software Foundation</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="/foundation/policies/privacy.html">Privacy Policy</a></li>
            <li><a href="/licenses/exports/">Export Information</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

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

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

  </footer>

  <!-- / Footer -->

  <script src="/js/jquery.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>