<?php
/**
 * Copyright (c) 2005, 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
 */
?>
<style>
.checklist {
  border: 1px solid #ccc;
  list-style: none;
}

.checklist, .checklist li {
  margin: 0;
  padding: 0;
}

.checklist label {
  display: block;
  padding-left: 25px;
  text-indent: -25px;
}

.postit {
  border: 1px dashed black;
  margin: 10px 0 10px 0;
}

.postitinner {
  margin: 0 5px 5px 5px;
}
</style>
<form action="#" method="GET">
  <div id="midcolumn">
    <h1><?php print $pageTitle; ?></h1>
    <p>Last updated: September 25, 2007</p>
    <p>
      This document is intended to assist the Eclipse committers in fulfilling
      their obligations to implement the <a
        href="/org/documents/Eclipse_IP_Policy.pdf"
      >Eclipse IP Policy</a>. In addition to their role as the leading
      developers on Eclipse projects, Committers are also charged with the
      responsibility of ensuring that the software distributed by the Eclipse
      Foundation meets the expectations of the community with respect to
      intellectual property. This document provides a set of specific checklists
      for developers on Eclipse Projects to follow regarding the legal
      documentation required in all source files, builds, and releases. While
      these checklists should cover most projects, there will obviously be cases
      where additional advice is needed: if so, please contact <a
        href="mailto:emo@eclipse.org"
      >the Eclipse Management Organization</a>.
    
    
    <h2>1. Source Code</h2>
    <p>
      Every source file must have a Copyright and License Notice. The standard
      format for these notices can be found in <a
        href="copyrightandlicensenotice.php" target="_blank"
      > Default Copyright and License Notice</a>. If the source is to be
      licensed under a license other than the EPL alone, you must ensure that
      the Eclipse Foundation has approved the notice.
    </p>
    <p>
      Source files must have the Copyright and License Notice <em><b>before</b></em>
      the files are checked into the eclipse.org source repository.
    </p>
    <ul class="checklist">
      <li><label for="o1"><input id="o1" name="o1" type="checkbox" />Every
          source file has a Copyright and License Notice</label></li>
    </ul>
    <h2>2. Documentation</h2>
    <p>
      The help documentation must have a Legal page with a copyright notice and
      a link to the <a href="#about_files">About file</a> in the plug-in that
      contains the help documentation. For example:
    </p>
    <img src="guidetolegaldoc_files/Help_legal_page.jpg" width="598"
      height="260"
    >
    <p>Documentation books usually contain a &quot;Legal&quot; page as the last
      page in the book.</p>
    <ul class="checklist">
      <li><label for="o2"><input id="o2" name="o2" type="checkbox" />Every help
          documentation set contains a Legal page</label></li>
    </ul>
    <h2>
      <a name="3_Builds"></a>3. Builds
    </h2>
    <p>
      Every build distribution, such as a zip or tar file, must contain a <a
        href="epl/notice.html" target="_blank"
      >Eclipse Foundation Software User Agreement</a> (known as the
      &quot;SUA&quot;) in the root directory of the distribution in HTML format
      in a file named &quot;notice.html&quot;.
    </p>
    <p>
      A copy of the Project's primary license(s) must be in the root directory
      of the distribution in HTML format. In most cases, this will be the <a
        href="epl-v10.html"
      >Eclipse Public License</a> alone in a file named &quot;epl-v10.html&quot;
      In exceptional circumstances, the Board may approve the licensing of a
      project under license terms other than the EPL alone.
    
    
    <ul class="checklist">
      <li><label for="o31"><input id="o31" name="o31" type="checkbox" />Every
          build distribution has the standard SUA in the root as
          &quot;notice.html&quot;</label></li>
      <li><label for="o32"><input id="o32" name="o32" type="checkbox" />Every
          build distribution has a copy of the primary license(s) in the root,
          e.g., &quot;epl-v10.html&quot;</label></li>
    </ul>
    <div class="postit">
      <div class="postitinner">
        <a name="SUA"></a>
        <h3>What is the Software User Agreement?</h3>
        The Software User Agreement is the agreement that governs the use of all
        software distributed by the Eclipse Foundation. The SUA references the
        Eclipse Public License as the primary vehicle to grant license rights
        and obligations to use the software. In addition, it also references
        other legal notices and agreements and describes the potential layout of
        the legal documentation in the accompanying Content.
        <p>The reason for the SUA is that Eclipse-based content is highly
          modularized to facilitate ease of delivery, extensibility, and
          upgradeability. A typical Eclipse installation may potentially include
          plug-ins and features authored and/or distributed by many different
          parties including the Eclipse Foundation, other open-source
          organizations, and commercial vendors.
        
        
        <p>This modularity makes an Eclipse distribution somewhat different from
          a classical software product delivered with a single license file. The
          Eclipse Foundation SUA guides the consumer to the various licenses
          distributed through out the Eclipse Project distribution.
      
      </div>
    </div>
    <h2>4. Features</h2>
    <p>A feature is a set of one or more related plug-ins and/or fragments that
      can be installed and upgraded together. Every feature must have at least
      three (usually at least four) legal files:
    
    
    <p>For example:</p>
    <blockquote>
      <table cellspacing="4">
        <tr>
          <td><i>eclipse</i></td>
          <td>(installation root directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;<i>features</i></td>
          <td>(features directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>org.eclipse.sdk_3.0.1</i></td>
          <td>(feature directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>license.html</i></td>
          <td><b>(#1 Feature License)</b></td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>epl-v10.html</i></td>
          <td><b>(#2 Project's Primary License(s) (typically EPL alone)
              referenced by Feature License)</b></td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>feature.properties</i></td>
          <td><b>(#3 Feature Update License in &quot;license&quot; property)</b></td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;<i>plugins</i></td>
          <td>(plug-ins and fragments directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>org.eclipse.sdk_3.0.1</i></td>
          <td>(plug-in packaged as a directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>about.properties</i></td>
          <td><b>(#4 Feature Blurb in &quot;blurb&quot; property)</b></td>
        </tr>
      </table>
    </blockquote>
    The first required file is &quot;license.html&quot;. This file is required
    to be the <a href="epl/notice.html" target="_blank">Eclipse Foundation SUA</a>
    in HTML format (and thus an exact duplicate of the &quot;notice.html&quot;
    in <a href="#3_Builds">the root of the distribution</a>). This file is
    referred to as <em>The Feature License</em>.
    <p>
      The second required file is the <a href="epl-v10.html">Eclipse Public
        License</a> in HTML format in a file named &quot;epl-v10.html&quot; (and
      thus also an exact duplicate of the &quot;epl-v10.html&quot; in <a
        href="#3_Builds"
      >the root of the distribution</a>).
    
    
    <p>
      Each feature has a file named &quot;feature.xml&quot; with a
      <code>license</code>
      node. Often the strings in the &quot;feature.xml&quot; file are
      externalized in a &quot;feature.properties&quot; file. Either way, the
      <code>license</code>
      node or property must contain the <a href="epl/notice.txt" target="_blank">Eclipse
        Foundation SUA</a> in PLAIN TEXT format. This text (node or property) is
      referred to as <em>The Feature Update License</em>.
    
    
    <p>Each feature has at least one plug-in associated with it which is the
      &quot;feature plug-in&quot; for that feature. Not surprisingly, this
      plug-in usually has the same name as the feature. The
      &quot;about.properties&quot; property named &quot;blurb&quot; contains
      text that appears in the &quot;About features&quot; dialog in the Eclipse
      workbench. This is known as a &quot;Feature Blurb.&quot; Blurbs often
      contain copyright notices and any other statements of attribution that may
      be required by licenses.
    
    
    <ul class="checklist">
      <li><label for="o41"><input id="o41" name="o41" type="checkbox" />Every
          feature has the standard SUA in <u>HTML</u> in
          &quot;license.html&quot;</label></li>
      <li><label for="o42"><input id="o42" name="o42" type="checkbox" />Every
          feature has the Project's primary license(s) (e.g., the EPL in
          &quot;epl-v10.html&quot;)</label></li>
      <li><label for="o43"><input id="o43" name="o43" type="checkbox" />Every
          feature has the standard SUA in <u>plain text</u> in &quot;feature.xml
          &lt;license&gt;&quot; or &quot;feature.properties / license&quot;</label></li>
      <li><label for="o44"><input id="o44" name="o44" type="checkbox" />Every
          feature plug-in has copyright notices, etc. in the &quot;blurb&quot;
          property of &quot;about.properties&quot;</label></li>
    </ul>
    <div class="postit">
      <div class="postitinner">
        <h3>Why So Many Copies?</h3>
        <p>For technical reasons (i.e., this is the way the software works),
          each of the different copies of the SUA and Project license(s) (e.g.,
          EPL) are shown to the user at different times. We need to make sure
          that the SUA and Project license(s) are available to the user
          regardless of which installation and/or browsing mechanism he or she
          uses, thus the existence of numerous copies of the same legal
          documents.
      
      </div>
    </div>
    <div class="postit">
      <div class="postitinner">
        <h3>What&rsquo;s the Difference Between These Files?</h3>
        <p>The difference between the Feature License and Feature Update License
          is when they are shown to the user. The Feature License is only
          available once a feature has been installed. The Feature Update
          License is seen when a user is using the Eclipse Update Manager to
          install or upgrade a feature and must agree to an agreement before
          proceeding with the installation. One thing that is important to note
          is that with the distributed licensing model used by plug-ins, unless
          a Feature Update License contains an aggregation of all the notices
          from the plug-ins for a feature, a user will not be able to see these
          notices before installing the feature.</p>
      </div>
    </div>
    <h2>5. Plug-ins</h2>
    <p>
      <a name="#about_files"></a> All plug-in directories must have an
      &quot;about.html&quot; file describing the license terms of the code and
      content of the plug-in. The &quot;about.html&quot; file may also contain
      other information such as whether the content contains cryptographic
      functionality that may be subject to export controls. These
      &quot;about.html&quot; are collective known as &quot;Abouts.&quot;
    
    
    <p>
      Most plug-ins of Eclipse Projects are pure EPL and thus the about.html
      file will be <a href="epl/about.html" target="_blank">default about for
        EPL plug-ins</a>. If a plug-in contains non-EPL content, read more about
      <a href="epl/about.php">About files</a> and how to write About files for
      third-party content.
    
    
    <p>In JAR&rsquo;ed plug-ins, any local files linked from an About such as
      copies of licenses, must be located in a directory called
      &quot;about_files.&quot; The contents of the &quot;about_files&quot;
      directory are handled specially so that links resolve correctly when the
      About in a JAR&rsquo;ed plug-in is viewed in an external browser spawned
      from the About dialog.</p>
    <p>As an example:</p>
    <blockquote>
      <table cellspacing="4">
        <tr>
          <td><i>eclipse</i></td>
          <td>(installation root directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;<i>plugins</i></td>
          <td>(plug-ins and fragments directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>org.apache.ant_1.6.2</i></td>
          <td>(plug-in packaged as a directory)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>about.html</i></td>
          <td><b>About</b></td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>asl-v20.txt</i></td>
          <td><b>Apache Software License referenced by about.html</b></td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>LICENSE.dom.html</i></td>
          <td><b>W3C License referenced by about.html</b></td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>org.eclipse.core.runtime_3.1.0.jar</i></td>
          <td>(plug-in packaged as a JAR)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>about.html</i></td>
          <td><b>About</b></td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>about_files</i></td>
          <td>(directory for any local files linked from about.html)</td>
        </tr>
        <tr>
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>asl-v20.txt</i></td>
          <td><b>Apache Software License referenced by about.html</b></td>
        </tr>
      </table>
    </blockquote>
    <ul class="checklist">
      <li><label for="o51"><input id="o51" name="o51" type="checkbox" />Every
          plug-in has an &quot;about.html&quot;, usually the standard one.</label></li>
      <li><label for="o53"><input id="o53" name="o53" type="checkbox" />Every
          plug-in with a non-standard &quot;about.html&quot; contains the
          additional referenced license files.</label></li>
      <li><label for="o52"><input id="o52" name="o52" type="checkbox" />Every
          &rsquo;ed plug-in stores linked files in &quot;about_files&quot;</label></li>
    </ul>
    <h2>6. Download Web Pages</h2>
    <p>
      Any web page that makes builds available must have a link to the <a
        href="#SUA"
      >SUA</a> with the following wording:
    
    
    <blockquote>
      <p>
        All downloads are provided under the terms and conditions of the <a
          href="epl/notice.php" target="_blank"
        >Eclipse Foundation Software User Agreement</a> unless otherwise
        specified.
      </p>
    </blockquote>
    <ul class="checklist">
      <li><label for="o61"><input id="o61" name="o61" type="checkbox" />All
          download pages contain the standard reference to the SUA.</label></li>
    </ul>
    <h2>Appendix A. Viewing All These Files</h2>
    <h3>About Files</h3>
    <p>
      Users looking for legal documentation may find the Abouts by browsing the
      directory structure of an Eclipse installation but the files are also
      viewable from the &quot;About plug-ins&quot; dialog in the Eclipse
      workbench. To view the Abouts, go to the menu item <strong>Help -> About
        Eclipse Platform</strong> and then click on the button &quot;Plug-in
      Details&quot; and then select a plug-in and click on the button &quot;More
      Info.&quot;
    </p>
    <img src="guidetolegaldoc_files/About_plugins_dialog.jpg" width="598"
      height="447"
    >
    <h3>Feature Blurbs</h3>
    <p>
      To view the blurb for each installed feature, go to the menu item <strong>Help
        > About Eclipse Platform</strong> and then click &quot;Feature
      Details&quot; and then select a feature. The blurb will appear in the
      bottom half of the dialog.
    </p>
    <img src="guidetolegaldoc_files/About_features_dialog.jpg" width="598"
      height="536"
    >
  </div>
</form>