<!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>Third Party Domain Name Branding 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="third-party-domain-name-branding-policy">Third Party Domain Name Branding Policy<a class="headerlink" href="#third-party-domain-name-branding-policy" title="Permalink">&para;</a></h1>
<p>This <strong>Domain Name Branding Policy</strong> defines <strong>requirements</strong> for when third
parties may be eligible to request permission to use
Apache&reg; marks in their domain names and the process
to request permission from an officer of the ASF.</p>
<h2 id="introduction">Domain Name Policy Overview<a class="headerlink" href="#introduction" title="Permalink">&para;</a></h2>
<p><strong>In general, you may not use Apache marks such as "Apache <em>Project</em>" or
"<em>Project</em>" in your own domain names</strong> if that use would be likely to confuse a
relevant consumer about the source of software or services provided through your
domain with products or services provided by Apache <em>Project</em> or the
Apache Software Foundation (ASF) as a whole.  You
should apply the "likelihood of confusion" test described in our
<a href="/foundation/marks/">formal Trademark Policy</a>,
and please realize that the use of Apache marks in third party domain names is generally not
"nominative fair use."</p>
<p>You may be eligible to <a href="#permission">Request Permission to Use Apache marks</a> in your domain name related to our products
if your domain's website content meets our requirements below and you request permission.  Thus in
some cases a website providing advice and consulting about the Apache <em>Project</em>
may be granted permission to use a domain name like <em>Project</em>Advice.com if you get
specific permission from the VP, Brand Management or the VP of Apache <em>Project</em>.
Note that podlings in the Apache Incubator may not grant permission for
third party requests for their podling trademarks, only VPs of top level projects may do so.</p>
<p>Note that this does not generally apply to our "Apache" trademark; use of that
mark in domain names that may be confusingly similar to any Apache project or
product or service is not allowed.  The Apache brand is important to all Apache projects, and
is special to the ASF as a whole, as well as being the primary way that consumers
discover our projects and products.</p>
<h2 id="links">Contents<a class="headerlink" href="#links" title="Permalink">&para;</a></h2>
<div class=".pull-right" style="float:right; border-style:dotted; width:200px; padding:5px; margin:5px">
<p>See Also: <a href="/foundation/marks/resources">Trademark Resources Site Map</a>.</p>
</div>
<ul>
<li>
<p><a href="#secondlevel">Do Not Use Bare Names As Second Level Domains</a></p>
</li>
<li>
<p><a href="#nonproduct">Do Not Promote Similarly Named Software Products</a></p>
</li>
<li>
<p><a href="#nonaffiliation">Must Clearly Display Non-Affiliation</a></p>
</li>
<li>
<p><a href="#credit">Must Provide Credit To Relevant Apache Project Community</a></p>
</li>
<li>
<p><a href="#resources">Must Include Links To Relevant Apache Product Resources</a></p>
</li>
<li>
<p><a href="#positive">Non-Disparaging References To Apache Projects</a></p>
</li>
<li>
<p><a href="#exclusive">No Exclusive Or Controlling Relationship</a></p>
</li>
<li>
<p><a href="#attributions">Trademark Attributions And Proper Apache Brand Usage</a></p>
</li>
<li>
<p><a href="#graphics">Logos And Graphics Usage</a></p>
</li>
<li>
<p><a href="#apachecon">Must Not Use "Apache" And "ApacheCon" Names</a></p>
</li>
<li>
<p><a href="#other">Other Trademark Policies And Resources</a></p>
</li>
<li>
<p><a href="#permission">How To: Request Permission For Domains</a></p>
</li>
<li>
<p><a href="#rationale">Policy Rationale</a></p>
</li>
</ul>
<h2 id="secondlevel">Do Not Use Bare Names As Second Level Domains<a class="headerlink" href="#secondlevel" title="Permalink">&para;</a></h2>
<p>Outside parties may <strong>not</strong> use Apache trademarks alone as second level domains or
their functional equivalents when the content of that domain is related to
any related software products or services.  Thus, you may not use a domain
called <code>tomcat.com</code> to provide server-side software or services.</p>
<p>This applies to second level domains, as well as their functional equivalents,
like <code>tomcat.co.uk</code>, <code>flex.org.au</code> or other similar domain schemes where the
domain registrar generally assigns a third level or similar domain.  Uses of
Apache trademarks in domain names must include additional words or characters
that clearly differentiate the spelling and meaning of the domain name from
the bare Apache product trademark.</p>
<h2 id="nonproduct">Do Not Promote Similarly Named Software Products<a class="headerlink" href="#nonproduct" title="Permalink">&para;</a></h2>
<p>Domain names using Apache marks must not be used to promote software
products that are similar to Apache software products, or to promote software
products that are similarly named in any fashion to any Apache products or projects.
Domains using Apache marks may only be used to provide services and/or
differently-named software products that are
directly related to the Apache product whose mark is being used.</p>
<h2 id="nonaffiliation">Must Clearly Display Non-Affiliation<a class="headerlink" href="#nonaffiliation" title="Permalink">&para;</a></h2>
<p>Website content must clearly and prominently inform the public that the domain
and your organization are not affiliated with, endorsed by, or otherwise
associated with the Apache Software Foundation (ASF) or any of its projects.</p>
<p>This must include an appropriate statement specifying the above in the main
text body of your About or similar explanatory page of your website, as well
as being included in at least the footer of
the main landing page for the website.  Depending on the type of content for your
website, we may also require a prominent non-affiliation notice within the
text of the main landing page itself.</p>
<h2 id="credit">Must Provide Credit To Relevant Apache Project Community<a class="headerlink" href="#credit" title="Permalink">&para;</a></h2>
<p>The primary landing page of the domain's website, and any "About", "Contact", or similarly
named page(s) must provide a prominent text credit and link to the Apache
project whose mark is being used, as well as a mention of the independent
community behind the project.  A common motto of Apache projects is
"Community over code", and prominent uses of Apache marks must clearly
provide credit to the community behind the mark and its product.</p>
<h2 id="resources">Must Include Links To Relevant Apache Product Resources<a class="headerlink" href="#resources" title="Permalink">&para;</a></h2>
<p>The website must include a prominent section or page named "Resources", "More Information",
"Links", or some other appropriate title that features hypertext links
to the mailing lists and other services that the relevant Apache project itself
provides.  This must include at least a link to the homepage of the Apache project,
as well as a link to the Apache project's mailing lists, plus a brief
description of these resources.</p>
<p>You may contact the relevant Apache project to get a listing of appropriate links
to include.  The use of freely available, publicly archived mailing lists
and other support tools are a critical part of any Apache project, and ensuring
that links to our mailing lists are provided freely is a benefit both to
Apache projects and our users.</p>
<h2 id="positive">Non-Disparaging References To Apache Projects<a class="headerlink" href="#positive" title="Permalink">&para;</a></h2>
<p>Domain names using Apache marks must not be used to disparage the reputation
of the Apache Software Foundation, its projects, products, or communities.
Factual comparisons of Apache software versus other software are appropriate
as long as they are not used in a misleading way.</p>
<p>As a non-profit devoted to the public good through the software that we
produce, it is inappropriate for us to provide permission for third parties
to use our marks to disparage our communities or our work.</p>
<h2 id="exclusive">No Exclusive Or Controlling Relationship<a class="headerlink" href="#exclusive" title="Permalink">&para;</a></h2>
<p>Websites hosted at domain names using Apache marks must not give the impression
to relevant consumers that the organization controlling the domain has an
exclusive or controlling relationship with any Apache project or with the
Foundation as a whole, or with any service related to our products.</p>
<p>For example, a website declaring itself "The Only Resource For Apache <em>Project</em>" would
not be permitted since it implies an exclusive resource.  Likewise, branding
or taglines such as "The Apache <em>Project</em> Project Leaders" are not allowed, since
that implies control of that Apache <em>Project</em>.</p>
<p>Users of Apache marks in third party domains must acknowledge that Apache projects
are solely managed by the Project Management Committee (PMC) of the project,
and not by any single individual nor
by (even partly or indirectly) any third party organization.  Similarly, domain names using
Apache marks that state or imply that that organization has an exclusive or
sole relationship to any Apache project would both be factually incorrect, as
well as harmful to the Apache project's community, and are not allowed.</p>
<h2 id="attributions">Trademark Attributions And Proper Apache Brand Usage<a class="headerlink" href="#attributions" title="Permalink">&para;</a></h2>
<p>Any use of Apache trademarks on any pages of the domain must comply with
our trademark policy and follow our <a href="/foundation/marks/guide">Apache Product Name Usage Guide</a>.</p>
<p>The primary landing page for the domain, and any "Legal", "About", "Disclaimer",
or similarly named pages must feature prominent attributions of all Apache
marks used on the domain. For example:</p>
<blockquote>
<p>Apache <em>Project</em>, <em>Project</em> and Apache are either registered trademarks or trademarks of
the Apache Software Foundation in the United States and/or other countries,
and are used with permission as of 2014. The Apache Software Foundation has
no affiliation with and does not endorse or review the materials provided at
this website, which is managed by <em>YourBigCo</em>.</p>
</blockquote>
<p>This may appear in page footers or in any other appropriate location. The
"Apache Software Foundation" text should link to <a href="http://www.apache.org/">http://www.apache.org/</a> and
the "used with permission" should link to this Domain Name Branding Requirements
page.  Note that you <strong>must</strong> have a current written permission from the
VP, Brand Management or the VP of the relevant Apache project to include the
"used with permission" phrase.</p>
<h2 id="graphics">Logos And Graphics Usage<a class="headerlink" href="#graphics" title="Permalink">&para;</a></h2>
<p>Third party websites may not use any Apache logos or graphics as part of their
website branding. Apache product logos may only be used to refer to the
Apache products or projects themselves, must be clearly set off from
any of the domain's own branding and logos, and must include a hyperlink to
the Apache project's home page where practicable.  You must not change the
appearance of any Apache logos when using them.</p>
<p>Third party website branding may not include the Apache feather as a brand
element in any way. The only use of the bare Apache feather or Apache logo
on websites allowed is to provide a single link to <a href="http://www.apache.org/">http://www.apache.org/</a>
as a reference to The Apache Software Foundation and its projects.</p>
<h2 id="apachecon">Do Not Use "Apache" And "ApacheCon" Names<a class="headerlink" href="#apachecon" title="Permalink">&para;</a></h2>
<p>Third parties may not use either the "Apache", "ApacheCon", nor "Apache:BigData"
names, nor confusingly similar names, in their domain names. These names
are reserved exclusively for the ASF, its projects, and its
own authorized conferences.</p>
<h2 id="permission">How To: Request Permission For Domains<a class="headerlink" href="#permission" title="Permalink">&para;</a></h2>
<p>If you have a website created or in development that you wish to host at
a domain name incorporating any Apache marks, please
<a href="/foundation/marks/contact#domains">contact us</a> by emailing both the relevant
<code>private@*projectname*.apache.org</code> mailing list, and <strong>also</strong>
cc: <code>trademarks@apache.org</code>.</p>
<p><strong>Be sure</strong> to include a link to your domain, as well as an explanation of
how your domain will comply with all the above policy points.
Please be patient; we are an all-volunteer run organization.</p>
<p>Please feel free to contact us in advance of setting up your domain with your
proposed name and an overview of what the site will be designed for and a
mockup of your site content so that we can start the discussion.  Note that
any permissions granted are contingent on the website content remaining in
compliance with this policy.</p>
<h2 id="rationale">Policy Rationale<a class="headerlink" href="#rationale" title="Permalink">&para;</a></h2>
<p>The primary mission of the Apache Software Foundation is to provide software
products for the public good.  Equally important is The Apache Way, or the
community-led, consensus-driven, and public mailing list methods that our
many projects use to produce the software products that we provide to the
public.  Thus these branding guidelines are different from those used for software
<strong>products</strong>, because software products are the key value that Apache projects
provide for the public.</p>
<p>The fundamental driver for Apache projects are the communities and PMCs that
contribute to and run those projects.  As an all-volunteer organization,
maintaining the health of the <strong>community</strong> of committers within a project
is critical to Apache and to the project.  Thus it is important for any
third party uses of our marks to properly credit the community behind
the project whose mark they are using.</p>
<p>As a non-profit organization whose mission is to serve the public good, our
projects also provide a number of support services for the products that
they produce.  This is both a useful and free resource for the public, but
is also an integral part of The Apache Way, and is important to the health
of our communities.  Thus ensuring that third parties provide appropriate links
to the free support services and mailing lists that our projects provide is
important both to our communities themselves, and to the public who
may wish to use Apache products.  Obviously, third parties that primarily
disparage our communities or products are not welcome to use our marks in
ways that might be infringing.</p>
<p>Apache projects are run solely by their PMCs, as <a href="http://community.apache.org/projectIndependence.html">projects independent of
outside corporations or organizations</a>.  It is important to maintain both
the actual independence of our PMCs from third parties, as well as to ensure
that third parties do not use our marks to imply controlling, exclusive,
or otherwise exclusionary relationships to our PMCs, projects, or communities.</p>
<p>Similarly, as an all-volunteer organization, our projects may sometimes be
limited in the level or frequency of support or other services that they
may offer to the public.  There are many third parties who have the ability
to provide valuable additional services or products related
to Apache products.  Having reputable third parties offering hosted services,
support contracts, consulting and training, and other services at domain names related to our
products is a benefit to the public who uses our products, and often can be
a benefit to the long term health of our project communities.</p>
<p>Thus while Apache must strongly protect its marks as applied to software products - the
primary value we provide to the public - we have established these requirements
to encourage reputable third parties to consider responsibly offering services
at domain names that may be branded using Apache marks in respectful ways.</p>
<p><strong>As of 2016, version 1.2 of this policy</strong> prohibits the use of bare Apache trademarks
as second level domain names or their equivalents.  It is clear from experience that
consumers often assume the second level name of a domain is directly or closely
related to the organization that produces the content found on that domain.  As
the ASF and Apache projects are the only appropriate source of Apache software
products, it is inappropriate to use an Apache trademark as a second level domain
because it makes it much more likely users and contributors would be led to believe
that some other organization is providing that named Apache software.</p>
<h2 id="other">Other Trademark Policies And Resources<a class="headerlink" href="#other" title="Permalink">&para;</a></h2>
<p>Please see our <a href="/foundation/marks/">formal Trademark Policy</a>
and our <a href="/foundation/marks/resources">site map of Trademark resources</a>.</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, services, or events.</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 Apache policy document, published in 2016.
Material changes will be marked with a new version number.</p>
<p><strong>v1.1</strong> Update to have permissions by VP, Brand <strong>or</strong> designee</p>
<p><strong>v1.1a (2014)</strong> Minor clarification to ensure cc: trademarks@, and only top level project VPs (but not podling PPMCs) may grant permissions (update: April 2016)</p>
<p><strong>v1.2 (2016)</strong> Add prohibition on second level domains or similar; Add proper usage to attributions section</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>