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

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