<?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:
 *    Denis Roy (Eclipse Foundation) - initial API and implementation
 *    Christopher Guindon (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>

<h2>Current releases</h2>
<ul class="fa-ul">
  <li><a href="http://help.eclipse.org/2020-09/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2020-09 (4.17) Documentation</a> (HTML Help Center)</li>
</ul>
<h2>Older releases</h2>
<ul class="fa-ul">
  <li><a href="http://help.eclipse.org/2020-06/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2020-06 (4.16) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/2020-03/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2020-03 (4.15) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/2019-12/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2019-12 (4.14) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/2019-09/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2019-09 (4.13) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/2019-06/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2019-06 (4.12) Documentation</a> (HTML Help Center)</li>
</ul>

<p>For even older releases (Photon, Oxygen, Neon, etc), please download the corresponding Eclipse SDK or any EPP package and start the Information center locally as described here:</p>
<ul class="fa-ul">
  <li><a href="https://archive.eclipse.org/eclipse/downloads/"><i class="fa fa-globe"></i> Eclipse project archived downloads</a></li>
  <li><a href="https://www.eclipse.org/downloads/packages/release/"><i class="fa fa-globe"></i> Eclipse Packaging Project (EPP) Releases</a></li>
  <li><a href="https://help.eclipse.org/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fua_help_setup_infocenter.htm"><i class="fa fa-globe"></i> How to start or stop information center from command line</a></li>
</ul>


