<!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 Software Foundation Trademark Policy</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">    <h1 id="apache-software-foundation-trademark-policy">Apache Software Foundation Trademark Policy<a class="headerlink" href="#apache-software-foundation-trademark-policy" title="Permalink">&para;</a></h1>
<p>This document outlines the <strong>policy for allowable uses of Apache&reg; Software Foundation trademarks
by other parties</strong>.</p>
<p>The Apache Software Foundation (ASF) owns all ASF-related
trademarks, service marks, and graphic logos on behalf of our project communities, and
the <strong>names of all ASF projects are trademarks of the ASF</strong>.</p>
<p>The following information helps ensure our marks and logos are used in
approved ways by other parties, so we can legally protect our project brands
and encourage third parties to use ASF software and our brands in approved
ways. <a href="/foundation/marks/contact">Contact us</a> with any questions
about this policy or about ASF trademarks, and <strong>read our
<a href="/foundation/marks/resources">list of trademark resources</a></strong>.</p>
<h2 id="trademark-policy-quick-links">Trademark Policy Quick Links<a class="headerlink" href="#trademark-policy-quick-links" title="Permalink">&para;</a></h2>
<ul>
<li>
<p><a href="#rationale">Rationale</a></p>
</li>
<li>
<p><a href="#principles">Description of Key Trademark Principles</a></p>
</li>
<li>
<p><a href="#guidelines">Specific ASF Trademark Policies</a></p>
<ul>
<li>
<p><a href="#products">Policy for Software Products</a></p>
</li>
<li>
<p><a href="#books">Policy for Published Books or Articles</a></p>
</li>
<li>
<p><a href="#domains">Policy for Domain Names</a></p>
</li>
<li>
<p><a href="#events">Policy for Events</a></p>
</li>
</ul>
</li>
<li>
<p><a href="list">List of ASF Trademarks</a></p>
</li>
<li>
<p><a href="faq">Frequently Asked Questions</a></p>
</li>
<li>
<p><a href="#whoweare">Who We Are</a></p>
</li>
<li>
<p><a href="resources">More ASF Trademark Resources</a></p>
</li>
</ul>
<h2 id="rationale">Rationale<a class="headerlink" href="#rationale" title="Permalink">&para;</a></h2>
<p>ASF trademarks, service marks, and graphics marks are symbols of the
quality and community support that people have come to associate with
projects of the ASF. To ensure that the use of ASF
marks does not lead to confusion about our software, we must control their
use in association with software and related services by other organizations.
Also, as a US based corporation, we have a legal responsibility and the
authority to set policy for the use of our marks.</p>
<p>The Apache Software Foundation and our many software products must be clearly
distinguishable from any software that competes with ASF software, and from
software or services by any company or individual that is not part of
the ASF.</p>
<p>Apache Software Foundation trademarks must not be used to disparage the ASF, our
projects, members, sponsors, or communities, nor be used in any way to imply
ownership, endorsement, or sponsorship of any ASF-related project or
initiative of any kind.  We are a vendor-neutral organization, and an important part of
our brand is that <a href="//community.apache.org/projectIndependence">ASF projects are governed independently</a>.</p>
<h2 id="principles">Description of Key Trademark Principles<a class="headerlink" href="#principles" title="Permalink">&para;</a></h2>
<p>This section is not intended to summarize the complex law of trademarks. However,
it may help you understand some key principles.  More
information is on our <a href="/foundation/marks/resources">trademark resources listing</a>.</p>
<p><strong>What is a trademark?</strong></p>
<p>A <strong>trademark</strong> is a word, phrase, symbol or design, or a combination of
words, phrases, symbols or designs, that identifies and distinguishes the
source of the goods of one party from those of others. A <strong>service mark</strong>
is the same as a trademark, except that it identifies and distinguishes the
source of a service rather than a product. Throughout this document,
the terms "trademark" and "mark" refer to both trademarks and service
marks.</p>
<p>These rules are generalized to describe ASF software associated with the
trademark "Apache <em>ProjectName</em>", or more generally "<em>ProjectName</em>" when it is understood to
refer to our specific Apache <em>ProjectName</em> software product. Like most ASF software, this
<em>ProjectName</em> software is maintained by the Apache <em>ProjectName</em> project, or by the <em>ProjectName</em>
sub-project of another project, such as the "Apache Incubator" (itself an
ASF trademark).</p>
<p>ASF's trademarks are either words (e.g., "Apache" and "Apache <em>ProjectName</em>" and
"<em>ProjectName</em>") or graphic logos that are intended to serve as trademarks for that
ASF software. The ASF feather is also an ASF trademark for Apache
software which has special meaning for ASF and special rules regarding its
use.</p>
<p>Within the ASF, during our product release activity and on ASF websites, we
make sure that our trademarks are marked with a (TM) or (R) symbol or
shown with trademark notices where appropriate so that everyone can
recognize them as ASF trademarks. We provide a <a href="list">list of ASF
trademarks</a>, and a <a href="/foundation/marks/guide">detailed guide on how to refer to ASF brands</a>.</p>
<p><strong>What is nominative use?</strong></p>
<p>Anyone can use ASF trademarks if that use of the trademark is nominative.
The "nominative use" (or "nominative fair use") defense to trademark
infringement is a legal doctrine that authorizes everyone (even commercial
companies) to use another person's trademark as long as the use meets three requirements:</p>
<ol>
<li>
<p>The product or service in question must be one not readily identifiable
without use of the trademark (for example, it is not easy to identify
Apache Hadoop&reg; software without using the trademark "Hadoop").</p>
</li>
<li>
<p>Only so much of the mark or marks may be used as is reasonably necessary
to identify the product or service.</p>
</li>
<li>
<p>The organization using the mark must do nothing that would, in
conjunction with the mark, suggest sponsorship or endorsement by the
trademark holder.</p>
</li>
</ol>
<p>The trademark nominative fair use defense is intended to encourage people
to refer to trademarked goods and services by using the trademark itself.
This trademark defense has nothing to do with copyright fair use and should
not be confused with those rules.</p>
<p><strong>What is the "confusing similarity" or "likelihood of confusion" test?</strong></p>
<p>Some uses of another person's trademark are nominative fair use, but some
uses are simply infringing. Indeed, if someone uses a trademark in a way
that the relevant consuming public will likely be confused or mistaken
about the source of a product or service sold or provided, likelihood of confusion exists and the mark has been
infringed.</p>
<p>Note that, even if there is no likelihood of confusion, you may still be
liable for using another company's trademark if you are blurring or
tarnishing their mark under the state and/or federal dilution laws.</p>
<p>To avoid infringing ASF's marks, you should verify that your use of our
marks is nominative and that you are not likely to confuse software
consumers that your software is the same as ASF's software or is endorsed
by ASF. This policy is already summarized in section 6 of the <a href="/licenses/">Apache
License</a> , and so it is a condition for your use of ASF
software:</p>
<blockquote>
<p>This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.</p>
</blockquote>
<h2 id="guidelines">Specific ASF Trademark Policies<a class="headerlink" href="#guidelines" title="Permalink">&para;</a></h2>
<p>The following Specific Policies apply to the "Apache" word trademark and
the "ASF feather" graphic trademark, as well as the trademarks and
graphic logos for all "Apache <em>ProjectName</em>" and "<em>ProjectName</em>" software produced by each
of the ASF's projects.  You may refer to our
<a href="/foundation/marks/list/">list of ASF marks</a>.</p>
<p>Examples of permitted nominative fair use:</p>
<ul>
<li>
<p>"Free copies of Apache <em>ProjectName</em> software under the Apache License and support
services for Apache <em>ProjectName</em> are available at my own company website."</p>
</li>
<li>
<p>"Derivative works of Apache <em>ProjectName</em> software and support services for those
derivative works are available under my own trademarks at my website."
Remember that, under trademark law, you may not apply trademarks to
your derivative works of <em>ProjectName</em> software that are confusingly similar to "<em>ProjectName</em>"
or "Apache <em>ProjectName</em>" or the <em>ProjectName</em> graphic logo trademarks.</p>
</li>
<li>
<p>"<em>ProjectName</em> software is faster (or slower) than Myco software."</p>
</li>
<li>
<p>"I recommend (or don't recommend) <em>ProjectName</em> software for your business."</p>
</li>
<li>
<p>"This &lt;here&gt; is the graphic logo for Apache <em>ProjectName</em> software."</p>
</li>
<li>
<p>The ASF prefers you use the <a href="/foundation/marks/guide">full Apache <em>ProjectName</em> name</a> for all our projects.</p>
</li>
</ul>
<h3 id="products">Using ASF Trademarks in software product branding<a class="headerlink" href="#products" title="Permalink">&para;</a></h3>
<p>In general you may <a href="/foundation/marks/faq/#products"><strong>not</strong> use ASF trademarks in any software product branding</a>.
However in very specific situations you may use the <a href="/foundation/marks/faq/#poweredby">Powered By naming form</a> for software products.</p>
<h3 id="books">Using ASF Trademarks in published books and articles<a class="headerlink" href="#books" title="Permalink">&para;</a></h3>
<p>You may write about Apache Foo software, and use our trademarks in book or
article titles. You needn't ask us for permission to refer to Foo (ProjectName), as in
"Foo for Dummies", or "Explaining Foo", or "Foo Simplified", or "O'Reilly
Guide to Foo", or even "Avoiding Foo".</p>
<p>We prefer that you refer to "Apache Foo" rather than simply "Foo" in the
title if it fits, and we request that you clearly identify that "Apache",
"Apache Foo", and "Foo" are trademarks of the Apache Software Foundation
wherever you normally acknowledge important trademarks in your book or
article.</p>
<p>For more details, please see our <a href="faq/#booktitle">FAQ about ASF marks in publishing</a>.</p>
<p><strong>Using the ASF feather logo to identify the ASF and link to
<a href="/">www.apache.org</a> :</strong></p>
<p>The ASF feather logo is a special trademark for the members of the Apache
Software Foundation and we intend to prevent its use in association with
other companies' software or related services.</p>
<p>You needn't ask us for permission to use the ASF feather logo (the
version published by us <a href="/foundation/press/kit/">here</a> ) on your own
website solely as a hyperlink to <a href="/">www.apache.org</a> or to an appropriate ASF project, or in other materials,
such as presentations and slides, solely as a means to refer to the ASF itself.</p>
<p>The VP, Brand Management or a member of the Brand Management Committee  must <a href="/foundation/marks/contact#other">approve in writing</a> all other uses of the ASF feather logo.</p>
<p><strong>Using the Apache Foo or similar project graphic logos:</strong></p>
<p>Artists contribute graphic logos to ASF as a way to create a
symbol to identify the ASF project's software. Examples
of logos are the Hadoop elephant, the SpamAssassin arrow, or even the
graphic way that the word "Maven" is spelled with an orange letter "a".
Those graphic logos are special to the ASF projects that use them to mark their
software and their project websites.</p>
<p>You needn't ask us for permission to use the ASF's graphics logos (the
versions published on individual project's websites) on your own website
solely as a hyperlink to the specific ASF project website or to
<a href="/">www.apache.org</a>. The VP, Brand Management, a
member of the Brand Management Committee, or the relevant Apache
project's VP  must <a href="/foundation/marks/contact">approve in writing</a> all other uses of Apache Foo (and similar) graphic
logos.</p>
<p>Unlike ASF's word trademarks (such as "Apache" and "Foo"), our graphic
logos are licensed to the public under the Apache License. That
license permits you to create derivative works of those logos, as with any
other ASF copyrighted work. However, trademark law does not allow you to
apply any "confusingly similar" derivative logo to software if a relevant
consumer would likely be confused by your use of that derivative logo.</p>
<p>If you have any questions or concerns about the use of or changes to any
ASF graphic trademark, <a href="/foundation/marks/contact">contact us</a></p>
<p><strong>Using ASF trademarks on merchandise:</strong></p>
<p>You must obtain prior <a href="/foundation/marks/contact#swag">written approval</a> from the VP, Brand Management
or designee to apply the "Apache", "Apache Foo" or "Foo" trademarks or their graphic
logos to any merchandise that is intended to be associated in people's
minds with Apache Foo software or any ASF software.</p>
<p>The ASF may grant permission to apply ASF trademarks (including graphic logos) for merchandise that promotes the Apache Software Foundation, the Apache
Foo project or Foo software.</p>
<p>Permission to apply ASF trademarks will ordinarily be denied for
merchandise that disparages ASF software or projects or that would serve
to detract from the value of ASF software and its brands.</p>
<p><strong>The following uses of ASF trademarks are probably infringing:</strong></p>
<ul>
<li>
<p>Confusingly similar software product names.</p>
</li>
<li>
<p>Software service offerings that are for anything other than official
ASF-distributed software.</p>
</li>
<li>
<p>Company names that may be associated in customer's minds with ASF or its
trademarked project software.</p>
</li>
</ul>
<h3 id="domains">Using ASF Trademarks in domain names<a class="headerlink" href="#domains" title="Permalink">&para;</a></h3>
<p>You may not use ASF trademarks such as "Apache" or "ApacheFoo" or "Foo" in
your own domain names if that use would be likely to confuse a relevant
consumer about the source of software or services provided through your
website, without written approval of the VP, Brand Management or designee. You
should apply the "likelihood of confusion" test described above, and please
realize that the use of ASF trademarks in your domain names is generally not
"nominative fair use."</p>
<p>For more details and to request approvals, please see our
<a href="/foundation/marks/domains.html">Domain Name Branding Policy</a>.
In particular, using ASF product names as second level domain names (<em>example</em>.com) is not allowed.</p>
<h3 id="events">Using ASF Trademarks in relation to conferences and events<a class="headerlink" href="#events" title="Permalink">&para;</a></h3>
<p>Certain ASF trademarks are reserved exclusive for
official Apache Software Foundation activities. For example, "ApacheCon" is
our exclusive trademark for our regular ASF conferences, and the ASF
feather is intended for ASF use at events in which we participate.</p>
<p>Individual ASF projects (such as "Apache Foo") often create their own
conferences and events, or join with other organizations or companies to
hold joint conferences or events. Any conflicting use of ASF trademarks
(including trademarks related to our projects or products) in relation to
conferences or events must be approved in writing from the VP,
Brand Management or designee.</p>
<p>For more details and to request approvals, please see our
<a href="/foundation/marks/events.html">Event Branding Policy</a>.
Please request approvals well in advance to avoid ApacheCon blackout dates.</p>
<h2 id="whoweare">Who We Are<a class="headerlink" href="#whoweare" title="Permalink">&para;</a></h2>
<p>The <a href="/foundation/">VP, Brand Management</a> and associated Brand Management
Committee is the formal body within the ASF responsible for setting policy
and answering questions about the use of our logos and trademarks, along
with other responsibilities. The Committee is made up of elected members of
the ASF who have shown merit in the branding and trademarks areas. The
current VP, Brand Management is Mark Thomas, as appointed by the
President to serve in this position.  See a <a href="/foundation/marks/contact">list of committee members and how to contact us</a>.</p>
<p><a class="twitter-follow-button" data-dnt="true" data-show-count="false" href="https://twitter.com/ASFBrands">Follow @ASFBrands</a> <script>!function(d,s,id)  {var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<noscript>(Note: Twitter requires JavaScript, which is not currently enabled)</noscript></p>
<h2 id="notes">Important Note<a class="headerlink" href="#notes" title="Permalink">&para;</a></h2>
<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 or services.</strong></p>
<h2 id="version">Policy Version<a class="headerlink" href="#version" title="Permalink">&para;</a></h2>
<p>This is version 1.2 of this ASF policy document, published in March 2021. We will mark significant changes with a new version number.</p>
<p><strong>v1.1</strong> Update to have permissions by VP, Brand Management <strong>or</strong> designee</p>
<p><strong>v1.2</strong> Update to use ASF to refer to the 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="/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>