<!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 Project Branding Best Practices</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-project-branding-best-practices">Apache Project Branding Best Practices<a class="headerlink" href="#apache-project-branding-best-practices" title="Permalink">&para;</a></h1>
<p>Apache&reg; Project Branding Best Practices provide recommendations for
all Apache projects who are interested in promoting their software and
maintaining a long-lived, independently managed project community.</p>
<p>Apache PMCs should take these three simple steps to
improve their project brand and image and encourage
new contributions from a variety of sources.  Similarly, these steps can greatly reduce
the impact to your project community if trademark issues arise later
due to third party misuse or infringement of your brand.</p>
<p>These are best practices and are <strong>recommended for all Apache projects</strong>.
These recommendations are in addition to the existing PMC
branding <a href="//www.apache.org/foundation/marks/pmcs">requirements</a> and
<a href="//www.apache.org/foundation/marks/responsibility">responsibilities</a> documents.</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="//www.apache.org/foundation/marks/resources">Trademark Resources Site Map</a>.</p>
</div>
<div id="toc"><ul><li><a class="toc-href" href="#recruit" title="1. Actively Recruit: New Committers &amp; PMC Members">1. Actively Recruit: New Committers &amp; PMC Members</a></li><li><a class="toc-href" href="#aware" title="2. Be Aware: How Your Project Brand is Used">2. Be Aware: How Your Project Brand is Used</a></li><li><a class="toc-href" href="#request" title="3. Request Registration: Of Your Product Name">3. Request Registration: Of Your Product Name</a></li><li><a class="toc-href" href="#register" s="" title="How To: Register Your Project" trademark'="">How To: Register Your Project's Trademark</a></li><li><a class="toc-href" href="#international" title="International and Service Registrations">International and Service Registrations</a></li><li><a class="toc-href" href="#glossary" title="Glossary: Brand vs. Trademark">Glossary: Brand vs. Trademark</a></li><li><a class="toc-href" href="#other" title="Other Trademark Policies And Guidelines">Other Trademark Policies And Guidelines</a></li><li><a class="toc-href" href="#description" title="Trademark Descriptions of Software Functionality">Trademark Descriptions of Software Functionality</a></li></ul></div>
<h2 id="recruit">1. Actively Recruit: New Committers &amp; PMC Members<a class="headerlink" href="#recruit" title="Permalink">&para;</a></h2>
<p>A key way to keep a strong community and a strong brand image is to draw
in new project contributors.  Ensuring that your project presents a friendly face to
newcomers on the homepage, being consistent in the core branding for your project (so newcomers
understand what your project is, versus other Apache projects or other vendor
products), and documenting clear paths for newcomers to get involved
are easy steps to take.  Taking the time to mentor newcomers,
and fostering a community ethos where answering questions and helping out is
valued helps encourage new contributors to step up and help.  Actively seeking
out these new contributors and considering nominating them for
committership is a great way to empower a larger community.</p>
<p>For new ideas in community building, ask the
<a href="//community.apache.org/">Apache Community Development</a> project for tips.</p>
<h2 id="aware">2. Be Aware: How Your Project Brand is Used<a class="headerlink" href="#aware" title="Permalink">&para;</a></h2>
<p>We all want other people and organizations to use our great software, and the permissive
Apache license allows this.  But it's important to ensure that your project
community gets the credit you deserve for the work you've done, and that when
other organizations use your trademarks they provide
<a href="//www.apache.org/foundation/marks/faq/#attribution"><em>attribution</em></a> to Apache,
and a <a href="//www.apache.org/foundation/marks/guide">guide for the proper way to refer to Apache product names</a>.</p>
<p>Being aware means reviewing the vendors and other websites that talk about or use
your Apache project, and ensuring that they're respecting our trademarks and treating
your project's brand appropriately.  Raising any brand misuse or infringement is critical to
ensure other organizations use your project brand in an appropriate way.  We have detailed
<a href="//www.apache.org/foundation/marks/reporting.html">best practices for reporting trademark misuse by third parties</a>.</p>
<h2 id="request">3. Request Registration: Of Your Product Name<a class="headerlink" href="#request" title="Permalink">&para;</a></h2>
<p>The simplest way to ensure that other organizations respect your project name is
to register it as a trademark.  All Apache projects are encouraged to
request registering their software product names as trademarks.</p>
<p>Registration costs are covered by the ASF, and the request process is very simple for your
PMC.  Registering your name ensures that other organizations -
especially software vendors - will use your trademarks appropriately, and will give your
project community credit for creating your software product.  Registration also makes
dealing with misuse or infringement in the future much simpler, because virtually
all companies will respect registered trademarks once they are pointed out.</p>
<p>While we consider all Apache project and software product names to be common law
trademarks, registration provides simple formal and incontrovertible
notice to the rest of the world that your project trademarks belong to the
project and to the ASF.</p>
<p><strong>NOTE:</strong> not all project names may be registrable.  Generic or descriptive project names -
like "MetaModel" - often will not be allowed registrations.  If there are any
pre-existing software product <strong>registrations</strong> that are closely similar to some part of
your project name, we may not be able to pursue a registration depending on the
similarity or the owner of the pre-existing registration.  Also, as a
non-profit organization, funds for legal expenses may be limited depending
on the likelihood of confusion with your project's name, so not all
requests can be accommodated.</p>
<p>trademarks@ will work with your PMC if issues like this come up.</p>
<h2 id="register">How To: Register Your Project's Trademark<a class="headerlink" href="#register" title="Permalink">&para;</a></h2>
<p>Requesting registration of your software product's name is as simple as
having a <strong>PMC member</strong> <a href="mailto:tm-registrations@apache.org">email tm-registrations@apache.org</a> with
<code>Subject: [REGREQUEST] Please Register Apache ProjectName trademark</code> with the
following information.</p>
<ol>
<li>
<p>Date the <em>ProjectName</em> name was <strong>first used in commerce</strong>.  This is the date that
the ASF (or whatever organization may have previously released this
software product using the <em>same name</em> before incubation) shipped an
official <em>release</em> that was available to the general public to download.
The first use in commerce is essentially the first date that an end
user could have actually downloaded the complete software product (i.e.
not just the source code), and would have recognized it using the <em>ProjectName</em> name.</p>
</li>
<li>
<p>Date the name was <strong>first used to refer to the software in public</strong>
(before a release).  That is, <em>if</em> there is a provable earlier date
where you had public web pages talking about "The <em>ProjectName</em> Product will
process all your data!", thus clearly establishing to end users that
there was <em>going</em> to be a <em>ProjectName</em> software product, even if it wasn't
downloadable yet.  If you don't have a specific date for this (many
projects don't), we will just use the first use in commerce date, from above.</p>
</li>
<li>
<p>Brief <strong>description of the functionality of the software product.</strong>
This is a very high level and somewhat generic description that is used for
legal purposes, not end user purposes; it doesn't need to be perfect, since
the Trademarks Committee and our counsel can often find the appropriate
terms to use once you provide an overview.
The USPTO website has <a href="//s.apache.org/4fZ">legal examples of trademark descriptions</a>,
but a more familiar example description is our
<a href="//www.trademarkia.com/lucene-86218567.html">LUCENE registration</a>:</p>
<blockquote>
<p>"Downloadable computer software for full-text searching, hit highlighting, faceted searching, indexing, dynamic clustering, database integration, rich document handling, and geospatial searching."</p>
</blockquote>
<p>There are <a href="#description">detailed example descriptions</a> for Tomcat and OpenOffice.</p>
</li>
<li>
<p><strong>URL to a download web page</strong> clearly showing your <em>ProjectName</em> product name
in use describing a downloadable software product, that counsel can
take a screenshot of.  The USPTO trademark examiners need to see a
webpage displaying the <em>ProjectName</em> name with the &trade; symbol, in direct connection with a link where
an end user would download the software product itself.
Traditionally, you would send a picture of an actual box of software,
but the ASF only offers online downloads.</p>
<p>Note that this is one of the few times where it's better to use just the bare
<em>ProjectName</em> name, without the "Apache" before it - like an
underlined hyperlink "<u>You can download <em>ProjectName</em> software here</u>" on the download
page.  It is often simpler to register just the bare ProjectName name, rather than
the Apache ProjectName form of the name that we normally use.</p>
</li>
<li>
<p>Patience, and a commitment by the PMC to use consistent branding and
appropriate &trade; symbols, as well as to police uses of your project brand
by third parties.</p>
</li>
</ol>
<p><strong>NOTE:</strong> Please ensure that you use the appropriate &trade; symbols for the first
and most prominent uses of your Apache <em>ProjectName</em> product name on both your
project's homepage and on your download page.  This is required to ensure
that the trademark examiners see that the ASF is treating your name as a
trademark before they review the information. Trademark examiners tend to
be very literal, and will be reviewing a static screenshot of your download page.</p>
<p><strong>What Comes Next</strong></p>
<p>The Brand Management Committee will review your request to see if your
project name is legally registerable and if the expense is justified.
We let you know if there is more information needed once we review your request.
Once the application is submitted, we will let your private@ list know.  Currently,
US trademark registrations take 6 or more months to process through the
examination process, so patience is needed.  If questions arise we will work with the PMC directly.</p>
<p>After a trademark registration has officially issued (but not before) your
PMC will need to update your website to use the proper &reg; registered
trademark symbol, as well as ensure that you address potential
infringements of your name by other users.</p>
<h2 id="international">International and Service Registrations<a class="headerlink" href="#international" title="Permalink">&para;</a></h2>
<p>If your Apache project is very widely used, the PMC is organized about policing
uses of your brand, and you have a specific need to request registration either
as a service (i.e. for providing support about your software product) or registration
in countries other than the US, please contact tm-registrations@  Similarly, if there
is a specific reason that your project wishes to register your primary product logo,
please let us know.</p>
<p>In general, the ASF will attempt registration for any active Apache project
that requests it in the US.  US registrations cover our home market (i.e. the ASF is incorporated
in the US), tend to cover a significant portion of users and developers, and
are fairly inexpensive to submit.
We will attempt to make a US registration for every active project that requests one.</p>
<p>For well-organized projects in industries where there is significant risk of infringement
by other software vendors, we can consider registering your mark(s) in either
other countries/jurisdictions, or as a trademark for the support services that your
project offers to developers and users.  Note, however, that international registrations
have much higher registration fees, and in some cases may incur additional legal
costs that we must justify outside or above the brand budget.</p>
<p><strong>Important:</strong> If your project is requesting any international registrations (popular projects) or
a service mark registration (rare), you must provide a written justification for the additional
expenses.  Explain in your PMC's own words why registering your project's
name in other countries is important to the success and long-term health of your
project.  The board and President will review the request and authorize the
additional expenses.</p>
<h2 id="glossary">Glossary: Brand vs. Trademark<a class="headerlink" href="#glossary" title="Permalink">&para;</a></h2>
<p>A trademark is the legal instantiation of your brand.  Branding includes many elements, including the look and feel of your website or product, logos, and other presentation.  Trademarks are the specific symbols that you use to promote your software <strong>product</strong> or service to end users.  A consistently used project name and logo are typically the trademarks that a new end user or consumer associates with the actual software product releases your project produces.</p>
<p>Apache <strong>project</strong> names can also serve as trademarks for the developer support services that you provide, however from the legal perspective, it's much more important - and simpler - to protect the name of the software <strong>product</strong> itself.</p>
<h2 id="other">Other Trademark Policies And Guidelines<a class="headerlink" href="#other" title="Permalink">&para;</a></h2>
<ul>
<li><a href="//www.apache.org/foundation/marks/pmcs">Apache Project Branding Requirements</a> - for Apache project websites</li>
<li><a href="//www.apache.org/foundation/marks/responsibility">Apache PMC Branding Responsibilities</a> - what PMC members (and committers) need to do</li>
<li><a href="//www.apache.org/foundation/marks/reporting">Apache Trademark Reporting Guidelines</a> - how to report problems</li>
<li><a href="//community.apache.org/projectIndependence.html">Project Independence</a> - is required for Apache project governance</li>
<li><a href="//www.apache.org/foundation/marks/contact">How To Contact Apache With Branding Questions</a> - email trademarks@ with questions</li>
<li><a href="//www.apache.org/foundation/marks/resources">Complete Trademark Resources Site Map</a></li>
</ul>
<h2 id="description">Trademark Descriptions of Software Functionality<a class="headerlink" href="#description" title="Permalink">&para;</a></h2>
<p>The description of functionality that we provide with a trademark registration application
is the legal claim that the ASF is making for that specific registration.  That is, a
trademark registration serves as notice to the world that the ASF claims the <em>ProjectName</em>
name as a software product that does X, Y, and Z.  Typically, as long as the claim is
a brief approximation of the functionality that the <em>ProjectName</em> software product provides,
it's sufficient.  Most ASF trademark infringements cases are handled directly with the
business or technical contacts at the potential infringer, based on what the Apache <em>ProjectName</em>
product actually does; thus the specific legal details of the functionality claim are
rarely used.</p>
<p>Some projects may wish to be more specific in their functional claims, to ensure
that if any future issue does become a legal one, that the ASF has a more detailed
claim to functionality for their trademark.  Similarly, the ASF's trademark counsel
often makes suggestions for putting functionality descriptions into
terminology that better matches the trademark examiner's expectations.  These are
some more detailed examples.</p>
<p>Counsel has recommended this trademark functionality description for <strong>Apache Tomcat</strong>:</p>
<blockquote>
<p>"Downloadable computer software for hosting Java Enterprise Edition web applications written using the Java Servlet, JavaServer Pages and/or Java WebSocket specifications for use in developing and executing other computer programs on computers, computer networks, and global communications networks; downloadable computer software for hosting web applications for use in navigating, browsing, transferring information, and distributing and viewing other computer programs on computers, computer networks and global communications networks; downloadable computer software for hosting web applications for use in measurement and analysis of video images from composite video sources and pre-digitized formats in the field of science, engineering and industrial research; downloadable computer software for hosting web applications for use in utility programs, language processors and interpreters."</p>
</blockquote>
<p>One of the many <strong>Apache OpenOffice</strong> related trademarks uses this description:</p>
<blockquote>
<p>"Computer software for image processing; computer software for word
processing; computer software for network management; computer
programs for testing compatibility of computer programs; computer
software for developing computer programs; computer software for
facilitating manufacture and production of computer hardware and
computer software; computer software for use in workflow automation;
computer software for video games; computer programs to enhance the
audio visual capabilities of multimedia applications for the
integration of text, audio, graphics, still images and moving
pictures; computer programs used in accessing databases; computer
programs for use in navigating, browsing, transferring information,
and distributing and viewing other computer programs on computers,
computer networks and global communications networks; word processing
software; computer programs for document processing, namely, computer
programs that automate document routing and approval, that provide
security features for documents, that provide revision control for
documents, and which allow for sharing, collaboration, access and
management of documents; spreadsheet software; presentation graphics
software and utility software for use therewith; data management and
database management software; organizer, calendaring, and scheduling
software; project management and project scheduling software for
general use; computer software for use in capturing, organizing and
distributing data, information and knowledge to be shared within a
workgroup; electronic mail software; software for use in accessing,
using, creating, and maintaining computer newsgroups; software for
performing mathematical calculations; web page design software;
computer networking software; computer software for navigating,
browsing, and transferring information on computers, computer
networks, and the Internet: computer software for distributing and
viewing other computer software; computer operating system software;
computer security software for information access control and secure
communications; computer software for testing compatibility of
computer software; computer software for computer emulation; computer
software for creating graphical interfaces; computer software for
developing, compiling and executing other computer software; user manuals supplied as a unit."</p>
</blockquote>

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