<!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">    <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 Chairman,
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
Chairman, 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 Chairman, 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 his or her
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 his or her 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 his or her 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
for him/her by proxy.</p>
<p>Every proxy must be signed by the member or his or her 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 his, her or its 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 his or her successor shall have been elected and
qualified or until his or her 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 he or she is elected and until his or her successor shall have been
elected and qualified or until his or her 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 Chairman of the Board, 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 his or her or 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 Chairman of the
Board, one or more Vice Chairmen, 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>Chairman of the Board.</strong> The Chairman of the Board, 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 Chairman.</strong> The Vice Chairman, if one is elected, shall, in the
absence or disability of the Chairman of the Board, perform the duties and
exercise the powers of the Chairman of the Board. The Vice Chairman shall
also perform whatever duties and have whatever powers the Board of
Directors may from time to time assign him/her. If more than one Vice
Chairman is elected and the Chairman is absent or becomes disabled, the
Board of Directors shall choose one Vice Chairman to perform the duties and
exercise the powers of the Chairman.</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 Chairman of the Board 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. He or she also shall perform whatever duties and
have whatever powers the Board of Directors may from time to time assign
him or her. 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 him or her.</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 he or she 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 his or her signature and, in general, shall
perform all duties as may be assigned to him or her from time to time by
the Chairman, 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 Chairman, 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 chairman 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 chairman of
each Project Management Committee shall be primarily responsible for
project(s) managed by such committee, and he or she 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 his or her successor is elected and qualified or until his or her
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 he or she
is or was a director, officer or member 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, 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 he or she is 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 he or she has 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 his or her 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 him or her and
incurred by him or her in any such capacity, or arising out of his or her
status as such, whether or not the corporation would have the power to
indemnify him or her 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 he or she 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 he or she 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>

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