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

  <!-- pagefind search -->
  <link href="/_pagefind/pagefind-ui.css" rel="stylesheet">
  <script src="/_pagefind/pagefind-ui.js" type="text/javascript"></script>
  <script>
    window.addEventListener('DOMContentLoaded', (event) => {
        new PagefindUI({ element: "#pagefind-search" });
    });
  </script>

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

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

      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
 
  </header>
  <main id="maincontent">
<div class="container">    <h1 id="third-party-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="https://tac.apache.org">Travel Assistance</a></li>
            <li><a href="/foundation/getinvolved.html">Get Involved</a></li>
            <li><a href="/foundation/policies/conduct.html">Code of Conduct</a></li>
            <li><a href="http://community.apache.org/newbiefaq.html">Community FAQ</a></li>
            <li><a href="/memorials/">Memorials</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Innovation</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="http://incubator.apache.org/">Incubator</a></li>
            <li><a href="http://labs.apache.org/">Labs</a></li>
            <li><a href="/licenses/">Licensing</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/foundation/marks/">Trademark Policy</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Tech Operations</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/dev/">Developer Information</a></li>
            <li><a href="/dev/infrastructure.html">Infrastructure</a></li>
            <li><a href="/security/">Security</a></li>
            <li><a href="http://status.apache.org">Status</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Press</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/press/">Overview</a></li>
            <li><a href="https://blogs.apache.org/">ASF News</a></li>
            <li><a href="https://blogs.apache.org/foundation/">Announcements</a></li>
            <li><a href="https://twitter.com/TheASF">Twitter Feed</a></li>
            <li><a href="/press/#contact">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Legal</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/legal/">Legal Affairs</a></li>
            <li><a href="/legal/dmca.html">DMCA</a></li>
            <li><a href="/licenses/">Licensing</a></li>
            <li><a href="/foundation/marks/">Trademark Policy</a></li>
            <li><a href="/foundation/records/">Public Records</a></li>
            <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
            <li><a href="/licenses/exports/">Export Information</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-1">
        </div>

      </div>
      <hr class="col-lg-12 hr-white" />
      <div class="row">
        <div class="col-lg-12">
          <p class="text-center">Copyright &#169; 2023 The Apache Software Foundation, Licensed under the <a class="white" href="/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
          <p class="text-center">Apache and the Apache feather logo are trademarks of The Apache Software Foundation. </p>
        </div>
      </div>
    </div>

  </footer>

  <!-- / Footer -->

  <script src="/js/jquery.min.js"></script>
  <script src="/js/bootstrap.js"></script>
  <script src="/js/slideshow.js"></script>
  <script>
    (function($){
    $(document).ready(function(){
    $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
    event.preventDefault();
    event.stopPropagation();
    $(this).parent().siblings().removeClass('open');
    $(this).parent().toggleClass('open');
    console.log('WOrked');
    });
    });
    })(jQuery);
  </script>
</body>
</html>