<?php
/*******************************************************************************
 * Copyright (c) 2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Eric Poirier (Eclipse Foundation) - Initial implementation
 *******************************************************************************/
?>

<section class="jumbotron breadcrumbs-offset">
  <div class="container">
    <div class="content">
      <div class="alert alert-danger" role="alert">
        <a href="https://projects.eclipse.org/releases/mars">Mars</a> is
        a past version of Eclipse. Please visit our <a href="/downloads/">download</a>
        page for the latest version of Eclipse.
      </div>
      <h1>MARS release</h1>
      <h2>June 2015</h2>
      <div class="row">
        <div class="col-md-10 col-sm-12">
          <ul class="list-with-arrow">
            <li>New Java IDE features, including hierarchical view of nested projects, ability to customize perspectives
            and speed improvements for text search.</li>
            <li>Integrated tools for building and maintaining Docker containers, available from Linux Tools project.</li>
            <li>Oomph project now makes it possible to record and share user preference settings across individual workspaces.</li>
            <li>New integration with Gradle making it easy to manage Gradle builds from Eclipse, via the Buildship project.</li>
          </ul>
        </div>
        <div class="col-md-10 col-sm-12">
          <ul class="list-with-arrow">
            <li>Improved Maven support, including support for Maven 3.3.3, improved Maven archetypes integration
            and enhanced auto-completion in the pom editor.</li>
            <li>Automated error reporting that allows Eclipse users to report errors directly to Eclipse projects.</li>
            <li>The new Thym project provides tools for building cross-platform mobile applications using Apache Cordova.</li>
          </ul>
          <ul class="list-inline">
            <li><a class="btn btn-primary btn-border-only white" href="/downloads/packages/release/Mars/2">Download</a></li>
            <li><a class="btn btn-primary btn-border-only white" href="https://projects.eclipse.org/releases/mars">Projects</a></li>
            <li><a class="btn btn-primary btn-border-only white" href="#together">Improve Eclipse</a></li>
          </ul>
        </div>
      </div>
      <hr>
      <p class="text-center"><a href="/home">Click here to continue to eclipse.org</a></p>
    </div>
  </div>
</section>
<section class="projects">
  <div class="container">
    <div class="row">
      <div class="col-md-18 col-sm-24 col-md-offset-3">
        <h2><span class="bold">Projects</span> included in Eclipse Mars</h2>
        <div class="well">
          <div class="row vertical-align for-sm-and-up">
            <div class="col-lg-6 col-md-8 col-sm-8">
              <div class="logo col-left-box"><img src="/mars/images/logo-jubula.png" alt="Jubula logo"></div>
            </div>
            <div class="col-lg-18 col-md-16 col-sm-16">
              <div class="content">
                <h3><a href="/jubula/">Jubula 3.1</a></h3>
                <p>Automated functional testing tool. New 3.1 release includes a new client API for developing tests in code.</p>
              </div>
            </div>
          </div>
        </div><!-- end of .well -->
        <div class="well">
          <div class="row vertical-align for-sm-and-up">
            <div class="col-lg-6 col-md-8 col-sm-8 col-sm-push-16 col-lg-push-18">
              <div class="logo col-right-box"><img src="/mars/images/logo-gef.png" alt="GEF logo"></div>
            </div>
            <div class="col-lg-18 col-md-16 col-sm-16 col-sm-pull-8 col-lg-pull-6">
              <div class="content">
                <h3><a href="/gef/">GEF 3.10</a></h3>
                <p>Framework for building rich graphical applications. New 3.10 release includes the new GEF4
                implementation, a new generation of GEF that uses JavaFX.</p>
              </div>
            </div>
          </div>
        </div><!-- end of .well -->
        <div class="well">
          <div class="row vertical-align for-sm-and-up">
            <div class="col-lg-6 col-md-8 col-sm-8">
              <div class="logo col-left-box"><img src="/mars/images/logo-sirius.png" alt="Sirius logo"></div>
            </div>
            <div class="col-lg-18 col-md-16 col-sm-16">
              <div class="content">
                <h3><a href="/sirius/">Sirius 3.0</a></h3>
                <p>Easily define a modeling workbench.</p>
              </div>
            </div>
          </div>
        </div><!-- end of .well -->
        <div class="well">
          <div class="row vertical-align for-sm-and-up">
            <div class="col-lg-6 col-md-8 col-sm-8 col-sm-push-16 col-lg-push-18">
              <div class="logo col-right-box"><img src="/mars/images/logo-ecf.png" alt="ECF logo"></div>
            </div>
            <div class="col-lg-18 col-md-16 col-sm-16 col-sm-pull-8 col-lg-pull-6">
              <div class="content">
                <h3><a href="/ecf/">Eclipse Communication Framework 3.10</a></h3>
                <p>Set of frameworks that implement communications protocols for application developers.</p>
              </div>
            </div>
          </div>
        </div><!-- end of .well -->
        <div class="well">
          <div class="row vertical-align for-sm-and-up">
            <div class="col-lg-6 col-md-8 col-sm-8">
              <div class="logo col-left-box"><img src="/mars/images/logo-papyrus.png" alt="Papyrus logo"></div>
            </div>
            <div class="col-lg-18 col-md-16 col-sm-16">
              <div class="content">
                <h3><a href="/papyrus/">Papyrus 1.1</a></h3>
                <p>Set of modeling tools supporting EMF, UML and other languages.</p>
              </div>
            </div>
          </div>
        </div><!-- end of .well -->
        <div class="text-center">
          <a href="https://projects.eclipse.org/releases/mars" class="btn btn-primary btn-border-only black">MORE</a>
        </div>
      </div>
    </div>
  </div>
</section>
<section id="together" class="together footer-offset">
  <div class="container">
    <div class="row">
      <div class="col-md-18 col-md-offset-3">
        <h2><span class="bold">Together</span> We Can Improve Eclipse</h2>
        <p>By making a donation to Friends of Eclipse, you can help improve Eclipse.
        All donations will be used to fund Eclipse IDE development. Donate today and together
        we can improve Eclipse.</p>
        <p><a href="/donate" class="btn btn-primary btn-border-only black">DONATE</a></p>
      </div>
    </div>
  </div>
</section>