<!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>

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

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

<body >
  <!-- Navigation -->
  <header>
	<div id="skiptocontent">
		<a href="#maincontent">Skip to Main Content</a>
	</div>
    <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
      <div class="container">
        <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <div class="collapse navbar-collapse" id="mainnav-collapse">
          <ul class="nav navbar-nav navbar-justified">
            <li><a href="/index.html#news">News</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation">Overview</a></li>
                <li><a href="/foundation/how-it-works.html">Process</a></li>
                <li><a href="/foundation/governance/">Governance</a></li>
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="/foundation/governance/members.html">Membership</a></li>
                <li><a href="https://community.apache.org/">Community</a></li>
                <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/foundation/glossary.html">Glossary</a></li>
				  <li><a href="/apache-name">About Our Name</a></li>
                <li><a href="/foundation/preFAQ.html">FAQ</a></li>
                <li><a href="/foundation/contributing.html">Support Apache</a></li>
                <li><a href="/press/">Media/Analysts</a></li>
                <li><a href="/foundation/contact.html">Contact</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation/contributing.html">Donate Now</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li>
                <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li>
                <li><a href="/foundation/sponsorship.html">ASF Sponsorship</a></li>
                <li><a href="/foundation/thanks#targeted-sponsors">Targeted Sponsorship</a></li>
                <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">The Apache Way&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="https://s.apache.org/GhnI">Sustainable Open Source</a></li>
                <li><a href="/foundation/how-it-works.html">How it Works</a></li>
                <li><a href="/foundation/how-it-works.html#meritocracy">Merit</a></li>
                <li><a href="https://blogs.apache.org/foundation/category/SuccessAtApache">Success at Apache</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">Join Us&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://community.apache.org/gettingStarted/101.html">Getting Started</a></li>
                <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                <li><a href="https://www.apachecon.com/">ApacheCon</a></li>
                <li><a href="http://community.apache.org/calendars/">Community Events</a></li>
                <li><a href="https://tac.apache.org">Travel Assistance</a></li>
                <li><a href="https://community.apache.org/gsoc.html">Summer of Code</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="https://community.apache.org/contributors/etiquette">Etiquette</a></li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/index.html#projects-list">Project List</a></li>
                    <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
                    <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
                    <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
                    <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
                    <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
                    <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
                    <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
                    <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="/foundation/marks/">Brand Management</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
                    <li><a href="/foundation/members.html">Members</a></li>
                    <li><a href="https://community.apache.org/contributors/">Committers</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Officers  &amp; Project VPs</a></li>
                    <li><a href="https://community.zones.apache.org/map.html">Location Map</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://people.apache.org/">Committer Directory</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="https://community.apache.org/about/">Community Development</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://community.apache.org/">Get Involved</a></li>
                    <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
                    <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
                    <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/dev/infrastructure.html">Infra overview</a></li>
                    <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
                    <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
                    <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
                    <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
                    <li><a href="/foundation/marks/list/">Trademarks</a></li>
					<li><a href="/licenses/exports/">Exports</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
                    <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
                    <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
                    <li><a href="/foundation/contributing.html">Individual Donations</a></li>
                    <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
                  </ul>
                </li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Downloads&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://downloads.apache.org/">Distribution</a></li>
                <li><a href="https://projects.apache.org/releases.html">Releases</a></li>
                <li><a href="https://status.apache.org/">Infrastructure Status</a></li>
                <li><a href="/uptime/">Infrastructure Statistics</a></li>
              </ul>
            </li>
            <li class="dropdown hidden-xs">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"><span class="glyphicon glyphicon-search"
                  aria-hidden="true"></span><span class="sr-only">Search</span></a>
              <ul class="dropdown-menu search-form" role="search">
                <li>
                  <div id="pagefind-search" class="input-group" style="width: 100%; padding: 0 5px;"></div>
                </li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </header>
  <!-- / Navigation -->
  <header id="main-header" class="container">
    <div class="sideImg">
          <a class="visible-home" href="https://events.apache.org/x/current-event.html">
            <img class="img-responsive" style="width: 125px;" src="/events/current-event-125x125.png" alt="Apache Events"/>
<!-- STALE: <img class="img-responsive" style="width: 125px;" src="https://www.apachecon.com/event-images/default-square-light.png" alt="ApacheCon 2021 Coming Soon!" /> -->
          </a>
      <a class="hidden-home" href="/"><img class="img-responsive" src="/img/asf-estd-1999-logo.jpg" alt="The Apache Software Foundation"></a>
    </div>
    <div class="main">
      <img class="img-responsive center-block visible-home" src="/img/asf-estd-1999-logo.jpg" alt="Apache 20th Anniversary Logo">

      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
 
  </header>
  <main id="maincontent">
<div class="container">    <h1 id="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="https://tac.apache.org">Travel Assistance</a></li>
            <li><a href="/foundation/getinvolved.html">Get Involved</a></li>
            <li><a href="/foundation/policies/conduct.html">Code of Conduct</a></li>
            <li><a href="http://community.apache.org/newbiefaq.html">Community FAQ</a></li>
            <li><a href="/memorials/">Memorials</a></li>
          </ul>
        </div>

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

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

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

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

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

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

  </footer>

  <!-- / Footer -->

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