<!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>Brand Management Quarterly Operations Summary</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="/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 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="brand-management-quarterly-operations-summary">Brand Management Quarterly Operations Summary<a class="headerlink" href="#brand-management-quarterly-operations-summary" title="Permalink">&para;</a></h1>
<p>Historical records of public operations summaries of the ASF Trademarks Committee.</p>
<p><strong>Contents</strong></p>
<div class=".pull-right" style="float:right; border-style:dotted; width:200px; padding:5px; margin:5px">
<p>See Also: <a href="/foundation/marks/resources">Trademark Resources Site Map</a>.</p>
</div>
<div id="toc"><ul><li><a class="toc-href" href="#brand-management-monthly-reports-to-the-board" title="Brand Management Monthly Reports To The Board">Brand Management Monthly Reports To The Board</a></li><li><a class="toc-href" href="#q2-operations-summary-december-2017-fy-2018" title="Q2 Operations Summary - December 2017 (FY 2018)">Q2 Operations Summary - December 2017 (FY 2018)</a></li><li><a class="toc-href" href="#q1-operations-summary-september-2017-fy-2018" title="Q1 Operations Summary - September 2017 (FY 2018)">Q1 Operations Summary - September 2017 (FY 2018)</a></li><li><a class="toc-href" href="#annual-report-june-2017-fy-2017" title="Annual Report June 2017 (FY 2017)">Annual Report June 2017 (FY 2017)</a><ul><li><a class="toc-href" href="#operational-trends" title="Operational Trends">Operational Trends</a></li><li><a class="toc-href" href="#new-policy-initiatives" title="New Policy Initiatives">New Policy Initiatives</a></li><li><a class="toc-href" href="#statistics-and-registrations" title="Statistics And Registrations">Statistics And Registrations</a></li></ul></li><li><a class="toc-href" href="#q3-operations-summary-march-2017-fy-2017" title="Q3 Operations Summary: March 2017 (FY 2017)">Q3 Operations Summary: March 2017 (FY 2017)</a></li><li><a class="toc-href" href="#q2-operations-summary-december-2016-fy-2017" title="Q2 Operations Summary - December 2016 (FY 2017)">Q2 Operations Summary - December 2016 (FY 2017)</a></li><li><a class="toc-href" href="#q1-operations-summary-september-2016-fy-2017" title="Q1 Operations Summary - September 2016 (FY 2017)">Q1 Operations Summary - September 2016 (FY 2017)</a></li><li><a class="toc-href" href="#annual-report-june-2016-fy-2016" title="Annual Report - June 2016 (FY 2016)">Annual Report - June 2016 (FY 2016)</a><ul><li><a class="toc-href" href="#q3-operations-summary-march-2016-fy-2016" title="Q3 Operations Summary - March 2016 (FY 2016)">Q3 Operations Summary - March 2016 (FY 2016)</a></li><li><a class="toc-href" href="#q2-operations-summary-december-2016-fy-2016" title="Q2 Operations Summary - December 2016 (FY 2016)">Q2 Operations Summary - December 2016 (FY 2016)</a></li></ul></li><li><a class="toc-href" href="#annual-report-june-2015-summary-fy-2015" title="Annual Report - June 2015 (summary FY 2015)">Annual Report - June 2015 (summary FY 2015)</a></li></ul></div>
<h3 id="brand-management-monthly-reports-to-the-board">Brand Management Monthly Reports To The Board<a class="headerlink" href="#brand-management-monthly-reports-to-the-board" title="Permalink">&para;</a></h3>
<p>Formally published reports from Brand Management are included in the
<a href="https://whimsy.apache.org/board/minutes/Brand_Management">official board meeting minutes</a> of the ASF.</p>
<h3 id="q2-operations-summary-december-2017-fy-2018">Q2 Operations Summary - December 2017 (FY 2018)<a class="headerlink" href="#q2-operations-summary-december-2017-fy-2018" title="Permalink">&para;</a></h3>
<p>The fall quarter in the Northern Hemisphere brings a regular uptick
in requests and questions, which continues to require effort to provide
timely and complete answers to questioners, especially outside parties.</p>
<p>We've also seen a large uptick in requests to create non-computer
merchandise (shirts, giveaways, etc.) using Apache brands.  Most of
these requests are a good way to help promote awareness of Apache
projects and their contributors, and are well in line with our policy:</p>
<p><a href="/foundation/marks/merchandise">https://www.apache.org/foundation/marks/merchandise</a></p>
<p>While a few Apache project PMCs continue to actively monitor uses
of their brand and raise issues appropriately, the rapid growth in
popular projects, both in the big data space and elsewhere, continues
to be an issue with our capacity to provide knowledgeable and timely
responses to questions.  We will be investigating new ways to invest
in our ability to provide the branding and trademark services that
our many Apache projects deserve.</p>
<p>All of the ASF's education and policies around trademark law for Open
Source as well as brand management are published online, and we urge
project participants and software vendors alike to review and ask us
questions about them - please review our complete site map:</p>
<p><a href="/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>On the registration front, we continue to work with counsel to process
renewals and registrations for projects.  While most are straightforward,
some are complex, and require a significant amount of both our limited
volunteer officer time as well as our counsel's time.</p>
<p>As Apache projects power more of the internet every day, we
look to the companies that profit from Apache software products to
fully respect Apache brands. We very much appreciate the companies that
pass on their <strong>completed</strong> trademark registrations along with the
codebases they donate to the Apache Incubator. Having existing
registrations makes managing trademarks much simpler for the ASF.</p>
<p>While many companies continue to give credit to our volunteer
communities, sadly some companies continue to
take advantage of our non-profit work by unfairly co-opting Apache
project brands or by interfering with Apache project governance.
Reviewing and correcting these mis-uses is an ongoing effort for the ASF
Board, the Brand Management Committee, and all Apache projects.</p>
<p>Please <a href="/foundation/marks/contact">contact the Apache Brand Management team</a> with your
questions or suggestions!</p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h3 id="q1-operations-summary-september-2017-fy-2018">Q1 Operations Summary - September 2017 (FY 2018)<a class="headerlink" href="#q1-operations-summary-september-2017-fy-2018" title="Permalink">&para;</a></h3>
<p>The summer quarter continues to be traditionally quiet in terms of
trademark questions and requests, although we continue to get new
kinds of questions coming in with some regularity.  Some Apache
project PMCs now have experience implementing our trademark policies
and have been doing a great job answering basic questions themselves
directly with third parties, which is great to see.  However as our
number of projects grow, so do the number of questions or issues
overall which continues to tax our small pool of Brand Management
volunteers with broad experience.</p>
<p>All of the ASF's education and policies around trademark law for Open
Source as well as brand management is published online, and we urge
project participants and software vendors alike to review and ask us
questions about them - please review our complete site map:</p>
<p><a href="/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>On the registration front, we have come upon our first large set of
trademark registration renewals and maintenance paperwork.  Although
our legal counsel handles all the actual paperwork with various
national trademark registries, this is still an ongoing effort for our
volunteer Brand Management team to validate continuing use of these
marks - as well as the financial costs for registry fees.  In almost
all cases we will continue to maintain existing registrations for
projects.  We continue to have some projects request new registrations
as well, and are successfully negotiating some coexistence agreements
with potentially similar software brands in the marketplace as well.</p>
<p>As more Apache brands and projects power more business every year, we
continue to look to the companies that profit from Apache software products to
help respect Apache brands. We very much appreciate the companies that
pass on their trademark registrations with incoming donations of
podlings joining the Incubator. Having existing registrations makes the
trademark management process simpler for the ASF.</p>
<p>While many companies continue to properly give credit to our volunteer
communities, sadly some companies continue to --or have started to--
take advantage of our non-profit work by unfairly co-opting Apache
project brands or by interfering with Apache project governance.
Reviewing and correcting these mis-uses is an ongoing effort for the ASF
Board, the Brand Management Committee, and all Apache projects.</p>
<p>Please <a href="/foundation/marks/contact">contact the Apache Brand Management team</a> with your
questions or suggestions!</p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h3 id="annual-report-june-2017-fy-2017">Annual Report June 2017 (FY 2017)<a class="headerlink" href="#annual-report-june-2017-fy-2017" title="Permalink">&para;</a></h3>
<h4 id="operational-trends">Operational Trends<a class="headerlink" href="#operational-trends" title="Permalink">&para;</a></h4>
<p>We continues to field both general questions and permissions requests
for a wide variety of brand uses.  Along with questions about using Apache project
marks in unusual places, including television, movies, and a variety of
academic papers and vendor marketing, we've had questions about the
applicability of the APACHE (R) trademark to licenses themselves.  While
we have the expertise to help answer these questions, it is still
difficult to keep all our operations proceeding speedily while relying
solely on volunteers for all work that doesn't directly require counsel.</p>
<p>Some projects continue to do a good job of policing and addressing
potential misuses of their brands, and the strength of the Apache brand<br/>
continues to get good results when we request the trademark credit our
volunteer communities deserve.</p>
<h4 id="new-policy-initiatives">New Policy Initiatives<a class="headerlink" href="#new-policy-initiatives" title="Permalink">&para;</a></h4>
<p>Part of the Brand Management Committee has discussed and written new
policies to clarify proper uses of Apache brands and to address many
new permissions requests for apparel featuring Apache project brands.</p>
<p>While the ASF is firmly committed to providing free access to our source
code and all resources, we are happy to allow respectful vendors to
use selected Apache trademarks on non-computer related goods, like
apparel, stickers, and the like.  These uses can both publicize project
brands as well as encourage a sense of community for Apache project fans.
Free giveaways are generally fine, and the ASF now has a policy for
licensing specific brands to apparel or sticker companies with a clear
license and profit sharing arrangement.</p>
<ul>
<li><a href="/foundation/marks/merchandise">See the new Apache Non-Software Merchandise Branding Policy</a></li>
</ul>
<p>Our new <a href="/foundation/marks/services">Third Party Services Naming Branding Policy</a>
clarifies the use of Apache brands in services, for example the many cloud
or hosting providers who offer services around Apache software products.
In addition, a greatly expanded <a href="/foundation/marks/guide">Apache Product Name Usage Guide</a>
will help marketers and technologists alike better refer to Apache
communities and the software products they produce.</p>
<h4 id="statistics-and-registrations">Statistics And Registrations<a class="headerlink" href="#statistics-and-registrations" title="Permalink">&para;</a></h4>
<p>With several guides for how Apache project communities can improve their
brands, better attract new contributors, and register their project
name as a trademark, we offer comprehensive advice for all Apache
projects and podlings.  We at Brand Management are happy to work with
all Apache projects to answer questions or submit registration
applications, but it's still up to the individual Apache communities
to take the first step and request registration.</p>
<p>In the past year, 11 new projects have made trademark applications in
the US and other countries, 5 projects have had their registrations
granted, and two incoming podlings have had their existing trademark
registrations transferred to the ASF as part of their graduation to
top level project status.</p>
<p>Please <a href="/foundation/marks/contact">contact the Apache Brand Management team</a> with your
questions or suggestions!</p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h3 id="q3-operations-summary-march-2017-fy-2017">Q3 Operations Summary: March 2017 (FY 2017)<a class="headerlink" href="#q3-operations-summary-march-2017-fy-2017" title="Permalink">&para;</a></h3>
<p>Over the past few years, the Brand Management committee has been working
on a comprehensive set of trademark policies and procedures to help our
volunteer-run communities best protect their shared brand of Apache
project independence. During the holiday lull at the end of the year,
we've worked on drafting policies for use of Apache brands in services
and hosting, as well as detailed policies for producing merchandise
(apparel, stickers, and non-computer goods) using any Apache project's
names or logos. This is timely, as a number of apparel vendors have
approached us recently for licensing agreements. These products can both
provide a way for people to show support for Apache projects, as well as
donations of profits from the vendors.</p>
<p>All of the ASF's education and policies around trademark law for Open
Source as well as brand management is published online, and we urge
project participants and software vendors alike to review and ask us
questions about them: <a href="http://www.apache.org/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>On the registration front, we are facing more potential conflicts with
the few projects that request registrations than in the past. The
limitations of having a volunteer-run organization with nearly 200
active projects means that managing which registrations to fight for is
still a complex problem to work through.</p>
<p>As more Apache brands and projects power more business every year, we
look to the many companies that profit from Apache software products to
help respect Apache brands. We very much appreciate the companies that
pass on their trademark registrations with incoming donations of
podlings joining the Incubator. Having existing registrations makes the
trademark management process simpler for the ASF.</p>
<p>While many companies continue to properly give credit to our volunteer
communities, sadly some companies continue to --or have started to--
take advantage of our non-profit work by unfairly co-opting Apache
project brands or by interfering with Apache project governance.
Reviewing and correcting these mis-uses is an ongoing effort for the ASF
Board, the Brand Management Committee, and all Apache projects.</p>
<p>Please <a href="/foundation/marks/contact">contact the Apache Brand Management team</a> with your
questions or suggestions!</p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h3 id="q2-operations-summary-december-2016-fy-2017">Q2 Operations Summary - December 2016 (FY 2017)<a class="headerlink" href="#q2-operations-summary-december-2016-fy-2017" title="Permalink">&para;</a></h3>
<p>The ASF continues to be at the forefront of what's really a new kind of
organization, where our independently governed and distributed volunteer
communities are in charge of managing not just their technologies and
communities, but their trademarks and their whole brand and presence in
the larger world.  We continue to build new educational materials to
help our highly technical communities understand the larger implications
of managing the brand and outward impact of their projects, including
proper trademark maintenance.</p>
<p>The ASF is seen as a leader in trademark and brand policies, and our
example is helping other FOSS communities as well as companies better
understand how we can work together fairly and productively.   Our
community-focused education and policy materials are the best available,
and we recently expanded to provide a more generic module on Practical
Trademark Law for FOSS projects.  We continue to work on improving
education and mentoring for projects to ensure they understand how to
best maintain their independent brand and image.</p>
<p>All of the ASF's education and policies around trademark law for open
source as well as brand management is published online, and we urge
project participants and software vendors alike to review and ask us
questions about them:</p>
<p><a href="http://www.apache.org/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>On the registration front, we continue to get some projects who request
registration of names or beloved logos in the US and internationally. We
continue to exercise financial care with our budget by working with the
relevant project communities to detail why registration is important for
them to attract new project contributors around the world.</p>
<p>With the continued rise of prominent Apache brands and projects that
power more business every year, we look to the many companies that
profit from Apache software products to help respect Apache brands.
While many companies continue to properly give credit to our volunteer
communities, sadly some companies continue to --or have started to--
take advantage of our non-profit work by unfairly co-opting Apache
project brands or by interfering with Apache project governance.
Reviewing and correcting these mis-uses is an ongoing effort for the ASF
Board, the Brand Management Committee, and all Apache projects.</p>
<p>The Apache Brand Management team welcomes your questions on our private
email list: <a href="mailto:trademarks@apache.org">trademarks@apache.org</a></p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h3 id="q1-operations-summary-september-2016-fy-2017">Q1 Operations Summary - September 2016 (FY 2017)<a class="headerlink" href="#q1-operations-summary-september-2016-fy-2017" title="Permalink">&para;</a></h3>
<p>Our Foundation-wide educational and policy improvement work continues to
pay off, as more Apache projects are getting organized about maintaining
and promoting their brands in a more organized fashion. Some projects
are continuing work on their own detailed how-to guides for companies
that want to <em>properly</em> use valuable Apache brands as part of their
products or Web presences.  However the rapid growth in new projects in
the Incubator means that more help spreading the education to new
communities is still needed.</p>
<p>Our detailed list of resources, both Apache policies as well as pointers
to other valuable open source branding guidelines and information is
improving our ability to respond, as seen by the more detailed questions
we get from third parties, as well as by the ability of some experienced
projects to handle brand enforcement more independently.
<a href="http://www.apache.org/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>While open source and the project communities are well understood in
industry these days, open source <em>governance</em> and brand management are
becoming more important topics.  The ASF is seen as a leader in
governance and brand policing, and our example is helping other FOSS
communities as well as companies better understand how we can work
together fairly and productively.</p>
<p>On the registration front, we continue to get some projects who request
registration of names or beloved logos in the US and internationally.
We continue to exercise financial care with our budget by working with
the relevant project communities to detail why registration is important
for them to attract new project contributors around the world.</p>
<p>With the continued rise of prominent Apache brands and projects that
power more business every year, we look to the many companies that
profit from Apache software products to help respect Apache brands.
While many companies continue to properly give credit to our volunteer
communities, sadly some companies continue to - or have started to -
take advantage of our non-profit work by unfairly co-opting Apache
project brands.  Reviewing and correcting these mis-uses is an ongoing
effort for the ASF and all Apache projects.</p>
<p>You can always ask the Apache Brand Management team private questions at
<a href="mailto:trademarks@apache.org">trademarks@apache.org</a></p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h3 id="annual-report-june-2016-fy-2016">Annual Report - June 2016 (FY 2016)<a class="headerlink" href="#annual-report-june-2016-fy-2016" title="Permalink">&para;</a></h3>
<p>While Foundation-wide educational and policy improvement work continues,
we are still finding communities that need more help in reviewing their
brand and presence, and in keeping a focus on reviewing uses of their
brand by vendors. While many companies support Apache projects in a
variety of ways, new brand misuses continue to crop up across various
Apache projects that need to be dealt with.</p>
<p>Our detailed list of resources, both Apache policies as well as pointers
to other valuable Open Source branding guidelines and information is
continuing to improve with more detailed process guides for community
brand management.</p>
<p><a href="http://www.apache.org/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>Our VP, Brand Management gave an expanded community branding talk at
ApacheCon in Vancouver with great feedback, showing the benefits of a
better brand and Website in terms of attracting new contributors. They
were also an invited keynote speaker at the FLOSS Community Metrics
conference, as well as leading several Community Leadership SummIt
unconference sessions on community-led branding and governance topics. A
BOF at OSCON Austin also gave another opportunity to showcase how Apache
projects think about their brands to many other FOSS communities.</p>
<p>The feedback from these sessions was positive, and shows a clear need
for more education and help for FOSS communities around the ecosystem.
While licensing is well understood, and community governance has plenty
of leaders across the software world, brand management and trademark
knowledge is still lacking in many communities. The ASF is clearly
serving as a leader in this space through our examples and materials.</p>
<p>With the rise of both prominent Apache brands as well as a number of
other major movements showcasing how important vendor neutral Open
Source project branding can be, we also welcome feedback from the many
organizations that both use Apache software to power their business, as
well as extend our thanks to those who contribute code to our projects
and those who respect Apache brands.</p>
<p>You can always ask the Brand Management team private questions at:
<a href="mailto:trademarks@apache.org">trademarks@apache.org</a></p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h4 id="q3-operations-summary-march-2016-fy-2016">Q3 Operations Summary - March 2016 (FY 2016)<a class="headerlink" href="#q3-operations-summary-march-2016-fy-2016" title="Permalink">&para;</a></h4>
<p>Our Foundation-wide educational and policy improvement work continues to
pay off, as more Apache projects are getting organized about maintaining
and promoting their brands in a more organized fashion.  There is still
a wide variety of experience and attention about proper branding and
policing across our diverse volunteer communities, several projects are
working on their own detailed how-to guides for companies that want to
<em>properly</em> use valuable Apache brands as part of their products or web
presences.</p>
<p>Our detailed list of resources, both Apache policies as well as pointers
to other valuable open source branding guidelines and information is
improving our ability to respond, as seen by the more detailed questions
we get from third parties, as well as by the ability of some projects to
handle brand enforcement more independently.</p>
<p><a href="http://www.apache.org/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>While open source and the project communities are well understood in
industry these days, open source <em>governance</em> and brand management are
becoming more important topics.  The ASF is often seen as a leader in
governance and brand policing, both due to our strong history of
independent governance as well as from our wide variety of popular
projects spanning all software technologies.  We will continue to
provide more education and guidance for our projects, as well as
improving and smoothing relations with vendors using our brands to
ensure that our volunteer project communities always get the credit they
deserve for building Apache software.</p>
<p>On the registration front, our projects are really beginning to respond,
and many more projects are requesting both US registrations, as well as
a variety of international registrations; including in one case a
request to register a particularly detailed project logo.  We continue
to exercise financial care with our budget by working with the relevant
project communities to detail why registration is important for them to
attract new project contributors around the world.</p>
<p>With the rise of both prominent Apache brands as well as a number of
other major movements showcasing how important vendor neutral open
source project branding can be, we also welcome feedback from the many
organizations that both use Apache software to power their business, as
well as extend our thanks to those who contribute code to our projects.</p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h4 id="q2-operations-summary-december-2016-fy-2016">Q2 Operations Summary - December 2016 (FY 2016)<a class="headerlink" href="#q2-operations-summary-december-2016-fy-2016" title="Permalink">&para;</a></h4>
<p>The brand management team continues to work on educational materials to
help promote our many Apache project brands, as well as showing our
volunteer communities effective ways to police third party use of Apache
project brands.  We now have a detailed list of trademark and branding
resources available for our communities as well as vendors who work with
Apache projects:</p>
<p><a href="http://www.apache.org/foundation/marks/resources">http://www.apache.org/foundation/marks/resources</a></p>
<p>Along with presenting on trademark basics at ApacheCon conferences, our
VP of Brand Management was invited to speak on a panel discussion about
community owned trademarks at Columbia Law School, at SFLC's annual
conference.  Improving awareness of the importance of trademarks to our
communities as well as to the Foundation is critical in ensuring
long-lived and widely-contributed to software projects.</p>
<p>We are also continuing to seek US trademark registrations for projects
that ask for one, as well as improving our ability to register selected
Apache project brands in other countries with our limited budget.</p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</p>
</blockquote>
<h3 id="annual-report-june-2015-summary-fy-2015">Annual Report - June 2015 (summary FY 2015)<a class="headerlink" href="#annual-report-june-2015-summary-fy-2015" title="Permalink">&para;</a></h3>
<p>The Apache(R) brand holds a unique position in the software world, in
that it is associated with communities and technologies in a wide
variety of industries.  Apache software technology powers webservers,
office suites, high performance search engines, a full stack of software
development tools, geospatial work, and more than a dozen different big
data technologies, including Apache Hadoop(R).  Similarly, Apache
communities are often used as models for open source project behavior
and bylaws by companies and other foundations alike.</p>
<p>A key driver for innovation within Apache projects is the <em>independent</em>
community governance model that the ASF provides.  Part of the Apache
Way and a requirement for all Apache projects is that they must govern
their affairs independently of commercial influence.  This ensures that
project contributors are creating software for the public good, and not
just for specific vendors.  Independent project governance - which
includes allowing new contributors a say in the project direction going
forward - ensures that every company and individual feels comfortable
donating their time and code to any Apache project.</p>
<p>As projects like Apache Hadoop are now powering whole industries, the
pressures from various software companies to be the market leader grow.
To ensure Apache projects are seen as independent, the ASF owns all
project trademarks on behalf of our project communities.  As a
non-profit, we recognize the importance and value of the brands and good
reputations that our volunteer communities have built, and the ASF will
defend all of our community brands.</p>
<p>To ensure that Apache project brands are respected, the ASF's Trademarks
Committee provides assistance and education to all Apache projects for
how to display their trademarks, as well as how to deal with third
parties using Apache brands.  Similarly, we have worked directly with a
large number of companies who use Apache brands in their marketing to
ensure that Apache trademarks are respected.  While the Apache Trademark
Policy allows specific uses of Apache brands by third parties, it still
clearly shows the ASF's ownership of and defense of our project trademarks.
Similarly, the Trademarks Committee works with the Apache Incubator to
vet all incoming project names to the ASF before they become official
top level projects; we have reviewed 28 new project names in the past year.</p>
<p>The ASF also provides US and some international trademark registrations
for selected Apache projects.  While both DLAPiper and the Software
Freedom Law Center provide pro bono legal advice, we rely on our budget
to pay for trademark registration fees.  Being able to register select
Apache project trademarks greatly eases the process of policing use of
those marks, freeing our community volunteers up to go back working on
all the great code they produce.</p>
<p>As we provide better education on the importance of defending Apache
brands to our communities, many more PMCs are requesting registration of
their project brands.  Starting with over 40 registrations for 8
different projects, in the past year several key applications for our
APACHE brand internationally have finalized, and we have submitted 10
new project registration applications, and have great interest from many
more PMCs who wish to register their product names.</p>
<blockquote>
<p>Shane Curcuru, Vice President ASF Brand Management</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="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="/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.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>