<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Home page of The Apache Software Foundation">
  <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
  <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
  <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
  <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
  <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
  <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
  <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
  <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
  <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
  <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
  <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
  <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
  <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
  <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
  <link rel="manifest" href="/favicons/manifest.json">
  <link rel="shortcut icon" href="/favicons/favicon.ico">
  <meta name="msapplication-TileColor" content="#603cba">
  <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
  <meta name="msapplication-config" content="/favicons/browserconfig.xml">
  <meta name="theme-color" content="#282661">

  <title>Apache PMC Branding Responsibilities</title>
  <link href="/css/Montserrat-300-600.css" rel="stylesheet">
  <link href="/css/min.bootstrap.css" rel="stylesheet">
  <link href="/css/styles.css" rel="stylesheet">
  <style>
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}  </style>

<!-- https://www.apache.org/licenses/LICENSE-2.0 -->
</head>

<body >
  <!-- Navigation -->
  <header>
	<div id="skiptocontent">
		<a href="#maincontent">Skip to Main Content</a>
	</div>
    <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
      <div class="container">
        <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <div class="collapse navbar-collapse" id="mainnav-collapse">
          <ul class="nav navbar-nav navbar-justified">
            <li><a href="/index.html#news">News</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation">Overview</a></li>
                <li><a href="/foundation/how-it-works.html">Process</a></li>
                <li><a href="/foundation/governance/">Governance</a></li>
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="/foundation/governance/members.html">Membership</a></li>
                <li><a href="https://community.apache.org/">Community</a></li>
                <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/foundation/glossary.html">Glossary</a></li>
				  <li><a href="/apache-name">About Our Name</a></li>
                <li><a href="/foundation/preFAQ.html">FAQ</a></li>
                <li><a href="/foundation/contributing.html">Support Apache</a></li>
                <li><a href="/press/">Media/Analysts</a></li>
                <li><a href="/foundation/contact.html">Contact</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation/contributing.html">Donate Now</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li>
                <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li>
                <li><a href="https://smile.amazon.com/gp/chpf/homepage/ref=smi_se_scyc_srch_stsr?q=apache+software+foundation&orig=%2F">Shop smile.amazon.com</a></li>
                <li><a href="/foundation/sponsorship.html">ASF Sponsorship</a></li>
                <li><a href="/foundation/thanks#targeted-sponsors">Targeted Sponsorship</a></li>
                <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">The Apache Way&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="https://s.apache.org/GhnI">Sustainable Open Source</a></li>
                <li><a href="/foundation/how-it-works.html">How it Works</a></li>
                <li><a href="/foundation/how-it-works.html#meritocracy">Merit</a></li>
                <li><a href="https://blogs.apache.org/foundation/category/SuccessAtApache">Success at Apache</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">Join Us&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://community.apache.org/gettingStarted/101.html">Getting Started</a></li>
                <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                <li><a href="https://www.apachecon.com/">ApacheCon</a></li>
                <li><a href="http://community.apache.org/calendars/">Community Events</a></li>
                <li><a href="/travel/">Travel Assistance</a></li>
                <li><a href="https://community.apache.org/gsoc.html">Summer of Code</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="https://community.apache.org/contributors/etiquette">Etiquette</a></li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/index.html#projects-list">Project List</a></li>
                    <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
                    <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
                    <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
                    <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
                    <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
                    <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
                    <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
                    <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="/foundation/marks/">Brand Management</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
                    <li><a href="/foundation/members.html">Members</a></li>
                    <li><a href="https://community.apache.org/contributors/">Committers</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Officers  &amp; Project VPs</a></li>
                    <li><a href="https://community.zones.apache.org/map.html">Location Map</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://people.apache.org/">Committer Directory</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="https://community.apache.org/about/">Community Development</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://community.apache.org/">Get Involved</a></li>
                    <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
                    <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
                    <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/dev/infrastructure.html">Infra overview</a></li>
                    <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
                    <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
                    <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
                    <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
                    <li><a href="/foundation/marks/list/">Trademarks</a></li>
					<li><a href="/licenses/exports/">Exports</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
                    <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
                    <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
                    <li><a href="/foundation/contributing.html">Individual Donations</a></li>
                    <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
                  </ul>
                </li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Downloads&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://downloads.apache.org/">Distribution</a></li>
                <li><a href="https://projects.apache.org/releases.html">Releases</a></li>
                <li><a href="https://status.apache.org/">Infrastructure Status</a></li>
                <li><a href="/uptime/">Infrastructure Statistics</a></li>
              </ul>
            </li>
            <li class="dropdown hidden-xs">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"><span class="glyphicon glyphicon-search"
                  aria-hidden="true"></span><span class="sr-only">Search</span></a>
              <ul class="dropdown-menu search-form" role="search">
                <li>
                  <div class="input-group" style="width: 100%; padding: 0 5px;">
                    <script async src="https://cse.google.com/cse.js?cx=cb41d2753d228d8b7"></script>
                    <div class="gcse-search"></div>
                  </div>
                </li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </header>
  <!-- / Navigation -->
  <header id="main-header" class="container">
    <div class="sideImg">
          <a class="visible-home" href="https://events.apache.org/x/current-event.html">
            <img class="img-responsive" style="width: 125px;" src="/events/current-event-125x125.png" alt="Apache Events"/>
<!-- STALE: <img class="img-responsive" style="width: 125px;" src="https://www.apachecon.com/event-images/default-square-light.png" alt="ApacheCon 2021 Coming Soon!" /> -->
          </a>
      <a class="hidden-home" href="/"><img class="img-responsive" src="/img/asf-estd-1999-logo.jpg" alt="The Apache Software Foundation"></a>
    </div>
    <div class="main">
      <img class="img-responsive center-block visible-home" src="/img/asf-estd-1999-logo.jpg" alt="Apache 20th Anniversary Logo">

      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
 
  </header>
  <main id="maincontent">
<div class="container">    <h1 id="apache-pmc-branding-responsibilities">Apache PMC Branding Responsibilities<a class="headerlink" href="#apache-pmc-branding-responsibilities" title="Permalink">&para;</a></h1>
<p>Apache Project Management Committees (PMCs) are directly responsible for promoting and protecting their project's
brand and trademarks while following Apache Trademark policies.  This document
is an overview of PMC responsibilities, with pointers to specific policies
or procedures PMCs must follow.</p>
<p>These responsibilities are in addition to the
<a href="pmcs.html">Project Website Branding Requirements</a> document, which primarily focuses on website display,
and to the <a href="reporting.html">Apache Trademark Reporting Guidelines</a>, which detail how users and
committers may report issues involving Apache brand uses.</p>
<p><strong>Podling (PPMCs)</strong> must liaise with the Incubator PMC prior to taking any
external action (such as emailing an external party).  The Incubator PMC should
loop in trademarks@ if there are any questions.</p>
<p><strong>Contents</strong></p>
<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>
<div id="toc"><ul><li><a class="toc-href" href="#introduction" title="Overview">Overview</a></li><li><a class="toc-href" href="#responsible" title="PMCs are responsible for their brand">PMCs are responsible for their brand</a></li><li><a class="toc-href" href="#website" title="Ensure project websites treat trademarks appropriately">Ensure project websites treat trademarks appropriately</a></li><li><a class="toc-href" href="#independent" title="Present an independent face to your project">Present an independent face to your project</a></li><li><a class="toc-href" href="#police" title="Address improper third-party uses of Apache marks">Address improper third-party uses of Apache marks</a></li><li><a class="toc-href" href="#report" title="Report trademark issues to Brand Management">Report trademark issues to Brand Management</a></li><li><a class="toc-href" href="#compliance" title="Comply with Apache brand policy">Comply with Apache brand policy</a></li><li><a class="toc-href" href="#other" title="Other trademark guidelines">Other trademark guidelines</a></li><li><a class="toc-href" href="#notes" title="Important note">Important note</a></li><li><a class="toc-href" href="#version" title="Policy version">Policy version</a></li></ul></div>
<h2 id="introduction">Overview<a class="headerlink" href="#introduction" title="Permalink">&para;</a></h2>
<p>This document defines the board's expectation that PMCs manage
their own project's brand: how the project displays its own brand
in public; how the project responds to obvious
uses of the project's brand by third parties; and how the PMC is to comply with the
Apache Trademark Policy and the Project Website Branding Requirements.
The Apache Software Foundation owns all Apache&reg; marks,
and administers them on behalf of all Apache projects.  PMCs are expected to
actively manage their project's brand, and to ask for assistance from
Brand Management or Legal Affairs when necessary.</p>
<p><strong>Questions?</strong> Please <a href="/foundation/marks/contact#pmc">contact the Trademarks committee</a>
with general questions.  This document is for members of Apache PMCs, and
is probably best read in conjunction with the <a href="/foundation/marks/pmcs">Apache Project Branding
Requirements</a>, which define how projects should treat and display trademarks; and with the
<a href="/dev/pmc.html">PMC Guide</a>, which covers other, non-brand-related responsibilities and procedures related to PMC membership.</p>
<h2 id="responsible">PMCs are responsible for their brand<a class="headerlink" href="#responsible" title="Permalink">&para;</a></h2>
<p>Much as PMCs are stewards of their communities and their project code, PMCs are
also responsible for managing their own project's brand.  This includes
all the obvious aspects of a brand: the project's name and logo, the display
of the main project website, and the appearance and functionality of their product.
Much of the work that PMC members do improving code, updating the website,
and promoting their product to help bring more users and developers into
their community also helps to maintain the brand, and overall public expectation
of the quality and functionality of the software products that this project provides for download.</p>
<p>While the Apache License encourages third parties to use our code, it does <strong>not</strong>
permit third parties to use any Apache trademarks in ways that would
harm any Apache projects or communities or that would confuse consumers as to the true
source of Apache software.  In particular, section 6 of the
<a href="/licenses/LICENSE-2.0.html">Apache License 2.0</a> notes:</p>
<blockquote>
<ol start="6">
<li>Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.</li>
</ol>
</blockquote>
<p>PMCs need to be aware of their brand and its use in the broader world, and
should work to ensure that when the public hears about their project - for
example, Hadoop - the main association is to the actual Apache Hadoop
project itself, and not to a third party or other organization besides Apache.</p>
<p>Managing your brand requires a little extra thought than most activities
at Apache.  When managing your code and supporting your community, you are
primarily focused <strong>inwards</strong>; i.e. on people who are already aware of and
participating in your project.  Managing a brand is about working to ensure
that people who are <strong>outside</strong> of your community associate your brand and
name with the project itself.  Take a minute to think about how a newcomer
sees your project when they view the homepage for the very first time.  The
next time you read news coverage of your project or of the technology behind
it, consider how a newcomer will see your project's name, and its relationship
both to the ASF and to other companies and technologies.</p>
<h2 id="website">Ensure project websites treat trademarks appropriately<a class="headerlink" href="#website" title="Permalink">&para;</a></h2>
<p>PMCs are directly responsible for ensuring all of their project's web content
complies with the <a href="/foundation/marks/pmcs">Apache Project Branding Requirements</a>.
It is important to ensure that Apache displays its project names and logos
properly as trademarks, so that third parties will know our brands are
important to us.  It's also important to treat other organization's trademarks
or service marks with respect, and attribute them if you use them on
an Apache project website.</p>
<p>The "Apache&reg;" trademark as a symbol of our high quality, community built software
is an important one to all Apache projects, and to the Foundation itself.  Be
sure to use it properly on apache.org websites, especially in relation to
Apache projects and products.</p>
<h2 id="independent">Present an independent face to your project<a class="headerlink" href="#independent" title="Permalink">&para;</a></h2>
<p>Part of the Apache Way is the concept of hats - when PMC members do work on
Apache lists, they are expected to act as individuals, wearing their PMC hat;
i.e. on behalf of their PMC's project, and not influenced by other parties.
Likewise, it is important that your <a href="http://community.apache.org/projectIndependence.html">project as a whole is run
independently of commercial influence</a>, and presents the public perception
that the project is run independently.  There should be no question in the minds
of average users on the website or the mailing lists that the PMC solely runs the project, and not any other organizations.</p>
<p>Projects must ensure that their average user can find all information and code
necessary to use the product in its common use cases solely on the project's
own website.  A normal user should be able to learn about the product from
the project's own materials, and must be able to use the product solely
under the Apache License or other Apache Legal Affairs approved licenses in
software that is distributed from this or other Apache projects.</p>
<p>Projects must not endorse or promote the work of third parties, nor allow
third party influence to affect the future of the project for specific outside
organizations.</p>
<p>Note that per-project Thanks and Support pages are allowed to recognize
specific vendors that have donated services or licenses to the project, or that
are well-known vendors that provide outside support for the project.  However,
these must be factual entries, not advertisements, and must not show favoritism
to any particular vendor(s). Recommended best practices for
<a href="/foundation/marks/linking">Thanks and Support pages</a> are provided.</p>
<h2 id="police">Address improper third-party uses of Apache marks<a class="headerlink" href="#police" title="Permalink">&para;</a></h2>
<p>PMCs are responsible for evaluating and if needed addressing any infringing use of their project's
marks by third parties that come to their attention.  The PMC must work to contact
potentially infringing parties to ask them to respect Apache marks and
attribute them to the ASF.  In many cases, a friendly note reminding a third
party that Apache project names are our trademarks and that they are important
to us is sufficient to get third parties to respect our marks.  PMCs and committers should use the
<a href="/foundation/marks/reporting.html">Apache Trademark Use Reporting Guidelines</a>
in deciding how to contact third parties.</p>
<p>Contact trademarks@ for suggested email templates to use in first contacting
third parties, or if there is any difficulty in having the PMC make the first
contact.  Templates are available at
<a href="/foundation/marks/templates/">www.apache.org/foundation/marks/templates/</a></p>
<p>PMCs are expected to manage this process.  If a third party does
not respond favorably to the PMC's requests, or responds in a hostile or
legalistic manner, <a href="#report">report to Brand Management</a>.</p>
<p>As stewards of their project and the group most familiar with their technology,
PMCs are best-positioned to understand their brand's uses within the
greater marketplace.  However, PMCs are not authorized to license infringing
uses of their brand(s) to third parties without explicit approval from the
VP, Brand Management.</p>
<h2 id="report">Report trademark issues to Brand Management<a class="headerlink" href="#report" title="Permalink">&para;</a></h2>
<p>Detailed reporting procedures are in the <a href="reporting.html">Apache Trademark Reporting Guidelines</a>.</p>
<p>If there is a significant legal issue, or where the efforts of the
PMC (and especially the project chair and VP, as an officer of the ASF) are
not successful, the PMC should work with VP, Brand Management to get assistance.
Address trademark and legal questions to the <a href="/foundation/marks/contact#pmc">correct lists</a>:</p>
<ul>
<li>
<p>Send general or hypothetical legal questions that are not about private matters
to the legal-discuss@ publicly-archived mailing list.</p>
</li>
<li>
<p>Send specific requests for legal advice from ASF counsel on matters relating to
any Apache project, or for legal questions that should not be made public,
to the legal-internal@ privately archived mailing list.</p>
</li>
<li>
<p>Send general questions about trademarks, Apache branding policies,
or any potential trademark infringements or issues
to the privately archived trademarks@ list.</p>
</li>
</ul>
<p>Reminder: if a third-party's legal counsel contacts a PMC,
ensure the PMC works with legal-internal@ to get advice from
ASF Counsel before making any response.</p>
<h2 id="compliance">Comply with Apache brand policy<a class="headerlink" href="#compliance" title="Permalink">&para;</a></h2>
<p>All PMCs must to comply with the Apache Project
Branding Requirements.  If your project does not comply, or is having issues
in determining compliance, including a recognition of this
set of PMC responsibilities to handle brand issues, work
with trademarks@ to resolve the issue.</p>
<p>Much as complying with Apache legal policy to ensure that our software is
safely covered under our license, projects must follow the branding requirements
to ensure that we maintain our projects' brands and the Apache brand - and public reputations - for the future benefit of all of Apache projects.</p>
<h2 id="other">Other trademark guidelines<a class="headerlink" href="#other" title="Permalink">&para;</a></h2>
<p>For more information about Apache marks, see our <a href="/foundation/marks/">formal Trademark Policy</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.1 of this Apache policy document, published in <s>May 2011</s> November 2013.
Significant changes will be marked with a new version number.</p>
<p>For 1.1 in November 2013 clarifications were added, including a link to <a href="http://community.apache.org/projectIndependence.html">http://community.apache.org/projectIndependence.html</a> and a note that
project website branding compliance should be dealt with on trademarks@ and not board@.</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>