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

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

<body >
  <!-- Navigation -->
  <header>
	<div id="skiptocontent">
		<a href="#maincontent">Skip to Main Content</a>
	</div>
    <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
      <div class="container">
        <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <div class="collapse navbar-collapse" id="mainnav-collapse">
          <ul class="nav navbar-nav navbar-justified">
            <li><a href="/index.html#news">News</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation">Overview</a></li>
                <li><a href="/foundation/how-it-works.html">Process</a></li>
                <li><a href="/foundation/governance/">Governance</a></li>
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="/foundation/governance/members.html">Membership</a></li>
                <li><a href="https://community.apache.org/">Community</a></li>
                <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/foundation/glossary.html">Glossary</a></li>
				  <li><a href="/apache-name">About Our Name</a></li>
                <li><a href="/foundation/preFAQ.html">FAQ</a></li>
                <li><a href="/foundation/contributing.html">Support Apache</a></li>
                <li><a href="/press/">Media/Analysts</a></li>
                <li><a href="/foundation/contact.html">Contact</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation/contributing.html">Donate Now</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li>
                <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li>
                <li><a href="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="bylaws-of-the-apache-software-foundation">Bylaws of the Apache Software Foundation<a class="headerlink" href="#bylaws-of-the-apache-software-foundation" title="Permalink">&para;</a></h1>
<p><em>There is a <a href="bylaws-plain-english.html">plain-English</a> version of the bylaws to help readers understand the meaning of the legal text.</em></p>
<h2 id="article-i"><a id="A1" name="A1">ARTICLE I</a><a class="headerlink" href="#article-i" title="Permalink">&para;</a></h2>
<h3 id="business-offices">Business Offices<a class="headerlink" href="#business-offices" title="Permalink">&para;</a></h3>
<p>The corporation shall have such offices either within or outside the State
of Delaware and within or outside the United States, as the Board of
Directors may from time to time determine or as the business of the
corporation may require.</p>
<h2 id="article-ii"><a id="A2" name="A2">ARTICLE II</a><a class="headerlink" href="#article-ii" title="Permalink">&para;</a></h2>
<h3 id="registered-offices-and-registered-agents">Registered Offices and Registered Agents<a class="headerlink" href="#registered-offices-and-registered-agents" title="Permalink">&para;</a></h3>
<p><strong><a id="2.1" name="2.1">Section 2.1.</a>Delaware.</strong> The address of the
initial registered office in the State of Delaware and the name of the
initial registered agent of the corporation at such address are set forth
in the Certificate of Incorporation. The corporation may, from time to
time, designate a different address as its registered office or a different
person as its registered agent, or both; provided, however, that such
designation shall become effective upon the filing of a statement of such
change with the Secretary of State of the State of Delaware as is required
by law.</p>
<p><strong><a id="2.2" name="2.2">Section 2.2.</a>Other States.</strong> In the event the
corporation desires to qualify to do business in one or more states other
than Delaware, the corporation shall designate the location of the
registered office in each such state and designate the registered agent for
service of process at such address in the manner provided by the law of the
state in which the corporation elects to be qualified.</p>
<h2 id="article-iii"><a id="A3" name="A3">ARTICLE III</a><a class="headerlink" href="#article-iii" title="Permalink">&para;</a></h2>
<h3 id="meetings-of-members">Meetings of Members<a class="headerlink" href="#meetings-of-members" title="Permalink">&para;</a></h3>
<p><strong><a id="3.1" name="3.1">Section 3.1.</a>Place of Meetings.</strong> Meetings of
the members shall be held at the principal office of the corporation or any
other place (within or outside the State of Delaware and within or outside
the United States) designated in the notice of the meeting.</p>
<p><strong><a id="3.2" name="3.2">Section 3.2.</a>Annual Meeting.</strong> A meeting of the
members shall be held annually at such time as the Board of Directors may
determine (which shall be, in the case of the first annual meeting, not
more than thirteen (13) months after the organization of the corporation
and, in the case of all other meetings, not more than thirteen (13) months
after the date of the last annual meeting), at which annual meeting the
members shall elect a Board of Directors and transact other proper
business.</p>
<p><strong><a id="3.3" name="3.3">Section 3.3.</a>Special Meetings.</strong> Special
meetings of the members shall be held when directed by the Board Chair,
President or the Board of Directors, or when requested in writing by not
less than ten percent (10%) of all members entitled to vote at the meeting.
The call for the meeting shall be issued by the Secretary, unless the
Board Chair, President, Board of Directors or members requesting the meeting
shall designate another person to do so.</p>
<p><strong><a id="3.4" name="3.4">Section 3.4.</a>Notice.</strong> Written notice stating
the place, date and hour of the meeting and, in the case of a special
meeting, the purpose or purposes for which the meeting is called, shall be
delivered not less than ten (10) nor more than sixty (60) days before the
date of the meeting, either personally or by first class mail, by or at the
direction of the Board Chair, President, the Secretary, or the officer or
persons calling the meeting, to each member of record entitled to vote at
such meeting. If mailed, such notice shall be deemed to be delivered when
deposited in the United States mail addressed to the member at their
address as it appears in the membership records of the corporation, with
postage thereon prepaid.</p>
<p>Notwithstanding the above paragraph, the corporation shall not be required
to give notice of a members' meeting to any member to whom notice of two
consecutive annual meetings, and all notices of meetings or of the taking
of action by written consent without a meeting to such member during the
period between such two consecutive annual meetings, have been mailed under
the procedures outlined above and have been returned undeliverable. Any
action or meeting which shall be taken or held without notice to such
member shall have the same force and effect as if such notice had been duly
given. If any such member delivers to the corporation a written notice
setting forth their then current address, the requirement that notice
be given to such member shall be reinstated.</p>
<p><strong><a id="3.5" name="3.5">Section 3.5.</a>Notice of Adjourned Meetings.</strong>
When a meeting is adjourned to another time or place, the corporation shall
not be required to give any notice of the adjourned meeting if the time and
place to which the meeting is adjourned are announced at the meeting at
which the adjournment is taken. At the adjourned meeting, any business may
be transacted that might have been transacted at the original meeting. If,
however, the adjournment is for more than thirty (30) days, or if after the
adjournment the Board of Directors fixes a new record date for the
adjourned meeting, a notice of the adjourned meeting shall be given as
provided in Section 3.4 above, to each member of record on the new record
date entitled to vote at such meeting.</p>
<p><strong><a id="3.6" name="3.6">Section 3.6.</a>Waiver of Notice.</strong> Whenever
notice is required to be given to any member, a waiver thereof in writing,
signed by the person or persons entitled to such notice, whether before or
after the time stated therein, shall be the equivalent to the giving of
such notice. Attendance by a person at a meeting shall constitute a waiver
of notice of such meeting, except when the person attends a meeting for the
express purpose of objecting, at the beginning of the meeting, to the
transaction of business because the meeting is not lawfully called or
convened. Neither the business to be transacted at, nor the purpose of any
regular or special meeting of the members need be specified in the written
waiver of notice.</p>
<p><strong><a id="3.7" name="3.7">Section 3.7.</a>Fixing Record Date.</strong></p>
<p>(a) For the purpose of determining members entitled to notice of or to vote
at any meeting of members or any adjournment thereof, the Board of
Directors may fix a record date, which record date shall not precede the
date upon which the resolution fixing the record date is adopted by the
Board of Directors, and which record date shall not be more than 60 nor
less than 10 days before the date of such meeting. If no record date is
fixed by the Board of Directors, the record date for determining members
entitled to notice of or to vote at a meeting of members shall be at the
close of business on the day next preceding the day on which notice is
given, or, if notice is waived, at the close of business on the day next
preceding the day on which the meeting is held. A determination of members
of record entitled to notice of or to vote at a meeting of members shall
apply to any adjournment of the meeting; provided, however, that the Board
of Directors may fix a new record date for the adjourned meeting.</p>
<p>(b) For purposes of determining the members entitled to consent to
corporate action in writing without a meeting, the Board of Directors may
fix a record date, which record date shall not precede the date upon which
the resolution fixing the record date is adopted by the Board of Directors,
and which date shall not be more than 10 days after the date upon which the
resolution fixing the record date is adopted by the Board of Directors. If
no record date has been fixed by the Board of Directors, the record date
for determining members entitled to consent to corporate action in writing
without a meeting, when no prior action by the Board of Directors is
required by the General Corporation Laws of the State of Delaware, shall be
the first date on which a signed written consent setting forth the action
taken or proposed to be taken is delivered to the corporation by delivery
to its registered office in the State of Delaware, its principal place of
business or an officer or agent of the corporation having custody of the
books in which proceedings of meetings of members are recorded. Delivery
made to a corporation's registered office shall be by hand or by certified
or registered mail, return receipt requested. If no record date has been
fixed by the Board of Directors and prior action by the Board of Directors
is required by the General Corporation Law of the State of Delaware, the
record date for determining members entitled to consent to corporate action
in writing without a meeting shall be at the close of business on the day
on which the Board of Directors adopts the resolution taking such prior
action.</p>
<p>(c) For purposes of determining the members entitled to exercise any
rights, or for the purpose of any other lawful action, the Board of
Directors may fix a record date, which record date shall not precede the
date upon which the resolution fixing the record date is adopted, and which
record date shall be not more than 60 days prior to such action. If no
record date is fixed, the record date for determining members for any such
purpose shall be at the close of business on the day on which the Board of
Directors adopts the resolution relating thereto.</p>
<p><strong><a id="3.8" name="3.8">Section 3.8.</a>Record of Members Having Voting
Rights.</strong> The officer or agent having charge of the membership records of
the corporation shall prepare and make, at least ten (10) days before each
meeting of members, a complete list of the members entitled to vote at such
meeting, arranged in alphabetical order, and showing the name, address,
telephone number, facsimile number and electronic mail address of each
member. For a period of ten (10) days prior to such meeting, the list shall
be open to the examination of any member, for any purpose germane to the
meeting, during ordinary business hours, either at a place within the city
where such meeting is to be held, which place shall be specified in the
notice of the meeting, or if not so specified, at the place where such
meeting is to be held. The list shall also be produced and kept open at the
time and place of the meeting and shall be subject to inspection by any
member at any time during the meeting. Upon the willful neglect or refusal
of the directors to produce such a list at any meeting for the election of
directors, such directors shall be ineligible for election to any office at
such meeting.</p>
<p><strong><a id="3.9" name="3.9">Section 3.9.</a>Member Quorum.</strong> Except as
otherwise required by law, by the Certificate of Incorporation or by these
Bylaws, one-third (1/3) of the members entitled to vote, represented in
person or represented by proxy, shall constitute a quorum at a meeting of
members. When a specified item of business is required to be voted on by a
class of members (if the members are divided into classes), one third (1/3)
of such class of members, represented in person or represented by proxy,
shall constitute a quorum for the transaction of such item of business by
that class of members. If a quorum is present, the affirmative vote of a
majority of the members represented at the meeting and entitled to vote on
the subject matter shall be the act of the members, unless the vote of a
greater number or voting by class is required by the General Corporation
Law of the State of Delaware or by the Certificate of Incorporation or by
these Bylaws. The directors shall be elected by a plurality of the votes of
the members present in person or represented by proxy at the meeting and
entitled to vote on the election of directors. Where a separate vote by
class of members is required, the affirmative vote of a plurality of
members of such class represented at the meeting shall be the act of such
class unless the vote of a greater number is required by the General
Corporation Law of the State of Delaware, the Certificate of Incorporation
or these Bylaws.</p>
<p>After a quorum has been established at a members' meeting, the subsequent
withdrawal of members, so as to reduce the number of members in person or
represented by proxy entitled to vote at the meeting below the number
required for a quorum, shall not affect the validity of any action taken at
the meeting or any adjournment thereof.</p>
<p>After a quorum has been established at a members' meeting, the subsequent
admission of new members, so as to increase the number of members required
for a quorum above the number of members present in person or represented
by proxy entitled to vote at the meeting, shall not affect the validity of
any action taken at the meeting or any adjournment thereof.</p>
<p><strong><a id="3.10" name="3.10">Section 3.10.</a>Voting.</strong> Each member (except
emeritus members) shall be entitled to one vote on each matter submitted to
a vote at a meeting of the members, except as may otherwise be provided in
the General Corporation Law of the State of Delaware.</p>
<p>A member may vote either in person or by proxy executed in writing by the
member or their duly authorized attorney-in-fact.</p>
<p><strong><a id="3.11" name="3.11">Section 3.11.</a>Proxies.</strong> Every member
entitled to vote at a meeting of members or to express consent or dissent
to corporate action in writing without a meeting, or a member's duly
authorized attorney-in-fact, may authorize another person or persons to act
on that member's behalf by proxy.</p>
<p>Every proxy must be signed by the member or their attorney-in-fact. No
proxy shall be valid after three (3) years from its date, unless otherwise
provided in the proxy. All proxies shall be revocable.</p>
<p><strong><a id="3.12" name="3.12">Section 3.12.</a>Action by Members Without a
Meeting.</strong> Any action required to be taken or which may be taken at any
annual or special meeting of members of the corporation, may be taken
without a meeting, without prior notice and without a vote, if a written
consent setting forth the action so taken shall be signed by members having
not less than the minimum number of votes that would be necessary to
authorize or take such action at a meeting at which all members entitled to
vote thereon were present and voted; provided, however, that no written
consent shall be effective unless such consent (i) bears the date of
signature by each member signing such consent and (ii) is delivered to the
corporation within sixty (60) days of the date on which the earliest
consent was delivered to the corporation. Prompt notice of the taking of
the corporate action without a meeting by less than unanimous written
consent shall be given to those members who have not consented in writing.</p>
<h2 id="article-iv"><a id="A4" name="A4">ARTICLE IV</a><a class="headerlink" href="#article-iv" title="Permalink">&para;</a></h2>
<h3 id="members">Members<a class="headerlink" href="#members" title="Permalink">&para;</a></h3>
<p><strong><a id="4.1" name="4.1">Section 4.1.</a>Admission of Members.</strong> To be
eligible for membership, a person or entity must be nominated by a current
member of the corporation and must complete a written membership
application in such form as shall be adopted by the Board of Directors from
time to time. The nomination must be included in a notice to the members,
if any, of the corporation at least ten (10) days prior to any vote on the
applicant's admission, which notice may be by electronic means. The initial
members of the corporation shall be admitted upon the affirmative vote of
the Board of Directors of the Corporation at the initial meeting of the
Board of Directors. Thereafter, members of the corporation shall be
admitted as members of the corporation only by a majority vote of the
existing members of the corporation, and after receipt by the Secretary of
a membership application completed by each such proposed member within
thirty (30) days following the vote.</p>
<p><strong><a id="4.2" name="4.2">Section 4.2.</a>Emeritus Members.</strong> An emeritus
member is a former member whose membership has been suspended and converted
to emeritus status, either voluntarily or by action of the members, such
that all membership rights of the emeritus member, including the right to
vote and be counted for purposes of quorum, are suspended and terminated
until the emeritus member's membership is reinstated by subsequent action
of the members.</p>
<p>Upon the effective date of conversion of the membership of any member to
emeritus status, the membership, including all related voting rights, of
such member shall be suspended, except that such emeritus member shall be
entitled to attend (but not vote) at meetings of the members, and the
officers of the corporation shall attempt, in good faith, to continue to
deliver notices of meetings of the members of the corporation to such
emeritus member. References in these Bylaws to a "member" or to the
"members" of the corporation shall not include any emeritus member unless
explicitly provided otherwise.</p>
<p><strong><a id="4.3" name="4.3">Section 4.3.</a>Voluntary Conversion of Membership
to Emeritus Status.</strong> Members may convert their membership to emeritus
status at any time upon ten (10) days' written, signed notice delivered to
an officer of the corporation.</p>
<p><strong><a id="4.4" name="4.4">Section 4.4.</a>Involuntary Conversion of
Membership to Emeritus Status.</strong> Upon an affirmative vote of a two-thirds
majority of the members of the corporation, the membership of a member
shall be converted into an emeritus membership.</p>
<p><strong><a id="4.5" name="4.5">Section 4.5.</a>Reinstatement of Membership of
Emeritus Members.</strong> Upon receipt of a written request and a new membership
application from an emeritus member and upon an affirmative vote of a
majority of the members of the corporation approving such membership
application, such emeritus member membership shall be reinstated as a full
member of the corporation, and shall be entitled to exercise all rights as
a member of the corporation, including all related voting rights.</p>
<p><strong><a id="4.6" name="4.6">Section 4.6.</a>Voluntary Withdrawal from
Membership.</strong> Members (including emeritus members) may withdraw from
membership in the corporation at any time upon ten (10) days' written,
signed notice delivered to an officer of the corporation.</p>
<p><strong><a id="4.7" name="4.7">Section 4.7.</a>Termination from Membership.</strong> No
member may have their membership terminated except by an
affirmative vote of a two-thirds majority of the members of the
corporation.</p>
<p><strong><a id="4.8" name="4.8">Section 4.8.</a>Effect of Withdrawal or
Termination of Membership.</strong> Upon any withdrawal or termination of the
membership of any member, the membership, including all related voting
rights, of such member shall be terminated. After a withdrawal or
termination of the membership of any member, or a conversion of the
membership of any member to emeritus status, such member may reapply for
membership in accordance with Section 4.1 of these Bylaws.</p>
<h2 id="article-v">ARTICLE V<a class="headerlink" href="#article-v" title="Permalink">&para;</a></h2>
<h3 id="directors">Directors<a class="headerlink" href="#directors" title="Permalink">&para;</a></h3>
<p><strong><a id="5.1" name="5.1">Section 5.1.</a>Powers.</strong> The business and affairs
of the corporation shall be managed by or under the direction of the Board
of Directors, which may exercise all such powers of the corporation and do
all such lawful acts and things as are not by statute or by the Certificate
of Incorporation or by these Bylaws specifically reserved to the members.</p>
<p><strong><a id="5.2" name="5.2">Section 5.2.</a>Qualification.</strong> Directors need
not be residents of Delaware or of the United States nor members of the
corporation.</p>
<p><strong><a id="5.3" name="5.3">Section 5.3.</a>Compensation.</strong> The Board of
Directors shall have authority to fix the compensation of directors unless
otherwise provided in the Certificate of Incorporation.</p>
<p><strong><a id="5.4" name="5.4">Section 5.4.</a>Number.</strong> The corporation shall
initially have nine (9) directors. Thereafter, the number of directors
shall be fixed by the members at each annual meeting of members.</p>
<p><strong><a id="5.5" name="5.5">Section 5.5.</a>Election and Term.</strong> Each person
named in the Certificate of Incorporation or elected by the incorporator(s)
at the organization meeting, as the case may be, as a member of the initial
Board of Directors shall hold office until the first annual meeting of
members and until their successor shall have been elected and
qualified or until their earlier resignation, removal or death.</p>
<p>At the first annual meeting of members and at each annual meeting
thereafter, the members shall elect directors to hold office until the next
succeeding annual meeting. Each director shall hold office for the term for
which they are elected and until their successor shall have been
elected and qualified or until their earlier resignation, removal or
death.</p>
<p><strong><a id="5.6" name="5.6">Section 5.6.</a>Resignation and Removal of
Directors.</strong> A director may resign at any time upon written request to the
corporation. Furthermore, any director or the entire Board of Directors may
be removed, with or without cause, by a vote of the majority of the members
entitled to vote for the election of directors or as otherwise provided in
the General Corporation Law of the State of Delaware.</p>
<p><strong><a id="5.7" name="5.7">Section 5.7.</a>Vacancies.</strong> Any vacancy occurring
in the Board of Directors, including any vacancy created by reason of an
increase in the authorized number of directors, may be filled by the
affirmative vote of a majority of the remaining directors though less than
a quorum of the Board of Directors or by a sole remaining director. If
there is more than one class of members, vacancies of directorships elected
by such class may be filled by a majority of the directors elected by such
class or by a sole remaining director. A director elected to fill a vacancy
shall hold office only until the next election of directors by the members.</p>
<p><strong><a id="5.8" name="5.8">Section 5.8.</a>Quorum and Voting.</strong> A majority of
the number of directors fixed in accordance with these Bylaws shall
constitute a quorum for the transaction of business. The vote of a majority
of the directors present at a meeting at which a quorum is present shall be
the act of the Board of Directors.</p>
<p><strong><a id="5.9" name="5.9">Section 5.9.</a>Executive and Other Committees.</strong>
The Board of Directors, by resolution adopted by a majority of the full
Board of Directors, may designate an Executive Committee from among its
members and such other committees consisting of at least one director as
determined by the Board of Directors from time to time. Each committee, to
the extent provided in such authorizing resolution, shall have and may
exercise all the power and authority of the Board of Directors in the
management of the business and affairs of the corporation, as limited by
the laws of the State of Delaware.</p>
<p>The Board of Directors, by resolution adopted in accordance with this
section, may designate one or more directors as alternate members of any
such committee, who may act in the place and stead of any absent or
disqualified member or members at any meeting of such committee. In the
absence or disqualification of any member of any such committee or
committees, the member or members thereof present at any meeting and not
disqualified from voting, whether or not they constitute a quorum, may
unanimously appoint another member of the Board of Directors to act at the
meeting in the place of any such absent or disqualified member.</p>
<p><strong><a id="5.10" name="5.10">Section 5.10.</a>Place of Meetings.</strong> Regular
and special meetings of the Board of Directors may be held within or
outside the State of Delaware and within or outside the United States.</p>
<p><strong><a id="5.11" name="5.11">Section 5.11.</a>Time, Notice and Call of
Meetings.</strong> Regular meetings of the Board of Directors shall be held
immediately following the annual meeting of members each year and at such
times thereafter as the Board of Directors may fix. No notice of regular
directors' meetings shall be required.</p>
<p>Special meetings of the Board of Directors shall be held at such times as
called by the Board Chair, the President of the corporation, or
any two (2) directors. Written notice of the time and place of special
meetings of the Board of Directors shall be given to each director by
either personal delivery, telegram, cablegram, or telefax at least two (2)
days before the meeting, or by notice mailed to each director at least five
(5) days before the meeting.</p>
<p>Notice of a meeting of the Board of Directors need not be given to any
director who signs a waiver of notice, either before or after the meeting.
Attendance of a director at a meeting shall constitute a waiver of notice
of such meeting and waiver of any and all objections to the place of the
meeting, the time of the meeting, or the manner in which it has been called
or conveyed, except when a director states, at the beginning of the
meeting, any objection to the transaction of business because the meeting
is not lawfully called or convened.</p>
<p>Members of the Board of Directors may participate in a meeting of such
Board or of any committee designated by such Board by conference telephone
or similar communications equipment by means of which all persons
participating in the meeting can hear each other at the same time.
Participating by such means shall constitute presence in person at a
meeting.</p>
<p><strong><a id="5.12" name="5.12">Section 5.12.</a>Action Without a Meeting.</strong> Any
action required or permitted to be taken at a meeting of the Board of
Directors or of any committee thereof may be taken without a meeting if all
the members of the board or committee, as the case may be, consent thereto
in writing, and such writing is filed with the minutes of the proceedings
of the board or committee. Such consent shall have the same effect as a
unanimous vote.</p>
<p><strong><a id="5.13" name="5.13">Section 5.13.</a>Director Conflicts of
Interest.</strong> No contract or other transaction between the corporation and
one or more of its directors or between the corporation and any other
corporation, partnership, association or other organization in which one or
more of the directors of the corporation are directors or officers or are
financially interested, shall be void or voidable solely because of such
relationship or interest or solely because such director or directors are
present at or participate in the meeting of the Board of Directors or a
committee thereof which authorizes, approves or ratifies such contract or
transaction or solely because their votes are counted for
such purpose, if:</p>
<p>A. The material facts as to the director's relationship or interest and as
to the contract or transaction are disclosed or are known to the Board of
Directors or committee, and the Board of Directors or committee in good
faith authorizes, approves or ratifies the contract or transaction by the
affirmative votes of a majority of the disinterested directors, even though
the disinterested directors be less than a quorum; or</p>
<p>B. The material facts as to their relationship or interest and as to the
contract or transaction are disclosed or known to the members entitled to
vote thereon, and the contract or transaction is specifically approved in
good faith by vote of such members; or</p>
<p>C. The contract or transaction is fair as to the corporation at the time it
is authorized, approved or ratified by the Board of Directors, a committee
of the Board of Directors or the members.</p>
<p>Common or interested directors may be counted in determining the presence
of a quorum at a meeting of the Board of Directors or a committee thereof
which authorizes, approves or ratifies such contract or transaction.</p>
<h2 id="article-vi"><a id="A6" name="A6">ARTICLE VI</a><a class="headerlink" href="#article-vi" title="Permalink">&para;</a></h2>
<h3 id="officers">Officers<a class="headerlink" href="#officers" title="Permalink">&para;</a></h3>
<p><strong><a id="6.1" name="6.1">Section 6.1.</a>Officers.</strong> The officers of the
corporation shall consist of a President, a Secretary and a Treasurer, each
of whom shall be elected by the Board of Directors. A Board Chair,
one or more Vice Chairs, one or more Vice Presidents, and such
other officers and assistant officers and agents as may be deemed necessary
may be elected or appointed by the Board of Directors from time to time.
Any two (2) or more offices may be held by the same person, except the
offices of President and Secretary.</p>
<p><strong><a id="6.2" name="6.2">Section 6.2.</a>Duties.</strong> The officers of the
corporation shall have the following duties:</p>
<p>A. <strong>Board Chair.</strong> The Board Chair, if one is elected,
shall preside at all meetings of the Board of Directors and members and
shall have such other duties and authority as may be conferred by the Board
of Directors.</p>
<p>B. <strong>Vice Chair.</strong> The Vice Chair, if one is elected, shall, in the
absence or disability of the Board Chair, perform the duties and
exercise the powers of the Board Chair. The Vice Chair shall
also perform whatever duties and have whatever powers the Board of
Directors may from time to time assign them. If more than one
Vice Chair is elected and the Board Chair is absent or becomes disabled, the
Board of Directors shall choose one Vice Chair to perform the duties and
exercise the powers of the Board Chair.</p>
<p>C. <strong>President.</strong> The President shall be the chief executive officer of the
corporation and shall have general and active management of the business
and affairs of the corporation (other than the management of projects
managed by a Project Management Committee), subject to the direction of the
Board of Directors. If a Board Chair is not elected, the
President shall preside at all meetings of the Board of Directors and
members.</p>
<p>D. <strong>Vice President.</strong> The Vice President, if one is elected, shall, in the
absence or disability of the President, perform the duties and exercise the
powers of the President. The Vice President shall also perform whatever duties
and have whatever powers the Board of Directors may from time to time assign
them. If more than one Vice President is elected, one thereof shall
be designated as Executive Vice President and shall, in the absence or
disability of the President, perform the duties and exercise the powers of
the President and each other Vice President shall only perform whatever
duties and have whatever powers the Board of Directors may from time to
time assign them.</p>
<p>E. <strong>Secretary and Assistant Secretary.</strong> The Secretary shall keep accurate
records of the acts and proceedings of all meetings of the members and
directors. The Secretary shall give all notices required by law and by
these Bylaws. In addition, the Secretary shall have general charge of the
corporate books and records and of the corporate seal, and shall
affix, or attest the affixing of, the corporate seal to any lawfully
executed instrument requiring it. The Secretary shall have general charge
of the membership records of the corporation and shall keep, at the
registered or principal office of the corporation, a record of the members
showing the name, address, telephone number, facsimile number and
electronic mail address of each member. The Secretary shall sign such
instruments as may require their signature and, in general, shall
perform all duties as may be assigned to them from time to time by
the Board Chair, the President or the Board of Directors. The Assistant
Secretary, if one is appointed, shall render assistance to the Secretary in
all the responsibilities described above.</p>
<p>F. <strong>Treasurer and Assistant Treasurer.</strong> The Treasurer shall have custody
of all corporate funds and financial records, shall keep full and accurate
accounts of receipts and disbursements and render accounts thereof at the
annual meetings of members, and shall perform such other duties as may be
prescribed by the Board Chair, the President or the Board of Directors. The
Assistant Treasurer, if one is appointed, shall render assistance to the
Treasurer in all of the responsibilities described above.</p>
<p><strong><a id="6.3" name="6.3">Section 6.3.</a>Project Management Committees.</strong>
In addition to the officers of the corporation, the Board of Directors may,
by resolution, establish one or more Project Management Committees
consisting of at least one officer of the corporation, who shall be
designated chair of such committee, and may include one or more other
members of the corporation. Unless elected or appointed as an officer in
accordance with Sections 6.1 and 6.4 of these Bylaws, a member of a Project
Management Committee shall not be deemed an officer of the corporation.</p>
<p>Each Project Management Committee shall be responsible for the active
management of one or more projects identified by resolution of the Board of
Directors which may include, without limitation, the creation or
maintenance of "open-source" software for distribution to the public at no
charge. Subject to the direction of the Board of Directors, the chair of
each Project Management Committee shall be primarily responsible for
project(s) managed by such committee, and shall establish rules
and procedures for the day to day management of project(s) for which the
committee is responsible.</p>
<p>The Board of Directors of the corporation may, by resolution, terminate a
Project Management Committee at any time.</p>
<p><strong><a id="6.4" name="6.4">Section 6.4.</a>Election and Term.</strong> The officers
of the corporation and the members of each existing Project Management
Committee shall be appointed by the Board of Directors or appointed by an
officer empowered by the Board to make such appointment. Such appointment
by the Board of Directors may be made at any regular or special meeting of
the Board. Each officer shall hold office and each member of a Project
Management Committee shall serve on such committee for a period of one year
or until their successor is elected and qualified or until their
earlier resignation or removal.</p>
<p><strong><a id="6.5" name="6.5">Section 6.5.</a>Removal of Officers.</strong> Any officer
or agent and any member of a Project Management Committee elected or
appointed by the Board of Directors may be removed by the Board whenever,
in its judgment, the best interests of the corporation will be served
thereby.</p>
<p><strong><a id="6.6" name="6.6">Section 6.6.</a>Vacancies.</strong> Any vacancy, however
occurring, in any office or any Project Management Committee may be filled
by the Board of Directors.</p>
<p><strong><a id="6.7" name="6.7">Section 6.7.</a>Compensation.</strong> The compensation,
if any, of all officers of the corporation and of all members of each
existing Project Management Committee shall be fixed by the Board of
Directors and may be changed from time to time by a majority vote of the
Board of Directors. The fact that an officer is also a director shall not
preclude such person from receiving compensation as either a director or
officer, nor shall it affect the validity of any resolution by the Board of
Directors fixing such compensation. The President shall have authority to
fix the salaries, if any, of all employees of the corporation, other than
officers elected or appointed by the Board of Directors and members of
Project Management Committees.</p>
<h2 id="article-vii"><a id="A7" name="A7">ARTICLE VII</a><a class="headerlink" href="#article-vii" title="Permalink">&para;</a></h2>
<h3 id="books-and-records">Books and Records<a class="headerlink" href="#books-and-records" title="Permalink">&para;</a></h3>
<p><strong><a id="7.1" name="7.1">Section 7.1.</a>Books and Records.</strong> The
corporation shall keep correct and complete books and records of accounts
and shall keep minutes of the proceedings of its members, Board of
Directors and committees of directors.</p>
<p>The corporation shall keep at its registered office or principal place of
business, or at the office of its transfer agent or registrar, a record of
the name, address, telephone number, facsimile number and electronic mail
address of each member, together with the date of any withdrawal or
termination of such member's membership, or any conversion of such member's
membership to emeritus status.</p>
<p>Each member shall be responsible for notifying the corporation of changes
to such member's address, telephone number, facsimile number or electronic
mail address.</p>
<p>Any books, records and minutes may be in written form or in any other form
capable of being converted into clearly legible written form within a
reasonable time.</p>
<p><strong><a id="7.2" name="7.2">Section 7.2.</a>Members' Inspection Rights.</strong> Any
person who is a member, upon written demand under oath stating the purpose
thereof, shall have the right to examine, in person or by agent or
attorney, at any time during the corporation's usual hours for business,
for any proper purpose as determined under the General Corporation Law of
the State of Delaware, the corporation's membership records and its other
books and records and to make copies or extracts therefrom.</p>
<h2 id="article-viii"><a id="A8" name="A8">ARTICLE VIII</a><a class="headerlink" href="#article-viii" title="Permalink">&para;</a></h2>
<h3 id="nonprofit-status">Nonprofit Status<a class="headerlink" href="#nonprofit-status" title="Permalink">&para;</a></h3>
<p>The corporation is organized and shall be operated as a not-for-profit
membership corporation organized under Delaware law. If the Board of
Directors of the corporation elects to seek and obtains an exemption for
the corporation from federal taxation pursuant to Section 501(a) of the
Internal Revenue Code, as amended (the "IRC"), and until such time, if
ever, that such exemption is denied or lost, the corporation shall not be
empowered to engage directly or indirectly in any activity which the
corporation believes would be likely to invalidate its status as an
organization exempt from federal taxation under Section 501(a) of the IRC
as an organization described in Section 501(c) of the IRC.</p>
<h2 id="article-ix"><a id="A9" name="A9">ARTICLE IX</a><a class="headerlink" href="#article-ix" title="Permalink">&para;</a></h2>
<h3 id="corporate-seal">Corporate Seal<a class="headerlink" href="#corporate-seal" title="Permalink">&para;</a></h3>
<p>The Board of Directors shall provide a corporate seal which shall have the
name of the corporation inscribed thereon, and may be a facsimile,
engraved, printed, or an impression seal.</p>
<h2 id="article-x"><a id="A10" name="A10">ARTICLE X</a><a class="headerlink" href="#article-x" title="Permalink">&para;</a></h2>
<h3 id="amendment">Amendment<a class="headerlink" href="#amendment" title="Permalink">&para;</a></h3>
<p>These Bylaws may be altered, amended or repealed by the Board of Directors
or by the members, and new Bylaws may be adopted by the Board of Directors
or by the members. No alteration, amendment or repeal of these Bylaws shall
be effective unless and until the corporation attempts, in good faith, to
give notice to the members of the corporation of such alteration, amendment
or repeal at least fifteen (15) days prior to the effective date of such
alteration, amendment or repeal, which notice may be by electronic means.</p>
<h2 id="article-xi"><a id="A11" name="A11">ARTICLE XI</a><a class="headerlink" href="#article-xi" title="Permalink">&para;</a></h2>
<h3 id="limits-on-liability-of-directors">Limits on Liability of Directors<a class="headerlink" href="#limits-on-liability-of-directors" title="Permalink">&para;</a></h3>
<p>To the fullest extent permitted by the General Corporation Law of the State
of Delaware, as the same exists or may hereafter be amended, a director of
the corporation shall not be personally liable to the corporation or its
members for monetary damages for breach of fiduciary duty as a director.</p>
<h2 id="article-xii"><a id="A12" name="A12">ARTICLE XII</a><a class="headerlink" href="#article-xii" title="Permalink">&para;</a></h2>
<h3 id="indemnification-of-officers-and-directors">Indemnification of Officers and Directors<a class="headerlink" href="#indemnification-of-officers-and-directors" title="Permalink">&para;</a></h3>
<p><strong><a id="12.1" name="12.1">Section 12.1.</a>Right to Indemnification.</strong>
Each person who was or is a party or is threatened to be made a party to
any threatened, pending or completed action, suit, or proceeding, whether
civil, criminal, administrative, or investigative (other than an action by
or in the right of the corporation), by reason of the fact that they are
or were a director, officer or member of the corporation, or are or were
serving at the request of the corporation as a director, officer, employee,
or agent of another corporation, partnership, joint venture, trust, or
other enterprise, shall be entitled to indemnification against expenses
(including attorneys' fees), judgments, fines, and amounts paid in
settlement to the fullest extent now or hereafter permitted by applicable
law as long as such person acted in good faith and in a manner that such
person reasonably believed to be in or not be opposed to the best interests
of the corporation; provided, however, that the corporation shall indemnify
any such person seeking indemnity in connection with an action, suit or
proceeding (or part thereof) initiated by such person only if such action,
suit or proceeding (or part thereof) was authorized by the Board of
Directors.</p>
<p><strong><a id="12.2" name="12.2">Section 12.2.</a>Advance Payment of Expenses.</strong>
Expenses (including reasonable attorneys' fees) incurred by any person who
is or was an officer, director or member of the corporation, or who is or
was serving at the request of the corporation as an officer or director of
another corporation, partnership, joint venture, trust or other enterprise,
in defending any civil, criminal, administrative or investigative action,
suit or proceeding, shall be paid by the corporation in advance of the
final disposition of such action, suit or proceeding upon receipt of an
undertaking by or on behalf of such person to repay such amount if it is
ultimately determined that they are not entitled under applicable law
to be indemnified by the corporation.</p>
<p><strong><a id="12.3" name="12.3">Section 12.3.</a>Right of Claimant to Bring
Suit.</strong> If a claim under this Article is not paid in full by the
corporation within ninety (90) days after a written claim has been received
by the corporation, the claimant may at any time thereafter bring suit
against the corporation to recover the unpaid amount of the claim and, if
successful in whole or in part, the claimant shall be entitled to be paid
also the expense of prosecuting such claim. It shall be a defense to any
such action (other than an action brought to enforce a claim for expenses
incurred in defending any action or proceeding in advance of its final
disposition where the required undertaking has been tendered to the
corporation unless such action is based on the claimant having committed an
act involving moral turpitude) that the claimant has not met the standards
of conduct which make indemnification permissible under the General
Corporation Law of the State of Delaware, but the burden of proving such
defense shall be on the corporation. Neither the failure of the corporation
(including its Board of Directors, independent legal counsel, or its
members) to have made a determination prior to the commencement of such
action that indemnification of the claimant is proper in the circumstances
because they have met the applicable standard of conduct set forth in
the General Corporation Law of the State of Delaware, nor an actual
determination by the corporation (including its Board of Directors,
independent legal counsel, or its members) that the claimant has not met
such applicable standard of conduct, shall be a defense to the action or
create a presumption that the claimant has not met the applicable standard
of conduct.</p>
<p><strong><a id="12.4" name="12.4">Section 12.4.</a>Contract Rights.</strong> The
provisions of this Article shall be a contract between the corporation and
each director, officer or member to which this Article applies. No repeal
or modification of these Bylaws shall invalidate or detract from any right
or obligation with respect to any state of facts existing prior to the time
of such repeal or modification.</p>
<p><strong><a id="12.5" name="12.5">Section 12.5.</a>Rights Non-exclusive.</strong> The
indemnification and advancement of expenses provided by or granted pursuant
to this Article shall not be deemed exclusive of any other rights to which
those seeking indemnification or advancement of expenses may be entitled
under any bylaw, agreement, vote of members or disinterested directors or
otherwise, both as to action in their official capacity and as to
action in another capacity while holding such office.</p>
<p><strong><a id="12.6" name="12.6">Section 12.6.</a>Insurance.</strong> The corporation
may purchase and maintain insurance on behalf of any person who is or was a
director, officer, member, employee or agent of the corporation, or is or
was serving at the request of the corporation as a director, officer,
employee or agent of another corporation, partnership, joint venture, trust
or other enterprise against any liability asserted against them and
incurred by them in any such capacity, or arising out of their
status as such, whether or not the corporation would have the power to
indemnify them against such liability under the provisions of this
Article or of applicable law.</p>
<p><strong><a id="12.7" name="12.7">Section 12.7.</a>Definitions.</strong> For purposes of
this Article, references to "the corporation" shall include, in addition to
the resulting corporation, any constituent corporation (including any
constituent of a constituent) absorbed in a consolidation or merger which,
if its separate existence had continued, would have had power and authority
to indemnify its directors, officers, and employees or agents, so that any
person who is or was a director, officer, employee or agent of such
constituent corporation, or is or was serving at the request of such
constituent corporation as a director, officer, employee or agent of
another corporation, partnership, joint venture, trust or other enterprise,
shall stand in the same position under this Article with respect to the
resulting or surviving corporation as they would have with respect to
such constituent corporation if its separate existence had continued, and
references to "other enterprises" shall include employee benefit plans;
references to "fines" shall include any excise taxes assessed on a person
with respect to any employee benefit plan; and references to "serving at
the request of the corporation" shall include any service as a director,
officer, employee or agent of the corporation which imposes duties on, or
involves services by, such director, officer, employee, or agent with
respect to an employee benefit plan, its participants, or beneficiaries;
and a person who acted in good faith and in a manner they reasonably
believed to be in the interest of the participants and beneficiaries of an
employee benefit plan shall be deemed to have acted in a manner "not
opposed to the best interests of the corporation" as referred to in this
Article.</p>
<p><strong><a id="12.8" name="12.8">Section 12.8.</a>Continued Coverage.</strong> The
indemnification and advancement of expenses provided by, or granted
pursuant to this Article shall, unless otherwise provided when authorized
or ratified, continue as to a person who has ceased to be a director,
officer or member and shall inure to the benefit of the heirs, executors
and administrators of such person.</p>
<h2 id="article-xiii"><a id="A13" name="A13">ARTICLE XIII</a><a class="headerlink" href="#article-xiii" title="Permalink">&para;</a></h2>
<h3 id="general-provisions">General Provisions<a class="headerlink" href="#general-provisions" title="Permalink">&para;</a></h3>
<p><strong><a id="13.1" name="13.1">Section 13.1.</a>Checks.</strong> All checks or demands
for money and notes of the corporation shall be signed by such officer or
officers or such other person or persons as the Board of Directors may from
time to time designate.</p>
<p><strong><a id="13.2" name="13.2">Section 13.2.</a>Fiscal Year.</strong> The fiscal year
of the corporation shall be fixed by resolution of the Board of Directors.</p>
<p><strong><a id="13.3" name="13.3">Section 13.3.</a>Loans.</strong> No loans shall be
contracted on behalf of the corporation and no evidence of indebtedness
shall be issued in its name unless authorized by a resolution of the Board
of Directors. Such authority may be general or confined to specific
instances.</p>
<p><strong><a id="13.4" name="13.4">Section 13.4.</a>Deposits.</strong> All funds of the
corporation not otherwise employed shall be deposited from time to time to
the credit of the corporation in such depositories as the Board of
Directors shall direct.</p>
<p><strong><a id="13.5" name="13.5">Section 13.5.</a>Contracts.</strong> The Board of
Directors may authorize any officer or officers, agent or agents, to enter
into any contract or execute and deliver any instrument on behalf of the
corporation, and such authority may be general or confined to specific
instances.</p>
<p><strong><a id="13.6" name="13.6">Section 13.6.</a>Counterpart Execution:
Facsimile Execution.</strong> Any document requiring the signature of the
directors and/or members may be executed in any number of counterparts with
the same effect as if all of the required signatories had signed the same
document. Such executions may be transmitted to the corporation and/or the
other directors and/or members by facsimile and such facsimile execution
shall have the full force and effect of an original signature. All fully
executed counterparts, whether original executions or facsimile executions
or a combination, shall be construed together and shall constitute one and
the same agreement.</p>
<p><br/>THESE BYLAWS WERE READ, APPROVED AND ADOPTED BY THE BOARD OF
DIRECTORS OF THE APACHE SOFTWARE FOUNDATION ON THE 1ST DAY OF JUNE, 1999.</p>
<p>(signed)</p>
<p>Jim Jagielski, Secretary</p>
<h2 id="amendment-i">Amendment I<a class="headerlink" href="#amendment-i" title="Permalink">&para;</a></h2>
<p><em>Approved by resolution of the Board of Directors, 30 October 2002, the
following change is to be made to Section 4.1, Admission of Members,
effective 15 November 2002.</em></p>
<p><strong><a id="am4.1" name="am4.1">Section 4.1.</a>Admission of Members.</strong> To be
eligible for membership, a person or entity must be nominated by a current
member of the corporation and must complete a written membership
application in such form as shall be adopted by the Board of Directors from
time to time. The nomination<s><font color="#FF0000">and content of the
membership application</font></s>must be included in a notice to the
members, if any, of the corporation at least ten (10) days prior to any
vote on the applicant's admission, which notice may be by electronic means.
The initial members of the corporation shall be admitted upon the
affirmative vote of the Board of Directors of the Corporation at the
initial meeting of the Board of Directors. Thereafter, members of the
corporation shall be admitted as members of the corporation only by a
majority vote of the existing members of the corporation<font color="#FF0000">, and after receipt by the Secretary of a membership
application completed by each such proposed member within thirty (30) days
following the vote</font>.</p>
<h2 id="amendment-ii">Amendment II<a class="headerlink" href="#amendment-ii" title="Permalink">&para;</a></h2>
<p><em>Approved by resolution of the Board of Directors, 16 September 2020, the
following change is to be made to the Bylaws,
effective 11 March 2021.</em></p>
<p>Change all instances of gender-specific terminology to gender-neutral
terminology, specifically:
changing "Chairman" to "Board Chair", "Vice Chairman" to "Vice Chair",
"chairman" to "chair", "he or she" to "they", "him/her" to "their",
"his or her" to "their", "his, her, or their" to "their", and
"his, her, or its" to "their".</p>

</div>  </main>

  <!-- Footer -->
  <footer class="bg-primary">
    <div class="container">
      <div class="row">
        <br />
        <div class="col-sm-1">

        </div>
        <div class="col-sm-2">
          <h5 class="white">Community</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="http://community.apache.org/">Overview</a></li>
            <li><a href="/foundation/conferences.html">Conferences</a></li>
            <li><a href="http://community.apache.org/gsoc.html">Summer of Code</a></li>
            <li><a href="http://community.apache.org/newcomers/">Getting Started</a></li>
            <li><a href="/foundation/how-it-works.html">The Apache Way</a></li>
            <li><a href="/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>