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

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