<?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-03/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2020-03 (4.15) Documentation</a> (HTML Help Center)</li>
</ul>
<h2>Older releases</h2>
<ul class="fa-ul">
  <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>
  <li><a href="http://help.eclipse.org/2019-03/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2019-03 (4.11) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/2018-12/index.jsp"><i class="fa fa-globe"></i> Eclipse IDE 2018-12 (4.10) 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>


