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


</head>

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

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

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

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

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

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

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

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

  </footer>

  <!-- / Footer -->

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