<?php
/**
 * Copyright (c) 2015, 2018 Eclipse Foundation.
 *
 * 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:
 * Nathan Gervais (Eclipse Foundation) - Initial implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div id="midcolumn">
  <h1><?php print $pageTitle;?></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>
</div>
<!-- remove the entire <div> tag to omit the right column!  -->
<div id="rightcolumn">
  <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>