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