<!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>Five-year Strategic Plan for the Apache Software Foundation</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>


</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="five-year-strategic-plan-for-the-apache-software-foundation">Five-year Strategic Plan for the Apache Software Foundation<a class="headerlink" href="#five-year-strategic-plan-for-the-apache-software-foundation" title="Permalink">&para;</a></h1>
<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permalink">&para;</a></h2>
<p>This 5 year plan (written back in 2018) attempts to quantify the vision and goals for the
Apache Software Foundation (ASF) as expressed by the Board of Directors
and many of our officers responsible for our corporate operations.
The Board intends to update this document on a regular basis.</p>
<p><strong>Contents</strong></p>
<div id="toc"><ul><li><a class="toc-href" href="#vision" title="Vision">Vision</a></li><li><a class="toc-href" href="#objectives" title="Objectives">Objectives</a></li><li><a class="toc-href" href="#asf-services-offered-to-our-communities" title="ASF Services Offered To Our Communities">ASF Services Offered To Our Communities</a><ul><li><a class="toc-href" href="#asf-services-infrastructure" title="ASF Services - Infrastructure">ASF Services - Infrastructure</a></li><li><a class="toc-href" href="#asf-services-marketing-publicity-and-brand-management" title="ASF Services - Marketing, Publicity and Brand Management">ASF Services - Marketing, Publicity and Brand Management</a></li><li><a class="toc-href" href="#asf-services-conferences-and-community-development" title="ASF Services - Conferences and Community Development">ASF Services - Conferences and Community Development</a></li><li><a class="toc-href" href="#asf-services-legal" title="ASF Services - Legal">ASF Services - Legal</a></li></ul></li><li><a class="toc-href" href="#asf-processes-we-use" title="ASF Processes We Use">ASF Processes We Use</a><ul><li><a class="toc-href" href="#asf-processes-pmc-lifecycle" title="ASF Processes - PMC lifecycle">ASF Processes - PMC lifecycle</a></li><li><a class="toc-href" href="#asf-processes-governance" title="ASF Processes - Governance">ASF Processes - Governance</a></li></ul></li><li><a class="toc-href" href="#asf-budget-and-finance" title="ASF Budget and Finance">ASF Budget and Finance</a><ul><li><a class="toc-href" href="#asf-budget-and-finance-finance-operations" title="ASF Budget and Finance - Finance operations">ASF Budget and Finance - Finance operations</a></li><li><a class="toc-href" href="#asf-budget-and-finance-financial-analysis-and-planning" title="ASF Budget and Finance - Financial Analysis and Planning">ASF Budget and Finance - Financial Analysis and Planning</a></li><li><a class="toc-href" href="#asf-budget-and-finance-fundraising" title="ASF Budget and Finance - Fundraising">ASF Budget and Finance - Fundraising</a></li><li><a class="toc-href" href="#asf-budget-and-finance-external-partnerships" title="ASF Budget and Finance - External Partnerships">ASF Budget and Finance - External Partnerships</a></li><li><a class="toc-href" href="#asf-budget-and-finance-5-year-financial-plan" title="ASF Budget and Finance - 5-year Financial Plan">ASF Budget and Finance - 5-year Financial Plan</a></li></ul></li><li><a class="toc-href" href="#updating-this-plan" title="Updating This Plan">Updating This Plan</a></li></ul></div>
<h2 id="vision">Vision<a class="headerlink" href="#vision" title="Permalink">&para;</a></h2>
<p>Our mission is to support the creation and distribution of Open Source
software at no charge under the Apache License, as per our Bylaws. To
this end we provide project spaces and resources for like-minded
communities to flourish, produce and release software under our legal
umbrella.</p>
<p>We are strongly attached to our projects' independence from any
external influences, be they corporate, organizational or otherwise.
This allows us to provide a neutral space for our communities.</p>
<p>As a Foundation we do not have a technical strategy, we delegate that
to our projects.</p>
<p>The Foundation is managed and directed by its Members, who are
individual volunteers, as opposed to companies or organizations, who
cannot be Members of the Foundation nor take a direct role in our
projects.</p>
<p>We help our communities understand and practice the Apache Way, a
collection of best practices for collaboration and project
sustainability that we document and clarify on an ongoing basis.</p>
<p>Our community members act as individuals and their rights and
responsibilities are based their merit, defined by what they
individually do in project communities, not on any external
affiliation, title, or degree they may have, nor on their
contributions to other projects or organizations.</p>
<p>We provide very reliable and highly automated core infrastructure
services to our projects and encourage them to use some external non-
core services in addition to that, based on their specific needs, when
that helps keep our own services simple and focused. For durability,
all our critical data and services are managed or mirrored on systems
that we fully control.</p>
<p>Our marketing and outreach is focused on activities that directly
support our mission, along with fundraising-related activities that
help find and retain the sponsors on which our operations depend.</p>
<p>We provide legal and brand management services to our projects based
on demonstrated needs, and define branding guidelines to help our
projects benefit from the strong Apache brand in an appropriate way.</p>
<p>We welcome new projects via our Incubator, where experienced Mentors
help them learn to operate as an Apache community and project.
Incubation is where communities are defined, so we put a strong
emphasis on guidance during the incubation phase to preserve our core
values as the Foundation grows.</p>
<h2 id="objectives">Objectives<a class="headerlink" href="#objectives" title="Permalink">&para;</a></h2>
<ol>
<li>
<p>Ensure that the services that the ASF offers to project communities
are clearly defined and can be reliably delivered in a manner that
meets their expectations.</p>
</li>
<li>
<p>Improve our success for identifying, attracting, welcoming and
developing "like-minded communities" that will be successful at the
ASF.</p>
</li>
<li>
<p>Effectively scale our operations and governance processes in such a
way that the ASF continues to be a light-process, light-governance,
largely decentralized organization whose central operations serve
projects in a manner consistent with the way PMCs are expected to
serve their communities.</p>
</li>
<li>
<p>Ensure the financial soundness of the ASF over the term of the plan
and establish the foundation for long-term stability.</p>
</li>
</ol>
<h2 id="asf-services-offered-to-our-communities">ASF Services Offered To Our Communities<a class="headerlink" href="#asf-services-offered-to-our-communities" title="Permalink">&para;</a></h2>
<p>The ASF offers a number of important services to our project communities.</p>
<h3 id="asf-services-infrastructure">ASF Services - Infrastructure<a class="headerlink" href="#asf-services-infrastructure" title="Permalink">&para;</a></h3>
<p>The ASF currently provides infrastructure services to project
communities including mailing list, website and scm hosting, issue
trackers and a range of build and deployment tools.  Many projects now
use GitHub and other "external" providers for some of these services.
Infrastructure services overall account for more than 80% of the total
ASF expense budget.  Increasingly, project communities have
infrastructure requirements that strain the capabilities of the ASF.
We have, broadly speaking, three choices on how to plan the evolution
of ASF infrastructure services:</p>
<ol>
<li>
<p>Limit incoming project communities to those with needs that we can
already service and plan using a simple growth forecast.</p>
</li>
<li>
<p>Provision for the demands of projects with unusually large needs
and increase budget forecasts accordingly.</p>
</li>
<li>
<p>Encourage more use of externally provided services by project
communities.</p>
</li>
</ol>
<p>We believe that 3. Is the best option, using a simple growth forecast
to project expenses and effective governance and mentoring to ensure
that using externally provided services does not in any way present
barriers to entry to projects or reduce transparency, inclusiveness
and diversity in project decision-making. This requires that we make
clear to project communities the limitations of the services that they
can expect from the ASF and support and enable them to secure
necessary infrastructure support externally.  We must also ensure that
policies and practices for using external services do not result in
any loss of independence, transparency or inclusiveness among ASF
project communities.  The ASF Directed Sponsorship program should be
considered as a first option for projects in need of support beyond
what ASF infrastructure provides. From an infrastructure budget
planning perspective, this means that we can use conservative
forecasts, based on simple project-count based models.  Moreover, we
do not believe that limiting infrastructure expense growth should be a
consideration in our strategy for managing inflow into the Incubator.
In other words, we do not intend to use Incubator inflow limitation as
a strategy for infrastructure cost management.</p>
<h3 id="asf-services-marketing-publicity-and-brand-management">ASF Services - Marketing, Publicity and Brand Management<a class="headerlink" href="#asf-services-marketing-publicity-and-brand-management" title="Permalink">&para;</a></h3>
<p>Services in this category are provided both at the foundation level
and to individual projects. To date, our focus has been primarily on
effectively responding to queries and press events, managing our ASF
public presence and supporting projects communities in promoting
achievements and events.  We can expect the demand for these currently
provided services to scale over the next 5 years commensurately with
the growth in projects.</p>
<p>A challenge that has been identified as critical to our plan is the
need to ensure that the communities that we attract and welcome into
the ASF really are "like-minded" in the sense that they contribute
positively to the evolution of the Apache Way.  There are two things
that we should plan to do to improve the effectiveness of community
marketing and development at the ASF:</p>
<ol>
<li>Move from a mostly passive, "see what comes our way" approach to
project community marketing to a more proactive and strategic approach</li>
<li>Improve training and communication on the Apache Way</li>
</ol>
<p>These items will require marketing and publicity resources beyond what
we have in place today. In addition to continuing strong contribution
by volunteers,  we should plan, therefore, to increase our investment
in ASF marketing and communications. Both of these items will also
require more focus from the Board and the ASF membership on developing
our outreach, selection and mentoring practices.</p>
<h3 id="asf-services-conferences-and-community-development">ASF Services - Conferences and Community Development<a class="headerlink" href="#asf-services-conferences-and-community-development" title="Permalink">&para;</a></h3>
<p>The ASF has traditionally held annual conferences, often on multiple
continents.  We believe that these conferences contribute to our
mission in (at least) two ways.  First, they provide a venue for ASF
volunteers to meet face-to-face.  In some cases, this is the only
venue in which ASF volunteers get to meet one another in person.
Secondly, conferences can be used to generate interest in Apache
project communities.  ASF conferences have had two operational
challenges.  First, they have generally lost money in recent years.
This has contributed to the second challenge, which is that it is
difficult if not impossible to run high-quality conferences using all
volunteer resources.  To put it simply, if the conferences made money,
commercial providers would run them for us.  They do not make money.</p>
<p>We plan to run an experiment in 2018, using ASF funds to remove the
profitability constraint from ASF conferences.  If this experiment is
successful, we may agree on an annual subsidy that VP, Conferences can
plan to use to make up the difference between what ASF conferences
cost to produce and the revenue that they generate.</p>
<p>ASF-level conferences are not the only events that our communities use
to collaborate in-person.  We believe that individual or group
project-level events also contribute to our mission and we should
support them.  In some cases, project communities ask for and receive
support from commercial entities for project events.  We want to
encourage this type of support and we want the process for enabling it
to be as simple and easy as possible for both the communities and the
sponsoring organizations.  Given that not all project communities will
be able to find the funds for events that will benefit them, we will
agree on an annual budget to cover project-specific community
development initiatives.  That budget will be administered by the
Community Development PMC.</p>
<h3 id="asf-services-legal">ASF Services - Legal<a class="headerlink" href="#asf-services-legal" title="Permalink">&para;</a></h3>
<p>The ASF is fortunate to have pro bono legal counsel available that
meets most of our legal advice and representation needs.  The
exception to this is trademarks-related costs, which we are no longer
able to acquire as a pro bono service.  We need, therefore, to develop
a strategy and budget for this expense.</p>
<h2 id="asf-processes-we-use">ASF Processes We Use<a class="headerlink" href="#asf-processes-we-use" title="Permalink">&para;</a></h2>
<p>To fulfill our mission of producing software for the public good, we
document and promote certain processes for our projects building software.</p>
<h3 id="asf-processes-pmc-lifecycle">ASF Processes - PMC lifecycle<a class="headerlink" href="#asf-processes-pmc-lifecycle" title="Permalink">&para;</a></h3>
<p>We believe that the processes for onboarding new communities via the
Incubator (or direct to TLP) channels are fit for purpose and can
continue to scale.  We also believe that the core oversight processes
for operating PMCs can continue to serve the needs of the foundation
over at least the next five years.  Finally, we believe that the Attic
provides an effective means for retiring no longer viable projects.
In each of these cases, however, we hope to make significant progress
over the next 5 years improving our implementation and execution
(without necessarily introducing new PMC lifecycle phases or
governance processes).  Specifically, we hope to:</p>
<ol>
<li>
<p>Improve the community mentoring and understanding of Apache Way
processes during the incubation process</p>
</li>
<li>
<p>Improve the success rate for podlings entering the Incubator.  Here
"success" means timely graduation and evolution to become healthy
TLPs. We would like to reduce the time podlings spend in the
Incubator, as much as possible. Either by graduating them quickly, if
they are found to be a good fit for the ASF, or by failing them
quickly if they're not a good fit.</p>
</li>
<li>
<p>Reduce the need for Board intervention in PMC affairs</p>
</li>
</ol>
<p>As the ASF scales, the ability for the Board and members with long
experience to engage with Incubator podlings and TLPs is becoming an
effective growth rate limiter.  We need to either reduce the growth
rate, increase the speed with which new members can become effective
mentors, or improve processes and built-in controls so that the
objectives above are achieved without depending on increased ad hoc
interventions.  Our aim is actually to decrease the need for
intervention in communities by ASF members not already substantively
engaged in those communities.</p>
<p>Our planning assumption is that the rate of new projects entering the
Incubator will continue to grow according to the trend of the last
three years.  We do not expect the percentage of initial inquiries
that lead to entering podlings to decrease, but we hope to improve the
effectiveness of the outreach, intake and incubation processes.  In
other words, our aim is not to be "&oelig;more rigorous" in allowing
podlings into the Incubator, but rather to get a more-likely-to-
succeed mix entering the funnel and improving mentoring and access to
resources for podlings. We do not intend to artificially throttle the
flow into or out of the Incubator, but we will focus on improving
mentoring and the availability of active and engaged mentors is likely
to become a constraint to the growth rate.  Regarding outreach, we
believe that investments in planned and structured marketing to help
attract good prospective communities is important and our intention is
to make these investments.</p>
<h3 id="asf-processes-governance">ASF Processes - Governance<a class="headerlink" href="#asf-processes-governance" title="Permalink">&para;</a></h3>
<p>As the ASF scales, our flat, direct-oversight governance model will
continue to face challenges. Over the next 5 years, we expect to need
to make some changes in how governance works, but our goal is to, as
much as possible, hold onto the basic model that exists today wherein
the only recognized organizational entities are PMCs, the Board, the
Membership, committers, the Officers and committees responsible for
ASF operations. In other words, we do not intend to insert
organizational layers such as groups of PMCs or different levels among
Directors or within the membership. We will continue to encourage TLPs
that verge on becoming "umbrellas" to split into multiple projects so
that PMC members can be expected to provide oversight to full project
communities.</p>
<p>We expect the PMC reporting schedule to scale manageably over the next
5 years.  The Board currently reviews approximately 80 reports per
month today and we expect that number to grow to approximately 100 by
2023. Reviewing such a large number of reports may become difficult
for Directors and the amount of time taken in monthly meetings to give
attention to reports needing attention will become challenging.  We
believe that we are already facing challenges giving sufficient time
and Director attention to strategic topics.  We have been able to
scale to our current TLP count through innovations such as the
rotation schedule itself, the Whimsy agenda management tool, the
shepherd model and improvements in the reports themselves.  We are
going to need to develop additional innovations to enable us to
continue to scale while providing strong oversight and foundation-
level governance.  Our plan is to focus on process and tooling
innovations to enable us to continue to scale, rather than inserting
layers or detaching the board from project-level oversight.  In
addition, we hope to improve cohesion and consistency among the Board
and the membership in applying Apache Way principles to practical
problems.  Better definition of the principles, illustrated in
examples, will need to be developed to support this objective.</p>
<p>The relationship between the Board and the Officers and Committees
responsible for ASF operations needs to continue to evolve from
direct, sometimes ambiguous, management to strategic direction,
oversight and approval of actions requiring approval by the Board.  We
have made progress recently getting roles and responsibilities better
defined, but we still have work to do in this area.  Over the next 5
years, we expect to develop a Board - Officers operating model that is
as well-defined as the Board - PMC model in place today (which will
itself evolve and improve).  Similarly to the model with PMC Chairs,
our objective is for the Board to provide high-level oversight but to
delegate operational responsibilities to Officers.</p>
<p>The relationship between the Board, PMCs and ASF officers responsible
for security, brand management and trademarks needs to be better
defined and managed.  In some cases, VPs responsible for these areas
are empowered to make demands of PMCs on behalf of the foundation.  We
have not been sufficiently clear what the scope and bounds of this
authority are.  We will address this ambiguity in 2018 and improve the
model over the next 5 years.  As a guiding principle, our objective is
to communicate (and take input on) PMC requirements effectively so
that the need for Officer intervention is rare.  Moreover, we aim to
limit the requirements themselves to the minimum necessary to ensure
that the core interests of the PMCs and the Foundation are protected.</p>
<p>To promote healthy inflow of new ideas and connection with project
communities, we will also explore means to ensure that more members
have the opportunity to serve in Director and Officer roles.</p>
<h2 id="asf-budget-and-finance">ASF Budget and Finance<a class="headerlink" href="#asf-budget-and-finance" title="Permalink">&para;</a></h2>
<p>As a non-profit entity that relies on donations, we have plans and
goals to responsibly manage our funds.</p>
<h3 id="asf-budget-and-finance-finance-operations">ASF Budget and Finance - Finance operations<a class="headerlink" href="#asf-budget-and-finance-finance-operations" title="Permalink">&para;</a></h3>
<p>The ASF has effectively outsourced core financial operations to an
organization management firm.  This has been a key element in our
ability to manage our growth and improve the quality and comprehension
of our financial controls and reporting without taking on paid staff
to manage these functions.  The Treasurer role, which had become
intractable for a volunteer to execute responsibly, has now become an
oversight role that is being effectively managed by volunteers
(Treasurer and Assistant Treasurer).  We do not anticipate the need to
change this arrangement over the next five years.</p>
<h3 id="asf-budget-and-finance-financial-analysis-and-planning">ASF Budget and Finance - Financial Analysis and Planning<a class="headerlink" href="#asf-budget-and-finance-financial-analysis-and-planning" title="Permalink">&para;</a></h3>
<p>The rigor and regularity of ASF financial planning and analysis
activities is improving and over the next 5 years, we expect to evolve
a set of leading and durable practices.  Currently, we have annual
processes to determine the coming year's budget and to update the
5-year outlook.  We will continue both of these practices.  Focus for
the next year (FY2019) will be ensuring strategic alignment between
both the financial plan and the goals and priorities of the
Foundation.  The FY2019 budget will conform overall to the 5-year plan
in this document, but lines may be modified to reflect consensus on
priorities discussions among the membership.  Revision of the 5-year
plan will begin immediately following finalization of the FY2019
budget and this cadence will continue over the next five years with
improvements each year in proactive planning and discussion so that
the budget and 5-year plan update processes are less about tactical
tradeoffs and debates over individual lines and more about officer
analysis and discretion applied to make practical decisions consistent
with agreed upon strategies. Starting in 2018, we will also introduce
a quarterly financial review, which will extend and deepen the
analysis included in monthly Treasurer's reports.  This review will be
open to the membership and executed asynchronously.</p>
<h3 id="asf-budget-and-finance-fundraising">ASF Budget and Finance - Fundraising<a class="headerlink" href="#asf-budget-and-finance-fundraising" title="Permalink">&para;</a></h3>
<p>The financial plan presented below shows an increase from the 2017
expense budget of $1.2MM  to $2.3MM in 2023.  This presents a big
challenge for ASF fundraising.  At the same time, the role, VP
Fundraising, is becoming difficult for a single volunteer to handle.
Outsourcing fundraising operations to our organization management
partner has helped but it is hard to see the current model as
sustainable and capable of meeting the increased demands that we
anticipate over the next 5 years.  Therefore, we are planning to
invest significantly over the next 5 years in fundraising assistance.
This assistance will take one or more of the following three forms:</p>
<ol>
<li>
<p>Additional services provided by our organization management partner</p>
</li>
<li>
<p>Addition of paid fundraising staff</p>
</li>
<li>
<p>Engagement of a partner specializing in fundraising</p>
</li>
</ol>
<p>In 2018, our focus will be on exploring the first option and expanding
the leverage of Board members and other members in fundraising
activities.  If by year-end 2018, we are meeting or exceeding
fundraising goals and VP, Fundraising has become a volunteer-
manageable position, we will limit any additional investment to 1.
along with marketing / communications in support of fundraising
activities.  If by mid-year 2018, we have not achieved the current
budget plan and / or the challenges have become intractable, we will
begin exploration of options 2. and 3.</p>
<p>In 2017, we made good progress getting better definition on practical
and legal aspects of the sponsorship program.  We arrived at a set of
sponsor benefits that accurately reflect what the ASF can currently
provide and what different sponsorship levels entitle sponsors to.  We
believe that in order to significantly expand the potential sponsor
base and to ensure consistent renewals, we need to define some more
compelling benefits for ASF sponsors.  Several ideas have been
discussed in this area, but we have yet to achieve consensus on
specific improvements.  Defining and implementing these improvements
will be a key focus for us over the next several years.  At a minimum,
we will formally review and consider modifications to the program as
part of the strategic plan refresh each year.</p>
<p>In 2017, we began a partnership with a company providing digital and
payment processing services to promote and manage individual
donations. This partnership has been successful.  Most importantly, we
have the beginnings of an individual donor relationship management
system.  We expect that as our donor base grows and we better manage
communications with individual donors, we will be able to grow
individual contributions at a rate equal to or exceeding the growth in
revenue from the sponsorship program.  This will require continued
focus on ASF marketing and communications and effective outreach and
management of individual donor relationships.   In 2017, we executed
one fundraising drive aimed at soliciting individual contributions.
In 2018, we will do this at least twice and in subsequent  years, we
will increase the frequency contacts with existing and prospective
individual donors, leveraging our marketing, fundraising and finance
operations partners to plan and execute campaigns.</p>
<h3 id="asf-budget-and-finance-external-partnerships">ASF Budget and Finance - External Partnerships<a class="headerlink" href="#asf-budget-and-finance-external-partnerships" title="Permalink">&para;</a></h3>
<p>We considered a proposal in 2017 to form a revenue-generating joint
venture, managed via a separate legal entity.  The proposal was to
partner with a commercial company to produce ASF-certified training
materials, with a portion of the revenue returned to the ASF.  The
Board rejected this proposal.  It is important to note, however, that
we did not conclude that no commercial partnership returning revenue
to the ASF could ever be approved.  The proposal was rejected because
it would in our estimation make misleading use of ASF brands and also
"pick winners" inconsistently with our principles.  We hope to
consider alternative proposals to fairly, honestly and consistently
with our principles raise revenue for the ASF.  As noted above,
conferences have not been a source of positive income for us in the
recent past, but they are an example of a commercial activity that can
be done consistently with our principles. We hope to define at least
one new revenue stream resulting from commercially valuable activities
that contribute to our mission over the next five years.  The current
5-year financial plan does not include any revenue projections from
these activities.</p>
<h3 id="asf-budget-and-finance-5-year-financial-plan">ASF Budget and Finance - 5-year Financial Plan<a class="headerlink" href="#asf-budget-and-finance-5-year-financial-plan" title="Permalink">&para;</a></h3>
<p>Details (with updated numbers) of the 5-year financial plan are
presented below.  In aggregate, we expect expenses to grow from
$1.42MM in FY 2018 to $2.2MM in FY 2023.  Income is projected to grow
from $1.23MM to $1.91MM over the same period.  This will result in our
FY18 cash reserve of $1.77MM being reduced to $1.16MM by the end of FY
2023. The plan, as currently formulated also does not include the
increments in funding suggested above for Community Development, nor
does it separate a legal defense reserve.</p>
<p>Budget lines currently forecast to have the largest increases are
fundraising (515% increase) brand (152%), and publicity (113%).  The
largest component of our expense base, infrastructure, is forecast to
increase by only 34%. The increase in fundraising is justified by the
commensurate forecasted increase in income from donations, which is
currently forecast at 57%. In absolute terms, the fundraising
increment is $237k per year, which is expected to return (a portion
of) the forecasted increase of $690k per year in total donations. We
should be able to improve that ratio.</p>
<pre>
FY23 budget

                            FY18    FY22    FY23
 Income
   Total Public Donations    111     135     220
   Total Sponsorship       1,084   1,500   1,665 
   Total Programs             28      28      28
   Interest Income             4       4       4
                            ----    ----    ----
   Total Income            1,227   1,667   1,917

 Expense
   Infrastructure            818     868   1,099
   Program Expenses           27      27      27
   Publicity                 182     352     387
   Brand Management           89     141     225    
   Conferences                60      12      60
   Travel Assistance          50      79      25 
   Treasury                   49      51      61
   Fundraising                46      53     283
   General &amp; Administrative  118     139      44
   Chairman's Discretionary   10       0      10
                            ----    ----    ----
   Total Expense           1,418   1,722   2,211
     Net                    -212     -55    -294
     Cash                  1,767     595   1,261

 Notes:
  * Units are in thousands of dollars US.
  * FY18 income/expense represents budget authorization, not actuals
    FY18 Cash, however, represents current (conservative) projections
  * FY22 column is for informational purposes only

</pre>
<h2 id="updating-this-plan">Updating This Plan<a class="headerlink" href="#updating-this-plan" title="Permalink">&para;</a></h2>
<p>The Board of Directors is responsible for maintaining this plan.  We
use some internal tools to manage the process of updates:</p>
<ul>
<li><a href="https://svn.apache.org/repos/asf/board/site/content/pages/ASF-5-year-plan-02-21-2018.md">Source of this document</a> (in Markdown, using Pelican site builder)</li>
<li><a href="https://cwiki.apache.org/confluence/x/zYCzBQ">Collaboration Area For Document Sections</a> (Requires ASFP login)</li>
<li>Each section should have a primary author(s) (officer or director in charge) as well as a Director who serves as shepherd for primary reviewing.</li>
</ul>

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