<!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 Event Branding Policy, Version 1.3</title>
  <link href="/css/Montserrat-300-600.css" rel="stylesheet">
  <link href="/css/min.bootstrap.css" rel="stylesheet">
  <link href="/css/styles.css" rel="stylesheet">
  <style>
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}  </style>

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

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

      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
 
  </header>
  <main id="maincontent">
<div class="container">    <h1 id="third-party-event-branding-policy-version-13">Third Party Event Branding Policy, Version 1.3<a class="headerlink" href="#third-party-event-branding-policy-version-13" title="Permalink">&para;</a></h1>
<h2 id="introduction">Event Branding Policy overview<a class="headerlink" href="#introduction" title="Permalink">&para;</a></h2>
<p>This document defines the branding policy for events run by third parties
that use Apache&reg; marks in the name or primary branding of the event. For more information
on use of Apache marks in other areas, see our <a href="/foundation/marks/">formal Trademark
Policy</a> and <a href="/foundation/marks/resources">site map of resources</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="#events">Policy for event names using Apache marks</a></p>
</li>
<li>
<p><a href="#anti-harassment">Anti-Harassment Policy</a></p>
</li>
<li>
<p><a href="#partner">ASF listing as Community Partner option</a></p>
</li>
<li>
<p><a href="#education">Must provide open educational content</a></p>
</li>
<li>
<p><a href="#selection">Must allow PMC representatives on event selection committee</a></p>
</li>
<li>
<p><a href="#naming">Referring to Apache marks, projects and products</a></p>
</li>
<li>
<p><a href="#attributions">Trademark attributions and proper use of Apache brands</a></p>
</li>
<li>
<p><a href="#graphics">Use of logos and graphics</a></p>
</li>
<li>
<p><a href="#dates">Allowable event dates</a></p>
</li>
<li>
<p><a href="#funding">Event profits and donations</a></p>
</li>
<li>
<p><a href="#partner">ASF listing as Community Partner option</a></p>
</li>
<li>
<p><a href="#apachecon">Must not use "Apache" or "ApacheCon" names</a></p>
</li>
<li>
<p><a href="#other">Other trademark guidelines</a></p>
</li>
<li>
<p><a href="#approval">How to gain approval to use an Apache mark in an event</a></p>
</li>
<li>
<p><a href="#notes">Important note</a></p>
</li>
</ul>
<h2 id="events">Policy for event names using Apache marks<a class="headerlink" href="#events" title="Permalink">&para;</a></h2>
<p>The VP, Brand Management, or the VP of the relevant Apache project, must approve the use of Apache marks in any events run by third parties.
This includes conferences, meetups, gettogethers, and any other types of events. Events must comply with this policy and have permission
to use Apache marks in the name of the event or in any of the primary branding, including website domain names, for the event.</p>
<p>Event branding and event organizers may not claim to be the organizers or sole or exclusive leaders of any Apache project, nor claim to be the sole,
exclusive, or primary source of information for any Apache project.</p>
<p>Simply <em>presenting a talk</em> on an Apache project requires no approval, and is very much
encouraged! The <a href="http://community.apache.org/">Community Development Project</a> may be
able to help with this. However, you must seek approval when the event name or primary branding
features Apache marks. Thus, giving a talk on Apache Foo at your local technology
get-together requires no approval, while organising "An evening with Apache Foo" as
an event open to the public does require approval.</p>
<h2 id="anti-harassment">Anti-Harassment Policy<a class="headerlink" href="#anti-harassment" title="Permalink">&para;</a></h2>
<p>Conferences organised by third parties which use Apache marks <strong>must</strong> have
an anti-harassment policy. This policy must either be identical to the
<a href="/foundation/policies/anti-harassment.html">ASF Anti-Harassment Policy</a>
or be an alternative approved by the ASF.</p>
<h2 id="education">Must provide open educational content<a class="headerlink" href="#education" title="Permalink">&para;</a></h2>
<p>At least a portion of any training and/or technical presentations at
events <em>must be applicable to the Apache product(s)</em> being referenced. For
example, an event about Apache Tomcat must include some sessions or lessons
that attendees can apply directly to an actual Apache Tomcat download, not
just lessons that apply to some third party product(s) built on or
related to Apache Tomcat.</p>
<h2 id="selection">Must allow PMC representatives on event selection committee<a class="headerlink" href="#selection" title="Permalink">&para;</a></h2>
<p>Event organizers must allow a project management committee (PMC) representative from any project whose
marks are used, or alternately a member from Community Development,
to sit on their Selection Committee. The PMC or Community Development representative
will wear their Apache "hat", to help ensure that the event follows ASF guidelines. PMC representatives from Apache must be associated with at least two
different organizations, to avoid the appearance of the event being
tightly tied to one organization.</p>
<p>In particular, PMC representatives shall work to ensure that events with
an open CFP or talk selection process work in a fair and unbiased manner,
based on technical merit of talks selected.  For events that have pre-selected
talks or more limited technical content, PMC representatives can ensure that
sufficient open educational content is applicable to the actual Apache
product(s) in question, and that the content is not solely about a third party
product related to or built on an Apache product.</p>
<h2 id="naming">Referring to Apache marks, projects and products<a class="headerlink" href="#naming" title="Permalink">&para;</a></h2>
<p>The first and most prominent reference to any Apache product on every page
or major section of a page, both in titles and in body text,
must use the <em>full name</em> of the project, for example "<em>Apache Tomcat</em>".
Professionally-produced events are expected to fully comply
with our <a href="/foundation/marks/guide">Apache Product Name Usage Guide</a>.</p>
<p>The event's main landing page, as well as any "About" or "Overview" page,
must include a prominent paragraph in the body content or sidebar (i.e. not
only in the footer content) that includes a brief <strong>description of
the appropriate Apache project</strong> as an independent project, not just a technology.  This must also include a link from the Apache project's name to the
project's home page.</p>
<h2 id="attributions">Trademark attributions and proper use of Apache brands<a class="headerlink" href="#attributions" title="Permalink">&para;</a></h2>
<p>Event pages must feature prominent attributions of all Apache marks. For
example:</p>
<blockquote>
<p>Apache Tomcat, Tomcat 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. The Apache Software Foundation has
no affiliation with and does not endorse or review the materials provided at
this event, which is managed by BigCo.</p>
</blockquote>
<p>This may appear in page footers or in any other appropriate location. The
"Apache Software Foundation" text should link to <code>http://www.apache.org/</code> and
the "used with permission" should link to this Event Branding Requirements
page.</p>
<p>You <strong>must</strong> have permission from a VP of the ASF to use the "used with permission" text.</p>
<h2 id="graphics">Use of logos and graphics<a class="headerlink" href="#graphics" title="Permalink">&para;</a></h2>
<p>Normally, events may not use any Apache logos or graphics as part of their primary
event branding. an event may only use Apache product logos to refer to the
Apache products or projects themselves, and must display such logos apart from
any of the event's own branding and logos.</p>
<p>If your event wishes to use an Apache project logo within your event branding,
you must work with VP, Brand to obtain explicit trademark and goodwill rights
for the brand and event logo.</p>
<p>Event branding may not include the Apache feather in any way. The only permitted use
of the bare Apache feather on event materials 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, typically as a Community Partner; or to otherwise refer to
Apache as a whole.</p>
<h2 id="funding">Event profits and donations<a class="headerlink" href="#funding" title="Permalink">&para;</a></h2>
<p>As a non-profit organization, the ASF always appreciates donations.
Community-led events are not required to provide donations. Third-party commercial events are welcome to provide a portion of event profits as a
donation to the ASF.</p>
<h2 id="partner">ASF listing as Community Partner option<a class="headerlink" href="#partner" title="Permalink">&para;</a></h2>
<p>The primary website and other collateral for events must provide The Apache Software Foundation (ASF)
with the <em>option</em> to have Apache listed as a Community Partner, Sponsor,
or other appropriate category within the event's branding style.</p>
<p>This helps ensure that the ASF as a whole
has a formal recognition by the event organizers that is clear and specific
to event attendees and others.  ASF or project representatives will determine the
appropriate text blurb, logo, and link back to the ASF website for this
recognition, and will let you know if Apache should be listed for your event.  Note that listings for Community
Partner or the like are for the Apache Software Foundation as a whole, and individual Apache projects do not typically appear in such listings.</p>
<h2 id="dates">Allowable event dates<a class="headerlink" href="#dates" title="Permalink">&para;</a></h2>
<p>The Apache Community Development Committee pro-actively seeks to avoid conflicts between
Apache-related technology conferences geographically, and between conferences
on the same Apache project topics internationally, to ensure that individual
conferences are successful and that they are not competing for participation
by the same limited community of experts on individual Apache technologies.</p>
<p>The Apache Software Foundation will not approve the use of Apache trademarks
in conjunction with competing conferences that would adversely affect each
event's ability to put on content (i.e. get speakers) and fulfill the goals of having a rich community
event with educational content about Apache projects.</p>
<ul>
<li>
<p>Small events (under 250 expected attendees), and free or purely community-run (non-corporate &amp; non-profit) events might be considered competing only with other events that are about the same Apache project or related Apache projects.</p>
</li>
<li>
<p>Large events (over 250 expected attendees) may be considered competing with
other events even in other Apache project areas, or with the ASF's
own ApacheCon conferences.</p>
</li>
</ul>
<p>An Apache "Announced Event" is an event called "ApacheCon" or "Apache
Roadshow" and listed on <a href="https://events.apache.org/">https://events.apache.org/</a>.</p>
<p>The Apache Software Foundation will not approve the use of Apache trademarks
where a date conflict exists with an Announced Event. A date conflict is defined as:</p>
<ul>
<li>
<p>A proposed announced event (an event that wishes to become an Announced
Event, as defined above) conflicts if it is within 60 days of an Announced Event in the same
geographical area (ie, North America, South America, Europe, Africa, Asia/Pacific) and within
30 days in a different geographical area.</p>
</li>
<li>
<p>A third-party event, or a project event (ie, an Apache Foo event run by
the Apache Foo PMC) is in conflict if it is within six weeks of an Announced Event in the same
geographical area, or within three weeks in a different geographical area.</p>
</li>
</ul>
<p>To ensure that we can approve your request for use of Apache marks, <a href="/foundation/marks/contact#events">contact us</a> with early notice of your
intended timeframe and location to verify no conflicts,
and then follow up with the specific dates and venue once they are scheduled for final
approval and to be placed on the Apache <a href="http://community.apache.org/calendars/conferences.html">calendar</a>.</p>
<p>The Apache Community Development Committee attempts to track all relevant conference
dates for the purpose of scheduling and avoiding conflicts. We publish in
<a href="http://community.apache.org/calendars/conferences.html">our calendar</a> all conferences
run by the ASF, and those approved to make use of ASF marks. Submitting
advance notice of your proposed event's intended dates and prompt confirmation of your
scheduled conference dates to <code>dev@community.apache.org</code> will ensure this calendar is up to
date and help avoid conflicts with related, relevant conferences of the
Apache Software Foundation, its partners, and the rest of the industry. Submission
to dev@community is <strong>not</strong> related to getting trademark permissions.</p>
<h2 id="apachecon">Must not use "Apache" or "ApacheCon" names<a class="headerlink" href="#apachecon" title="Permalink">&para;</a></h2>
<p>Third party events may not use either the "Apache" or the "ApacheCon"
names, nor confusingly similar names, as any part of their primary
branding. These names are reserved exclusively for the ASF and its
own authorized conferences, and for specific PMC-run
events that the Foundation approves.</p>
<p id="other">#3 Other trademark guidelines<a class="headerlink" href="#other" title="Permalink">&para;</a></p>
<p>For more information about Apache marks, 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="approval">How to gain approval to use an Apache Mark in an event<a class="headerlink" href="#approval" title="Permalink">&para;</a></h2>
<p>You must obtain approval in writing from the ASF to use an Apache mark for your conference. If you have not received approval
from VP, Brand or an Apache project's VP, then <em>you do not have permission</em>!</p>
<ol>
<li>Ensure Apache marks are correctly attributed on your site and marketing
materials (if not public yet, provide screenshots or explanations). See <a href="#naming">Referring to Apache marks, projects and products</a></li>
<li>Ensure your date doesn't clash with another Apache event. See <a href="#dates">Dates</a>
for more information and a link to the current list. The ASF will not give approval to
events which clash with, or are very close to, another similar event.</li>
<li>Contact the appropriate PMC(s). PMC representatives are generally
required, during both planning and the event itself, and the earlier you engage
with the PMC the easier this will be to arrange. As an absolute minimum the PMC must approve
your event through their chosen decision-making process.</li>
<li>Identify your main point of contact for the approval process. If possible, this should be a member of
the PMC of the product most closely-related to the event's topic or goal.</li>
<li><a href="/foundation/marks/contact#events">Contact us</a> with your confirmation of above to seek approval.
Include details of:
<ul>
<li>What is the topic focus of the event?</li>
<li>Who is organising the event?</li>
<li>When is the event?</li>
<li>How many attendees are expected?</li>
<li>How much PMC involvement is there already?</li>
<li>Which marks are you requesting?</li>
<li>How would you propose that the ASF will be listed as a community
partner? (See <a href="#partner">ASF listing as Community Partner option</a> )</li>
<li>How will event selection work? (See <a href="#selection">Must allow PMC representatives on event selection committee</a> and <a href="#education">Must provide open educational content</a></li>
<li>Is the event for-profit or non-profit? (See <a href="#funding">Event profits and donations"</a> )</li>
</ul>
</li>
</ol>
<p>Make sure you've done all this and have a mockup of the event's marketing and participant materials ready to show us before
asking for permission to use Apache brands. If the ASF needs further information or requires changes, a representative from
Brand Management or the Apache project in question will contact you. We will typically make a decision within two
weeks of all information being available, and all attributions being present.</p>
<p>Assuming the affected PMCs have approved your event through their appropriate, consensus-based methods <strong>and</strong> VP Trademarks or their representative has raised no objections, you may proceed with your event as planned. However, note that
only explicit approval should be considered authoritative. If in doubt, request
explicit approval.</p>
<p>The ASF gives approval for use of our brands for events on a case-by-case basis and each event must request such approval. If you plan to repeat your event, or if you are planning recurring for-profit events, you can save time in the future by <a href="/foundation/marks/contact#events">contacting us</a> to negotiate a detailed agreement with the ASF.</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>
<h3 id="version">Policy Version<a class="headerlink" href="#version" title="Permalink">&para;</a></h3>
<p>This is version 1.5 of this Apache policy document, published in December 2019. The text was updated to improve readability in August 2021.
Material changes will be marked with a new version number.</p>
<p><strong>v1.1</strong> Update to have permissions by VP, Brand <strong>or</strong> designee</p>
<p><strong>v1.2</strong> Clarify blackout dates, event sizes, and About Apache X text; update version number</p>
<p><strong>v1.3</strong> Update to v1.3; clarify <em>Apache Projectname</em> usage; About paragraph; event size and date blackouts; appropriate Apache project logo usage</p>
<p><strong>v1.4</strong> Update to v1.4; require an anti-harassment policy for 3rd party events</p>
<p><strong>v1.5</strong> Update to v1.5; add more detail regarding conflicting event dates</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>