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

      <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="/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>