<?php
/**
 * Copyright (c) 2014, 2018 Eclipse Foundation and others.
 *
 * 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:
 *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
 *    Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>

<div id="midcolumn">
  <h1><?php print $pageTitle;?></h1>
  <h2>What is Eclipse.org?</h2>
  <p> Eclipse is an open source community whose projects are focused on providing an
  extensible development platform and application frameworks for building software.
  Eclipse provides extensible tools and frameworks that span the software development
  lifecycle, including support for modeling, language development environments for Java,
  C/C++ and others, testing and performance, business intelligence, rich client
  applications and embedded development. A large, vibrant ecosystem of major technology
  vendors, innovative start-ups, universities and research institutions and individuals
  extend, complement and support the Eclipse Platform.</p>

  <div class="homeitem">
    <h3>Resources for the Eclipse Developer Community</h3>
    <ul>
      <li><a href="../documentation/main.html">Eclipse Technical Documentation</a> </li>
      <li><a href="#"></a>Project Overview Map with subprojects </li>
      <li>Papers: <a href="../org/councils/roadmap.php">Eclipse Roadmap</a>, <a href=""
      ../whitepapers/eclipse-overview.pdf">Whitepaper (.pdf) </a></li>
      <li><a href="../articles/index.html">Peer-reviewed technical articles</a></li>
      <li><a href="../search/search.cgi?form=extended&qprev=">Advanced Search</a> and <a href="#">ask technical questions on the newsgroups</a></li>
      <li><a href="#"></a>Catalogues of Eclipse related Events, Books, Tutorials, community websites </li>
    </ul>
  </div>
  <div class="homeitem">
    <h3>The Eclipse Foundation</h3>
    <ul>
      <li><a href="../org/membership/become_a_member/">Membership in the Eclipse Foundation </a> </li>
      <li><a href="../org/membership/members/">List of Members</a>, Board of Directors, Technical Councils</li>
      <li><a href="../org/legal/">Legal and Licensing</a> </li>
      <li><a href="">Calendar of Events</a></li>
      <li><a href="../org/press-release/">Press Releases</a> and case studies</li>
    </ul>
  </div>
</div>
<!-- remove the entire <div> tag to omit the right column!  -->
<div id="rightcolumn">
  <div class="sideitem">
    <h6>What is .. ?</h6>
    <ul>
      <li><a href="../rcp/">OSGi/RCP</a></li>
      <li><a href="../swt/">SWT</a></li>
      <li><a href="../jdt/">JDT</a></li>
      <li><a href="../emf/">EMF</a></li>
      <li><a href="../eclipse/">Platform</a></li>
      <li><a href="../cdt/">CDT</a></li>
    </ul>
  </div>
  <div class="sideitem">
    <h6>Eclipse Top Level Projects</h6>
    <ul>
      <li><a href="../eclipse/"> Eclipse (Platform)</a></li>
      <li><a href="../birt/">Business Intelligence and Reporting Tools (BIRT)</a></li>
      <li><a href="../dtp/">Data Tools Platform (DTP)</a></li>
      <li><a href="../dsdp/">Device Software Development Platform (DSDP)</a></li>
      <li><a href="../technology/">Technology (incubator)</a></li>
      <li><a href="../tptp/">Test and Performance Tools Platform </a></li>
      <li><a href="../tools/">Tools (C/C++, Modelling..)</a></li>
      <li><a href="../webtools/">Web Tools Platform </a></li>
    </ul>
  </div>
</div>
