<?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:
 *    Nathan Gervais (Eclipse Foundation) - Initial implementation
 *    Eric Poirier (Eclipse Foundation)
 *******************************************************************************/
 ?>
 <div id="midcolumn">
  <h1>Review the Eclipse Helios Release</h1>

  <p>
    The Eclipse Foundation wants to hear what you think of the <a
      href="https://projects.eclipse.org/releases/helios">Eclipse projects</a>
    that are being released as part of Helios. As an added bonus, all
    qualified reviewers will receive an Eclipse t-shirt. One lucky
    winner will also win a pass to <a
      href="http://www.eclipsecon.org/2011/">EclipseCon 2011</a> or <a
      href="http://www.eclipsecon.org/summiteurope2010/">Eclipse Summit
      Europe 2010</a>! Entries must be received by July 31, 2010 at 4:00
    pm EST.
  </p>

  <h3>Entry Instructions</h3>
  <ul>
    <li>Write a review or record a video review or demo of Helios.</li>
    <li>Publish your review on your blog, a newsgroup, or portal such as
      <a href="http://www.eclipsezone.com" target="blank">EclipseZone</a>,
      <a href="http://www.infoq.com" target="blank">InfoQ</a>, <a
      href="http://www.javalobby.com" target="blank">Javalobby</a>, <a
      href="http://www.jaxenter.com" target="blank">Jaxenter</a>, <a
      href="http://www.theserverside.com" target="blank">The ServerSide</a>
      or other technology portal
    </li>
    <li>Send your name and the link to your review to <a
      href="mailto:helios.reviews@eclipse.org">helios.reviews@eclipse.org</a></li>
  </ul>

  <p>Individuals are allowed to submit multiple entries, but only one
    prize per person will be awarded.</p>

  <img src="blogcollage.png" width="500">

  <h3>Review Guidelines</h3>
  <ul>
    <li>A review will be eligible for a prize if it conveys sufficient
      technical content.</li>
    <li>Three to five points of what you like or don't like about one or
      more Helios projects should be enough. Long essays aren't
      necessary.</li>
    <li>Eclipse is a global community, so feel free to write or record a
      review in your native language.</li>
    <li>You can see last year's <a href="2009reviews.php">winning
        reviews</a> for examples of what we're looking for
    </li>
  </ul>

  <h3>Receive a Thank You</h3>
  <ul>
    <li>Best review: Full pass to <a
      href="http://www.eclipsecon.org/2011/">EclipseCon 2011</a> or <a
      href="http://www.eclipsecon.org/summiteurope2010/">Eclipse Summit
        Europe 2010</a></li>
    <li>3 top reviews: Eclipse jacket</li>
    <li>All other qualified reviews get a choice of:
      <ul>
        <li><a href="http://www.zazzle.com/eclipseide" target="blank">Eclipse
            t-shirt</a> printed with a message customized by you</li>
        <li>Helios t-shirt</li>
      </ul>
    </li>
  </ul>

  <a href="http://www.zazzle.com/eclipseide" target="blank"><img
    src="ZazzleShirt.png" height="160"></a> <a href="tshirt.jpg"
    target="blank"><img src="tshirt.jpg" height="160"></a>

  <p>The best and top reviews will be selected by a panel of judges from
    the Eclipse community.</p>

  <p style="font-size: 10px">
    Prizes have no cash value and quantities are limited. The full pass
    to EclipseCon or Eclipse Summit Europe only covers conference
    registration and does not include travel expenses. The pass is
    non-transferable and non-refundable, so if you can't go to either
    conference or you receive a free pass some other way (as a speaker,
    for example), you won't be able to take advantage of the prize.</font>
  </p>

  <h3>Questions?</h3>
  <p>
    <a href="mailto:helios.reviews@eclipse.org">helios.reviews@eclipse.org</a>
  </p>

  <br> <br>

</div>

<!-- remove the entire <div> tag to omit the right column!  -->
<div id="rightcolumn">
  <div class="sideitem">
    <h6>Helios</h6>
    <ul id="leftnav">
      <li><a href="/downloads/packages/release/helios/sr2" target="_self">Download
          Now</a></li>
      <li><a href="https://projects.eclipse.org/releases/helios" target="_self">Helios Projects</a></li>
      <li><a href="/helios/blogathon/reviews.php" target="_self">Blogathon</a></li>
      <li><a href="/helios/demos.php" target="_self">Demos</a></li>
      <li><a href="/helios/heliosinaction.php" target="_self">Virtual
          Conference</a></li>
      <li><a href="/helios/friends.php" target="_self">Friends of Helios</a></li>
    </ul>

  </div>
  <div class="sideitem">
    <h6>Related Links</h6>
    <ul>
      <li><a href="reviews.php">2010 Helios Reviews</a></li>
      <li><a href="2010reviews.php">2010 Winning Reviews</a></li>
      <li><a href="2009reviews.php">2009 Winning Reviews</a></li>
    </ul>
  </div>
</div>