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

      <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-services-naming-branding-policy">Third Party Services Naming Branding Policy<a class="headerlink" href="#third-party-services-naming-branding-policy" title="Permalink">&para;</a></h1>
<p>This <strong>Services Naming Branding Policy</strong> defines <strong>requirements</strong> for when third
parties may be eligible to request permission to use
Apache&reg; marks in their <em>service</em> names (i.e. services that provide
hosted versions or implementations of Apache products, or services directly
related to Apache products), and the process to request permission from an officer of the ASF.</p>
<h2 id="DRAFT">DRAFT DOCUMENT<a class="headerlink" href="#DRAFT" title="Permalink">&para;</a></h2>
<p><strong>This document is an UNOFFICIAL DRAFT and should not be considered
official policy.  Substantial changes may be made before being published
as an official policy.  Direct any questions to <a href="mailto:trademarks@apache.org">trademarks@apache.org</a>.</strong></p>
<h2 id="introduction">Services Naming Branding 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>" as primary branding in your services names or service marks</strong> if
that use would likely confuse a relevant consumer about the source any
software or services you provide with products or services provided by
the Apache <em>Project</em> project 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>,
understanding that the use of Apache marks in third party services is
generally not "nominative fair use."</p>
<p>You may be eligible to <a href="#permission">Request Permission to Use Apache marks</a> related to
our products in the primary branding of your service if the naming style
and presentation of your service to the public meets our services naming
requirements below.  Thus in some cases a website providing a hosted set of
Apache Solr search tools and search indexes as a service to the public
may be granted permission to use a service branding like <em>QuickFind using
Apache Solr</em> if you get specific permission from the VP, Brand Management
and/or the VP of the relevant Apache project (Apache Lucene in this case).</p>
<p>Note that this does not generally apply to our "Apache" trademark; use of that
mark in services names that may be confusingly similar to any Apache project or
product or service is <strong>not</strong> allowed.  The Apache brand is important to all
Apache projects, and is special to our organization, as well as being the
primary way that consumers discover our projects and products.</p>
<p>You may also be interested in reading our closely related
<a href="/foundation/marks/domains">Third Party Domain Name Branding Policy</a>.</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="#nonproduct">Do Not Promote Similar Services Offered By Apache</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 Services</a></p>
</li>
<li>
<p><a href="#rationale">Policy Rationale</a></p>
</li>
</ul>
<h2 id="nonproduct">Do Not Promote Similar Services Offered By Apache<a class="headerlink" href="#nonproduct" title="Permalink">&para;</a></h2>
<p>Services names using Apache marks must not be used to promote or provide
services that either the Apache project itself or the ASF
as a whole provides.  For example, providing issue trackers, mailing lists,
or download facilities for software products are all services that Apache
projects offer; hence third parties may not brand similar services using
Apache marks.</p>
<p><strong>Exception:</strong> you may be eligible to provide a hosted service
version of an Apache software product that provides these kinds of
services to the public.  That is, you could provide a hosted service
called <em>FindMail, Powered By Apache Pony Mail</em>, that provides mailing
list services to the general public or to your customers, because that is
the general functionality of Apache Pony Mail.</p>
<p>The Apache brand overall represents a broad array of core services offered
to both developers and users of our products, covering user support, source
code control, and a variety of other project-related metrics.  Ensuring that
relevant consumers come directly to Apache to utilize our development-related services when they
are interested in learning about or using our products is important to us.</p>
<h2 id="nonaffiliation">Must Clearly Display Non-Affiliation<a class="headerlink" href="#nonaffiliation" title="Permalink">&para;</a></h2>
<p>Website content and services branding must clearly and prominently inform
the public that the service and your organization are not affiliated with, endorsed by, or otherwise
associated with the ASF or any of its projects.</p>
<p>This must include an appropriate statement specifying non-affiliation in the main
text body of your About or similar explanatory page of your website, or
similar Help - About dialog or other method of user help, as well
as being included in at least the footer of
the main landing page for any associated website or other commonly used footer
or appendix for your service.  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 or the service's splash page, as appropriate.</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) or features of your service 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.<br/>
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>A website promoting your service 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.  Depending on the delivery method of your
service, this requirement may be met in a variety of ways.</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.  This ensures that users of your service
have an opportunity to learn how to report bugs or suggestions to the
Apache project you are using.</p>
<h2 id="positive">Non-Disparaging References To Apache Projects<a class="headerlink" href="#positive" title="Permalink">&para;</a></h2>
<p>Service names using Apache marks must not be used to disparage the reputation
of the ASF, 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>Services names using Apache marks must not give the impression
to relevant consumers that the organization controlling or providing the
service has an
exclusive or controlling relationship with any Apache project or with the
ASF as a whole, or with any service related to our products.</p>
<p>For example, a website declaring itself "The Only Host 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 the <em>Project</em> project.</p>
<p>Users of Apache marks in third party services 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, service 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 service must comply with
our trademark policy and follow our <a href="/foundation/marks/guide">Apache Product Name Usage Guide</a>.</p>
<p>The primary splash page or user help for the service, and any "Legal", "About", "Disclaimer",
or similarly named pages or services 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 2017. 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 Services 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
service 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">Must 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" nor the "ApacheCon"
names, nor confusingly similar names, in their service names as a primary
branding feature. These names
are reserved exclusively for the ASF, its projects, and its
own authorized conferences.</p>
<h2 id="permission">How To: Request Permission For Services<a class="headerlink" href="#permission" title="Permalink">&para;</a></h2>
<p>If you have a service created or in development that you wish to provide to
the public incorporating any Apache marks in its branding, please
<a href="mailto:trademarks@apache.org?subject=%5btrademark%5d%20Service%20name%20approval%20for">email us on the trademarks@</a>
mailing list.</p>
<p>Please feel free to contact us in advance of setting up your service with your
proposed name and an overview of what any related website or other user materials
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
service name and branding remaining in compliance with this policy.</p>
<h2 id="rationale">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>The ASF provides a core set of services both for
the communities that drive our projects, as well as for end users of our
products.  Ensuring that end users can easily learn about and come to the
Apache hosted versions of these services - including but not limited to
issue tracking, mailing lists, website documentation and download services</p>
<ul>
<li>is important to our project communities and to the ASF itself.</li>
</ul>
<p>Apache projects are run solely by their PMCs, as projects independent of
outside corporations or organizations.  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 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 - as long as
the public using those services is properly informed of the source of the
Apache software products, and the communities behind them, that are
powering those services.</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
or websites that may be branded using Apache marks in respectful ways.</p>
<h2 id="other">Other Trademark Guidelines<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 0.2 of this Apache policy document, published in February 2017.<br/>
Significant changes will be marked with a new version number.</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>