<?php
/**
 * Copyright (c) 2005, 2017, 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:
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div id="midcolumn">
  <h1><?php print $pageTitle; ?></h1>
  <p>December 6, 2017</p>
  <p>
    The following licenses have been approved by the Board of Directors for use
    with Non-Code Content, as that term is defined in the <a
      href="termsofuse.php"
    >Eclipse.org Terms of Use</a>.
  </p>
  <ol>
    <li>the <a href="/legal/epl-2.0">Eclipse Public License 2.0</a>,
    </li>
    <li>the <a href="../org/documents/epl-v10.php">Eclipse Public License 1.0</a>,
    </li>
    <li>the <a href="http://creativecommons.org/licenses/by-sa/3.0/"
      target="_blank"
    >Creative Commons Attribution-Share Alike 3.0 (Unported) License</a>,
    </li>
    <li>the <a href="http://creativecommons.org/licenses/by/3.0/"
      target="_blank"
    >Creative Commons Attribution 3.0 (Unported) License</a>,
    </li>
    <li>the <a href="http://creativecommons.org/licenses/by-sa/4.0/"
      target="_blank"
    >Creative Commons Attribution-Share Alike 4.0 (International) License</a>,
      or
    </li>
    <li>the <a href="http://creativecommons.org/licenses/by/4.0/"
      target="_blank"
    >Creative Commons Attribution 4.0 (International) License</a>.
    </li>
  </ol>
  <br />
  <p>In addition, the following licenses have been approved by the Board of
    Directors for use with example code or build scripts and artifacts within
    Eclipse projects.</p>
  <ol>
    <li>the <a href="/legal/epl-2.0">Eclipse Public License 2.0</a>,
    </li>
    <li>the <a href="../org/documents/epl-v10.php">Eclipse Public License 1.0</a>,
      or
    </li>
    <li>the <a href="../org/documents/edl-v10.php">Eclipse Distribution License</a>
      (EDL).
    </li>
  </ol>
  <br />
  <p>
    For additional details on the definition of example code or build scripts
    and artifacts and how to seek PMC approval for using the EDL, please refer
    to the <a href="../org/documents/Licensing_Example_Code.pdf">policy document</a>.
  </p>
  <br />
</div>
<div id="rightcolumn">
  <div class="sideitem">
    <h6>Related Links</h6>
    <ul>
      <li><a href="index.php">Legal resources</a></li>
      <li><a href="guidetolegaldoc.php">Guide to legal documents</a></li>
    </ul>
  </div>
</div>