<?php

/**
 * Copyright (c) 2005-2015, 2018 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *   Eclipse Foundation - initial implementation
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div id="midcolumn">
  <h1><?php print $pageTitle; ?></h1>
  <p>The Eclipse Foundation holds elections for board members representing two very important groups
    within the Eclipse membership: the committers and the Contributing Members. The terms of office for these elected board members is one year, commencing
    April 1.</p>
  <p>
    Candidates and the community are encouraged to discuss the issues on the <a href="http://www.eclipse.org/forums/eclipse.foundation">Foundation forum</a>.
  </p>
  <h3>Duties and Responsibilities of an Eclipse Foundation Director</h3>
  <ul>
    <li>Directors have a fiduciary responsibility to the Eclipse Foundation. In brief, this means
      that they must base their decisions on the needs of the Eclipse Foundation before those of
      either themselves or their employer.</li>
    <li>In terms of time requirements, the Board meets once a month for a one-hour
      conference call. It also meets face-to-face three times per year, typically in
      March, June, and October.</li>
    <li>Expenses incurred by Directors who are employed by a Member Company are to be covered by the
      Member company. Directors who are self-employed or employed by a non-Member may have their
      expenses covered by the Eclipse Foundation.</li>
  </ul>
  <div class="homeitem3col">
    <h3><?php print $year; ?> Elections </h3>
    <p>
      Nominations for the 2022 elections are now closed. Below is the list of candidates. Individual candidate pages will be published when voting opens on February 10, 2022.
    </p>

    <p>Committer Candidates</p>
    <ul>
      <li>George Adams</li>
      <li>Emily Jiang</li>
      <li>Matthew Khouzam</li>
      <li>Shelley Lambert</li>
      <li>Ed Merks</li>
    </ul>

    <p>Contributing Member Candidates</p>
    <ul>
      <li>Manuel Bork</li>
      <li>Sayeed Choudhury</li>
      <li>Mark Goodchild</li>
      <li>Farah Papaioannou</li>
      <li>Torkild Ulvøy Resheim</li>
      <li>Gunnar Wagenknecht</li>
    </ul>
    
    <!--  
<p>Voting has ended in the 2020 elections. To learn about the 
results, <a href="https://www.eclipse.org/org/press-release/20200319-boardelection.php" target="_blank">see this announcement.</a></p>
-->

  </div>
</div>

<div id="rightcolumn">
  <div class="sideitem">
    <h6>Quick Links</h6>
    <ul>
      <li><a href=".">Election Home</a></li>
      <li><a href="nominees.php">Candidates</a></li>
      <li><a href="keydates.php">Key Dates</a></li>
      <li><a href="election_process.php">Election Process</a></li>
    </ul>
  </div>
</div>