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

  <!-- pagefind search -->
  <link href="/_pagefind/pagefind-ui.css" rel="stylesheet">
  <script src="/_pagefind/pagefind-ui.js" type="text/javascript"></script>
  <script>
    window.addEventListener('DOMContentLoaded', (event) => {
        new PagefindUI({ element: "#pagefind-search" });
    });
  </script>

<!-- 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="/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="https://tac.apache.org">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 id="pagefind-search" class="input-group" style="width: 100%; padding: 0 5px;"></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="https://tac.apache.org">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="https://privacy.apache.org/policies/privacy-policy-public.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.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>