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

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