<?php
/**
 * Copyright (c) 2005, 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:
 *   Ian Skerrett (Eclipse Foundation)
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div id="midcolumn">
  <h1><?php print $pageTitle; ?></h1>
  Date: May 13, 2010<br>
  <br>
  <br>
  <p>
    Welcome to <a href="http://www.eclipselabs.org">Eclipse Labs</a>, a place to build open source
    projects based on the Eclipse platform. Eclipse Labs is a collaboration between the Eclipse
    Foundation and Google Code. We ask all projects hosted on Eclipse Labs to respect and follow
    these guidelines.
  </p>
  <ol>
    <li>Eclipse Labs is part of Google Code. Users of Eclipse Labs must agree to the current <a
      href="http://code.google.com/projecthosting/terms.html"
    >Google Code Terms of Use</a>.</li>

    <li>The Eclipse Foundation supports Eclipse Labs by promoting the service to the Eclipse
      community. The Eclipse Labs name is used by permission of the Eclipse Foundation, Inc.</li>

    <li>Projects hosted on Eclipse Labs are not considered official Eclipse Foundation projects.
      Therefore, we ask project owners to respect the <a
      href="http://www.eclipse.org/legal/logo_guidelines.php"
    >Eclipse Foundation trademark guidelines</a>, including 1) not using Eclipse or an existing
      Eclipse project name in your Eclipse Labs project name, and 2) not using org.eclipse as the
      prefix for your bundle or package name. We would encourage you to use org.eclipselabs as your
      namespace. In general, projects hosted on Eclipse Labs should not portray themselves as
      official Eclipse Foundation projects.</li>

    <li>Projects hosted on Eclipse Labs are expected to be either Eclipse plugins or built using
      Eclipse technology. Therefore, the open source license for your project must be the Eclipse
      Public License (EPL) or one of these compatible license: Apache 2.0, MIT License, Mozilla
      Public License or New BSD.</li>

    <li>We expect some projects on Eclipse Labs will eventually move to become Eclipse Foundation
      projects. If you wish for this option to be available to your project we suggest you do the
      following: a) select the EPL as your initial license, b) keep track of all contributions and
      ensure they are contributed under the EPL. c) do not include or linked to any code that is
      licensed under GPL and LGPL. Unfortunately, those licenses are not approved for use by Eclipse
      projects.</li>

    <li>Each Eclipse Labs project is encouraged to list their project on the <a
      href="http://marketplace.eclipse.org/"
    >Eclipse Marketplace</a>. We also suggest each project to publish an update site and complete
      the project tagging information available on Eclipse Labs.</li>

  </ol>
</div>