<!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">
      <h2 class="text-center">Community-led development "The&nbsp;Apache&nbsp;Way"</h2>
      <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>
    <div class="sideImg">
      <a href="/foundation/contributing.html"><img class="img-responsive" src="/img/support-apache.jpg" alt="Apache Support Logo" /></a>
    </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>