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

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

<body >
  <!-- Navigation -->
  <header>
	<div id="skiptocontent">
		<a href="#maincontent">Skip to Main Content</a>
	</div>
    <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
      <div class="container">
        <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <div class="collapse navbar-collapse" id="mainnav-collapse">
          <ul class="nav navbar-nav navbar-justified">
            <li><a href="/index.html#news">News</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation">Overview</a></li>
                <li><a href="/foundation/how-it-works.html">Process</a></li>
                <li><a href="/foundation/governance/">Governance</a></li>
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="/foundation/governance/members.html">Membership</a></li>
                <li><a href="https://community.apache.org/">Community</a></li>
                <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/foundation/glossary.html">Glossary</a></li>
				  <li><a href="/apache-name">About Our Name</a></li>
                <li><a href="/foundation/preFAQ.html">FAQ</a></li>
                <li><a href="/foundation/contributing.html">Support Apache</a></li>
                <li><a href="/press/">Media/Analysts</a></li>
                <li><a href="/foundation/contact.html">Contact</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation/contributing.html">Donate Now</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li>
                <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li>
                <li><a href="https://smile.amazon.com/gp/chpf/homepage/ref=smi_se_scyc_srch_stsr?q=apache+software+foundation&orig=%2F">Shop smile.amazon.com</a></li>
                <li><a href="/foundation/sponsorship.html">ASF Sponsorship</a></li>
                <li><a href="/foundation/thanks#targeted-sponsors">Targeted Sponsorship</a></li>
                <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">The Apache Way&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="https://s.apache.org/GhnI">Sustainable Open Source</a></li>
                <li><a href="/foundation/how-it-works.html">How it Works</a></li>
                <li><a href="/foundation/how-it-works.html#meritocracy">Merit</a></li>
                <li><a href="https://blogs.apache.org/foundation/category/SuccessAtApache">Success at Apache</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">Join Us&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://community.apache.org/gettingStarted/101.html">Getting Started</a></li>
                <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                <li><a href="https://www.apachecon.com/">ApacheCon</a></li>
                <li><a href="http://community.apache.org/calendars/">Community Events</a></li>
                <li><a href="/travel/">Travel Assistance</a></li>
                <li><a href="https://community.apache.org/gsoc.html">Summer of Code</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="https://community.apache.org/contributors/etiquette">Etiquette</a></li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/index.html#projects-list">Project List</a></li>
                    <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
                    <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
                    <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
                    <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
                    <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
                    <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
                    <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
                    <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="/foundation/marks/">Brand Management</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
                    <li><a href="/foundation/members.html">Members</a></li>
                    <li><a href="https://community.apache.org/contributors/">Committers</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Officers  &amp; Project VPs</a></li>
                    <li><a href="https://community.zones.apache.org/map.html">Location Map</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://people.apache.org/">Committer Directory</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="https://community.apache.org/about/">Community Development</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://community.apache.org/">Get Involved</a></li>
                    <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
                    <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
                    <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/dev/infrastructure.html">Infra overview</a></li>
                    <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
                    <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
                    <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
                    <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
                    <li><a href="/foundation/marks/list/">Trademarks</a></li>
					<li><a href="/licenses/exports/">Exports</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
                    <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
                    <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
                    <li><a href="/foundation/contributing.html">Individual Donations</a></li>
                    <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
                  </ul>
                </li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Downloads&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://downloads.apache.org/">Distribution</a></li>
                <li><a href="https://projects.apache.org/releases.html">Releases</a></li>
                <li><a href="https://status.apache.org/">Infrastructure Status</a></li>
                <li><a href="/uptime/">Infrastructure Statistics</a></li>
              </ul>
            </li>
            <li class="dropdown hidden-xs">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"><span class="glyphicon glyphicon-search"
                  aria-hidden="true"></span><span class="sr-only">Search</span></a>
              <ul class="dropdown-menu search-form" role="search">
                <li>
                  <div class="input-group" style="width: 100%; padding: 0 5px;">
                    <script async src="https://cse.google.com/cse.js?cx=cb41d2753d228d8b7"></script>
                    <div class="gcse-search"></div>
                  </div>
                </li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </header>
  <!-- / Navigation -->
  <header id="main-header" class="container">
    <div class="sideImg">
          <a class="visible-home" href="https://events.apache.org/x/current-event.html">
            <img class="img-responsive" style="width: 125px;" src="/events/current-event-125x125.png" alt="Apache Events"/>
<!-- STALE: <img class="img-responsive" style="width: 125px;" src="https://www.apachecon.com/event-images/default-square-light.png" alt="ApacheCon 2021 Coming Soon!" /> -->
          </a>
      <a class="hidden-home" href="/"><img class="img-responsive" src="/img/asf-estd-1999-logo.jpg" alt="The Apache Software Foundation"></a>
    </div>
    <div class="main">
      <img class="img-responsive center-block visible-home" src="/img/asf-estd-1999-logo.jpg" alt="Apache 20th Anniversary Logo">
      <h2 class="text-center">Community-led development "The&nbsp;Apache&nbsp;Way"</h2>
      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
    <div class="sideImg">
      <a href="/foundation/contributing.html"><img class="img-responsive" src="/img/support-apache.jpg" alt="Apache Support Logo" /></a>
    </div>
  </header>
  <main id="maincontent">
<div class="container">    <p>This document answers some of Frequently asked questions (FAQs) about the
ASF's trademarks and their allowable uses. Be sure to review our
<a href="/foundation/marks/">formal Trademark Policy</a> document, which outlines important requirements for any uses of Apache project
marks.</p>
<p>The following information helps ensure our marks and logos are used in
approved ways, while making it easy for the community to understand the
guidelines. If you have any questions about the use of logos or trademarks, see our <a href="/foundation/marks/resources">trademark resources</a>
or <a href="/foundation/marks/contact">contact us</a>.</p>
<p><strong>Contents</strong></p>
<div class=".pull-right" style="float:right; border-style:dotted; width:200px; padding:5px; margin:5px">
<p>See Also: <a href="/foundation/marks/resources">Trademark Resources Site Map</a>.</p>
</div>
<div id="toc"><ul><li><a class="toc-href" href="#obvious" title="Are Apache&reg; project names and logos trademarks?">Are Apache&reg; project names and logos trademarks?</a></li><li><a class="toc-href" href="#guide" title="How should I refer to Apache software product names?">How should I refer to Apache software product names?</a></li><li><a class="toc-href" href="#attribution" title="How should I provide attributions of Apache marks?">How should I provide attributions of Apache marks?</a></li><li><a class="toc-href" href="#booktitle" title="May I use Apache marks in the title or cover of published books?">May I use Apache marks in the title or cover of published books?</a></li><li><a class="toc-href" href="#integrateswith" integrates="" or="" s="" software="" supports?'="" title="May I display Apache product logos on my website or marketing materials for ASF software products that my organization" with="">May I display Apache product logos on my website or marketing materials for ASF software products that my organization's software integrates with or supports?</a></li><li><a class="toc-href" href="#products" title="May I use Apache marks (names, logos) in software product names?">May I use Apache marks (names, logos) in software product names?</a></li><li><a class="toc-href" href="#poweredby" title="May I use Apache Powered by... marks or logos in software product names or logos?">May I use Apache Powered by... marks or logos in software product names or logos?</a></li><li><a class="toc-href" href="#titlefeather" title="May I use the Apache feather logo on the cover/title of published books, articles, or other publications?">May I use the Apache feather logo on the cover/title of published books, articles, or other publications?</a></li><li><a class="toc-href" href="#titlelogo" title="May I use Apache product logos on the cover/title of published books, articles, or other publications?">May I use Apache product logos on the cover/title of published books, articles, or other publications?</a></li><li><a class="toc-href" href="#insidebook" title="May I use Apache marks, screenshots, or program output within published books, articles, or other publications?">May I use Apache marks, screenshots, or program output within published books, articles, or other publications?</a></li><li><a class="toc-href" href="#insideuniv" title="May I use Apache marks, screenshots, or program output in academic papers, articles, or similar non-profit scholarly publications?">May I use Apache marks, screenshots, or program output in academic papers, articles, or similar non-profit scholarly publications?</a></li><li><a class="toc-href" href="#incubator" title="Should we donate project trademarks along with the code when we submit to the Apache Incubator?">Should we donate project trademarks along with the code when we submit to the Apache Incubator?</a></li><li><a class="toc-href" href="#podlingxfer" title="How do we transfer trademark rights when submitting a project to the Apache Incubator">How do we transfer trademark rights when submitting a project to the Apache Incubator</a></li><li><a class="toc-href" href="#other" title="Other trademark guidelines">Other trademark guidelines</a></li><li><a class="toc-href" href="#notes" title="Important Note">Important Note</a></li></ul></div>
<hr/>
<h1 id="obvious">Are Apache&reg; project names and logos trademarks?<a class="headerlink" href="#obvious" title="Permalink">&para;</a></h1>
<p>Yes, the names of all Apache&reg; projects, software products, and their logos are trademarks
that the Apache Software Foundation owns on behalf of our project communities.  Note that
while some Apache project names and logos are registered in the US and various countries, even unregistered names and logos
are still trademarks of the ASF and should be treated with respect.</p>
<h1 id="guide">How should I refer to Apache software product names?<a class="headerlink" href="#guide" title="Permalink">&para;</a></h1>
<p>Apache project names have the form "Apache <em>Projectname</em>", for
example Apache Hadoop&reg; and Apache OpenOffice&reg;.  Read our
<a href="/foundation/marks/guide">detailed guide for referring to Apache project and product names</a>.
Using the full "Apache <em>Projectname</em>" helps ensure that our volunteer
project communities get the credit they deserve.</p>
<h1 id="attribution">How should I provide attributions of Apache marks?<a class="headerlink" href="#attribution" title="Permalink">&para;</a></h1>
<p>To properly attribute Apache marks, and to ensure that the volunteer
communities that build Apache software get the credit they deserve,
place prominent trademark attributions wherever you use Apache marks.  On websites, add hyperlinks to the relevant
project homepage and to the ASF.  For example, to
provide an attribution for Apache Hadoop and its yellow elephant logo
(using basic HTML with hyperlinks):</p>
<blockquote>
<p>Apache&reg;, <a href="http://hadoop.apache.org/">Apache Hadoop, Hadoop&reg;</a>,
and the yellow elephant logo are either registered trademarks or trademarks
of the <a href="/">Apache Software Foundation</a>
in the United States and/or other countries.</p>
</blockquote>
<p>In text, use Apache Lucene&reg; in the first and most prominent uses because it is a registered trademark;
some other Apache project names like Apache Zookeeper&trade; are unregistered
but are still considered trademarks of the ASF.</p>
<p>Here is a complete <a href="https://whimsy.apache.org/brand/list">list of trademarks claimed by the ASF</a>.</p>
<h1 id="booktitle">May I use Apache marks in the title or cover of published books?<a class="headerlink" href="#booktitle" title="Permalink">&para;</a></h1>
<p>In general, yes, as long as you comply with the rest of Apache trademark
policies, in particular in regard to not claiming association or endorsement
of/for/by the ASF.  For more details or for explicit permissions, <a href="/foundation/marks/contact">contact us</a>.</p>
<ul>
<li>
<p>The ASF generally requires that you refer to Apache products using the
full "Apache Tomcat&reg;" form of its name, especially in prominent places like
book titles.  However, we do understand that some publishing houses may
have specific standards for book titles that prevent this for
traditionally printed and bound books.  In that case, and only for traditionally
printed and bound books,
using the bare product name as "Tomcat&reg;" is acceptable as long as there is
clear attribution of both forms of the name.</p>
</li>
<li>
<p>You must include a trademark attribution on the obverse title page or
wherever you acknowledge other trademarks and copyrights.  A
preferred attribution would be:</p>
</li>
</ul>
<blockquote>
<p>Apache&reg;, Apache Tomcat, Tomcat&reg;,
and the cat logo are either registered trademarks or trademarks
of the <a href="/">Apache Software Foundation</a>
in the United States and/or other countries. No endorsement by
The Apache Software Foundation is implied by the use of these marks.</p>
</blockquote>
<ul>
<li>
<p>You may not use the title or presentation of the book's cover, front matter, or other
contents to imply association with, endorsement of/by, or
any other exclusive or special connection with the ASF or the project's
community or product.</p>
</li>
<li>
<p>We do not require the payment of a royalty for the use of Apache marks or other IP in
regularly published books.  We certainly do appreciate royalty donations,
and a number of publishers have set up systems to donate royalties from their
books back to the ASF.  You can read more about <a href="/foundation/contributing.html">Donating to the
ASF</a>.</p>
</li>
</ul>
<h1 id="integrateswith">May I display Apache product logos on my website or marketing materials for ASF software products that my organization's software integrates with or supports?<a class="headerlink" href="#integrateswith" title="Permalink">&para;</a></h1>
<p>Yes, as long as you follow the rest of our <a href="/foundation/marks/">formal Trademark
Policy</a>.  Note that you may <a href="#products">not use
Apache product word marks</a> as part of any software product name.
In particular, you must ensure that you follow our <a href="/foundation/marks/guide">Apache name usage guide</a> and:</p>
<ul>
<li>
<p>Use the unmodified ASF product logo made available for this purpose on
the Apache website or on the ASF project's homepage. If you do not find the
ASF product logo you want in that collection, ask the ASF project team to
add it there.</p>
</li>
<li>
<p>If you describe the ASF product or project in text, use the "Apache Flink&reg;"
form of its name.</p>
</li>
<li>
<p>Do not visually combine the ASF product logo with any other images, and
do not change the appearance of ASF product logos except in cases where
it is <strong>required</strong> by a specific printing restriction (e.g. printing on paper in black and white).</p>
</li>
<li>
<p>On your website link any Apache project logo to the homepage for that Apache project on
the apache.org website.</p>
</li>
<li>
<p>Include a trademark attribution to Apache Software Foundation in an
appropriate place on every page where you identify your own trademarks.</p>
</li>
<li>
<p>Ensure that your website and marketing materials do not imply ASF
endorsement or the affiliation of your products, services, or organization
with ASF.</p>
</li>
<li>
<p>Ensure that your website and marketing materials do not confuse the
average user about the source of ASF products or imply that ASF is
associated with your products or services in any way.</p>
</li>
</ul>
<p>See also the <a href="/foundation/press/kit/">Powered By Apache logo</a> program.</p>
<h1 id="products">May I use Apache marks (names, logos) in software product names?<a class="headerlink" href="#products" title="Permalink">&para;</a></h1>
<p>No, you may <strong>not</strong> use Apache trademarks - the names of any project or software product releases from the ASF -
in the primary or secondary branding of
any third party product or service names.  For example, you may <strong>not</strong> name a product either "BigCo <em>Project</em> Thing", "BigCo distribution of <em>Project</em>",
or any similar kind of name where <em>Project</em> is any Apache mark or project name.</p>
<p>The primary mission of the ASF is to provide free software for the public
good under our Apache License. Consumer confusion over the source
of Apache software products is a serious issue for the ASF.  Both for consumers trying
to find Apache products, and for the communities and PMCs that build our
products, the name and logo association of Apache marks with our actual
project communities and products is important to us.</p>
<p>We understand the importance in our ecosystem of third parties building
software products on or in conjunction with Apache products.  If you
build such software products, see the <a href="#poweredby">next question about our
"Powered by..." program</a>.</p>
<h1 id="poweredby">May I use Apache Powered by... marks or logos in software product names or logos?<a class="headerlink" href="#poweredby" title="Permalink">&para;</a></h1>
<p>Yes, under certain circumstances, you may use the Powered by... phrase or
a project-specific <a href="/foundation/press/kit/#links">Powered by... logo</a> in direct conjunction with your
software product or service's primary branding.  This applies for all
Apache project names and the Powered By... variation (inside a circle with
Powered By Apache around the outside) of their logos.</p>
<ul>
<li>
<p>Third parties providing products or services that are supersets of the
functionality of an Apache product, or services that run atop Apache products,
may use any "Powered by..." form of the Apache brand name of the related
product.  For example, "BigCo SuperThing, Powered by Apache Spark" would be
acceptable, provided that you meet <strong>all</strong> of the other requirements:</p>
<ul>
<li>
<p>Any primary product home pages or landing pages for the SuperThing product must include a
link from the homepage named "Apache <em>Spark</em>" pointing to the actual Apache
project home page at http://<em>spark</em>.apache.org/  Note that you <strong>must</strong> include
"Apache" before the product mark.</p>
</li>
<li>
<p>You product name <strong>must</strong> consistently use the "Apache Spark" version of the Apache
product name and follow the <a href="/foundation/marks/guide">Apache <em>Project</em> brand usage guide</a>.</p>
</li>
<li>
<p>Do not visually combine the ASF product's Powered by... logo with any
other images, or change the logo in any way other than ways <strong>required</strong> by printing restrictions.</p>
</li>
<li>
<p>On your website link any Powered by... logo to the homepage for
the ASF project on the apache.org website.</p>
</li>
<li>
<p>Include a <a href="#attribution">trademark attribution</a> to the Apache Software Foundation
on the page itself (footers are acceptable; links with attributions on separate pages are <strong>not</strong>).</p>
</li>
<li>
<p>Ensure that your website and marketing materials do not imply ASF
endorsement or the affiliation of your products, services, or organization
with ASF.</p>
</li>
<li>
<p>Ensure that your website and marketing materials do not confuse the
average user about the source of ASF products or imply that ASF is
associated with your products or services in any way, other than the
fact that your product is built atop/to work with the Apache product.</p>
</li>
</ul>
</li>
<li>
<p>See also the <a href="/foundation/marks/guide">Apache <em>Project</em> brand usage guide</a> for more requirements.</p>
</li>
</ul>
<p>Various Apache projects include a "Powered by..."-specific logo for
their product(s).  If the product you are interested in doesn't provide
a Powered by... logo, ask the relevant PMC to consider creating one.</p>
<p><strong>NOTE:</strong> Use of an Apache product's normal logo (i.e. the <em>non</em> Powered-by) is
<strong>not</strong> permissible to directly denote products or services, even those
built atop an Apache product.  You must not visually combine or directly associate Apache products' normal logos with third-party product logos.</p>
<p>See also the <a href="/foundation/press/kit/">Powered By Apache logo</a>
page for details about logo usage.</p>
<h1 id="titlefeather">May I use the Apache feather logo on the cover/title of published books, articles, or other publications?<a class="headerlink" href="#titlefeather" title="Permalink">&para;</a></h1>
<p>No.  The Apache feather logo (old horizontal version, or new vertical version) is a special trademark to the members of the Apache
Software Foundation.  You may <strong>not</strong> use the feather logo on the external covers or title pages
of books or similar printed materials.</p>
<h1 id="titlelogo">May I use Apache product logos on the cover/title of published books, articles, or other publications?<a class="headerlink" href="#titlelogo" title="Permalink">&para;</a></h1>
<p>Use of Apache project logos on the external cover or title pages of books or
similar printed materials is allowed only with permission; to request
this, <a href="/foundation/marks/contact">contact us</a> with a mockup of the cover and other details about your
publication.</p>
<p>We understand the importance in our ecosystem of authors publishing
informational books about Apache products, and the value that can bring
in terms of new contributors to our communities.  However, you must take care to use Apache product logos in descriptive ways, without
implying any association or endorsement, and without implying that
your book is an official or sole source of information about any
Apache product.</p>
<h1 id="insidebook">May I use Apache marks, screenshots, or program output within published books, articles, or other publications?<a class="headerlink" href="#insidebook" title="Permalink">&para;</a></h1>
<p>In general, yes, as long as you comply with the rest of the Apache trademark
policies, in particular in regard to not claiming association or endorsement
of/for/by the ASF.  For more details or for explicit permissions when legally required, <a href="/foundation/marks/contact">contact us</a>.</p>
<ul>
<li>
<p>The ASF prefers that you refer to Apache products using the
full "Apache <em>Ignite</em>" form of the product name, at least in the first or most
prominent uses within a book, chapter, article, or other section
of a larger published work; see the <a href="/foundation/marks/guide">Apache <em>Project</em> brand usage guide</a> for details.</p>
</li>
<li>
<p>You may use screenshots, program output, and other displays created by or taken
of Apache products in use in descriptive ways in the
content of publications.  Such use may include Apache product logos
as they normally display in the product in question.</p>
</li>
<li>
<p>You must include a trademark attribution on the obverse title page or
wherever you acknowledge other trademarks and copyrights.  A
preferred attribution would be:</p>
</li>
</ul>
<blockquote>
<p>Apache&reg;, Apache Ignite, Ignite,
and the flame logo are either registered trademarks or trademarks
of the Apache Software Foundation
in the United States and/or other countries. No endorsement by
The Apache Software Foundation is implied by the use of these marks.</p>
</blockquote>
<ul>
<li>ASF does not require royalties for the use of Apache marks or other IP in
regularly-published books.  We certainly do appreciate non-targeted donations,
and a number of publishers have set up systems to donate all or part of the royalties from their
books to the ASF.  Read more about <a href="/foundation/contributing.html">Donating to the
ASF</a>.</li>
</ul>
<h1 id="insideuniv">May I use Apache marks, screenshots, or program output in academic papers, articles, or similar non-profit scholarly publications?<a class="headerlink" href="#insideuniv" title="Permalink">&para;</a></h1>
<p>Yes, as long as you comply with the rest of Apache trademark
policies, in particular in regard to not claiming association or endorsement
of/for/by the ASF.  For more details or for explicit permissions when legally required, <a href="/foundation/marks/contact">contact us</a>.</p>
<p>As long as uses of Apache trademarks or logos are clear in referring to the software
products produced by the ASF, the ASF position is that this FAQ should constitute sufficient
permissions for non-profit academic and scholarly papers and publications to use
our trademarks in all respectful ways.  We appreciate the researchers and students
who want to use Apache software products to further human knowledge.</p>
<h1 id="incubator">Should we donate project trademarks along with the code when we submit to the Apache Incubator?<a class="headerlink" href="#incubator" title="Permalink">&para;</a></h1>
<p>That depends on your goals.  Many groups donate existing projects to the
<a href="//incubator.apache.org/">Apache Incubator</a>, to become podlings and, we hope eventually become official Apache top level
projects (TLPs).  When you have an existing project that has a well-known brand
and associated trademarks or registrations, the <strong>donor</strong> needs to decide if they
also wish to donate all trademarks with the project, or if they will keep the
trademarks, and have the new podling choose a new name and brand.  For a podling to graduate and become a TLP,
the ASF must own all trademark rights to the podling's brand.</p>
<ul>
<li>
<p>If you donate the brand with the project, the ASF must have full legal ownership
of all brand elements before graduation.  It becomes an Apache brand, and the
donor will not be allowed to claim any special relationship with the trademarks going forward.</p>
</li>
<li>
<p>If you keep the brand, the podling will need to choose a new name as it starts the incubation process.  This allows you to keep the goodwill from your
existing brand, but means that the podling will likely have to work harder to grow
the diverse community that the Incubation process is designed to show.</p>
</li>
</ul>
<h1 id="podlingxfer">How do we transfer trademark rights when submitting a project to the Apache Incubator<a class="headerlink" href="#podlingxfer" title="Permalink">&para;</a></h1>
<p>One of the <em>graduation</em> criteria for podlings to TLP status is that the ASF own <strong>all</strong> trademark rights
and goodwill to the podling's brand.  Since the incubation process takes a number of
months, the recommended way to transfer trademarks and any pre-existing registrations is:</p>
<ul>
<li>
<p>In the incubation proposal, explicitly note that the donor organization is planning
to donate all trademarks and goodwill.  Include a list of all trademarks,
especially any registrations or applications outstanding.</p>
</li>
<li>
<p>After the ASF accepts the podling for incubation, has imported the code, and
published a website, have an officer of the donating organization <a href="/foundation/marks/contact">contact us</a>
via email to explicitly state that you will be transferring all trademarks.  This gives
the ASF assurance of the transfer, but does not require the donor to legally assign
the trademarks until the podling nears graduation.  Also, list the trademarks and donor
organization in the <a href="//incubator.apache.org/guides/names.html">PODLINGNAMESEARCH</a> when that issue is
created as part of the incubation process.</p>
</li>
<li>
<p>Before the podling is ready to graduate, have donor counsel <a href="/foundation/marks/contact">contact us</a>
to sign a standard trademark transfer agreement in the US, where the ASF is
headquartered.  As the ASF is a non-profit, we appreciate any assistance in processing the transfer, especially
of applications in process.  The legal transfer must be signed before
the podling can formally graduate, typically at a monthly board meeting.</p>
</li>
<li>
<p>A <strong>best practice</strong> is for a donor to submit a US or local country trademark
registration application before starting the incubation process, to secure rights to the name.<br/>
This ensures that the name will be registered and that the ASF will take over registration maintenance
once the podling graduates.  <strong>IMPORTANT:</strong> if you submit a new registration application
<em>during the incubation process</em>, you <strong>must</strong> coordinate with VP, Brand and ASF counsel.</p>
</li>
</ul>
<hr/>
<h1 id="other">Other trademark guidelines<a class="headerlink" href="#other" title="Permalink">&para;</a></h1>
<p>See our <a href="/foundation/marks/">formal Trademark Policy</a>
and our <a href="/foundation/marks/resources">site map of all Trademark resources</a>.</p>
<h1 id="notes">Important Note<a class="headerlink" href="#notes" title="Permalink">&para;</a></h1>
<p><strong>Nothing in this ASF policy statement shall be interpreted to allow any
third party to claim any association with the Apache Software Foundation or
any of its projects, or to imply any approval or support by ASF for any
third party products, services, or events.</strong></p>

</div>  </main>

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

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

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

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

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

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

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

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

  </footer>

  <!-- / Footer -->

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