<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<meta name="keywords" content="SMILA/Legal Documentation,About.properties,Eclipse copyright tool,Here,How to use Eclipse copyright tool,The about.html" />
		<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/favicon.ico" />
		<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
	
		
		<title>SMILA/Legal Documentation - Eclipsepedia</title>

		<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
		<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
		<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
	        <!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
		<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
		<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
		<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
		<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
		<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
		<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
		<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Legal_Documentation";
var wgTitle = "SMILA/Legal Documentation";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "15936";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "123534";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
                
		<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>

<!-- Performance mods similar to those for bug 166401 -->
		<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>

		<!-- Head Scripts -->
				<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<link rel="stylesheet" type="text/css" href="Legal_Documentation.html" />	</head>
<body  class="mediawiki ns-0 ltr page-SMILA_Legal_Documentation">
	<div id="globalWrapper">


		<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->

		      <div id="header">
               <div id="header-graphic">
                 <img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
               </div>
<!-- Pulled 101409 Mward	   -->
            
            <div class="portlet" id="p-personal">
              <div class="pBody">
              <ul>
                <li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Legal_Documentation">Log in</a></li>
                      </ul>
              </div>
            </div>

            <div id="header-icons">
	      <div id="sites">
              <ul id="sitesUL">
                <li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
                <li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
                <li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
                <li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
                <li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
                <li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
              </ul>
              </div>
            </div>
        </div> 
<!-- NEW HEADER STUFF HERE -->
       <div id="header-menu">
         <div id="header-nav">
               <ul> 		 <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li>                  <li><a  href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li> 
                 <li><a  href="http://www.eclipse.org/users/" target="_self">Users</a></li> 
                 <li><a  href="http://www.eclipse.org/membership/" target="_self">Members</a></li> 
                 <li><a  href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li> 
                 <li><a  href="http://www.eclipse.org/resources/" target="_self">Resources</a></li> 
                 <li><a  href="http://www.eclipse.org/projects/" target="_self">Projects</a></li> 
                 <li><a  href="http://www.eclipse.org/org/" target="_self">About Us</a></li> 
                </ul>
         </div>
         <div id="header-utils">
<!-- moved the search window here -->
                           <form action="http://wiki.eclipse.org/Special:Search" >
                  <input class="input" name="search" type="text" accesskey="f" value="" />
                    <input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
                    <input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text"  value="Search" />
                </form>
		 </div>
      </div>


<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->

<!--Started nav  rip here-->
<!-- these are the nav controls main page, changes etc -->
    <div id="novaContent" class="faux">
            <div id="leftcol">
          <ul id="leftnav">
<!-- these are the page controls, edit history etc -->
            	  <li class="separator"><a class="separator">Navigation &#160;&#160;</li>
                                <li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
	                                <li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
	                                <li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
	                                <li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
	                                <li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
	                                <li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
		  <li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>

				<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Legal_Documentation">What links here</a></li>
				<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Legal_Documentation">Related changes</a></li>
                <!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
				<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Legal_Documentation&amp;printable=yes">Printable version</a></li>				<li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Legal_Documentation&amp;oldid=123534">Permanent link</a></li>	  </ul>
        </div>


<!-- Additions and mods for leftside nav End here -->


  <div id="column-content">
    <div id="content">
      <a name="top" id="top"></a>

              <div id="tabs">
         <ul class="primary">
                                         <li class="active"><a href="Legal_Documentation.html"><span class="tab">Page</span></a></li>
                                                         <li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Legal_Documentation&amp;action=edit"><span class="tab">Discussion</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Legal_Documentation&amp;action=edit"><span class="tab">View source</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Legal_Documentation&amp;action=history"><span class="tab">History</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Legal%20Documentation"><span class="tab">Edit</span></a></li>
                  </ul>
        </div>


          <script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
            <h1 class="firstHeading">SMILA/Legal Documentation</h1>
      <div id="bodyContent">
        <h3 id="siteSub">From Eclipsepedia</h3>
        <div id="contentSub"><span class="subpages">&lt; <a href="../SMILA.html" title="SMILA">SMILA</a></span></div>
                              <div id="jump-to-nav">Jump to: <a href="Legal_Documentation.html#column-one">navigation</a>, <a href="Legal_Documentation.html#searchInput">search</a></div>          <!-- start content -->
          <table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="Legal_Documentation.html#The_core_of_the_legalisation"><span class="tocnumber">1</span> <span class="toctext">The core of the legalisation</span></a>
<ul>
<li class="toclevel-2"><a href="Legal_Documentation.html#Source_Code"><span class="tocnumber">1.1</span> <span class="toctext">Source Code</span></a>
<ul>
<li class="toclevel-3"><a href="Legal_Documentation.html#Good_examples_from_SMILA"><span class="tocnumber">1.1.1</span> <span class="toctext">Good examples from SMILA</span></a></li>
<li class="toclevel-3"><a href="Legal_Documentation.html#Should_have_generated_files_copyright_notice.3F"><span class="tocnumber">1.1.2</span> <span class="toctext">Should have generated files copyright notice?</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="Legal_Documentation.html#Documentation"><span class="tocnumber">1.2</span> <span class="toctext">Documentation</span></a></li>
<li class="toclevel-2"><a href="Legal_Documentation.html#Builds"><span class="tocnumber">1.3</span> <span class="toctext">Builds</span></a></li>
<li class="toclevel-2"><a href="Legal_Documentation.html#Features"><span class="tocnumber">1.4</span> <span class="toctext">Features</span></a>
<ul>
<li class="toclevel-3"><a href="Legal_Documentation.html#Good_examples_from_SMILA_2"><span class="tocnumber">1.4.1</span> <span class="toctext">Good examples from SMILA</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="Legal_Documentation.html#Plug-ins"><span class="tocnumber">1.5</span> <span class="toctext">Plug-ins</span></a>
<ul>
<li class="toclevel-3"><a href="Legal_Documentation.html#Good_examples_from_SMILA_3"><span class="tocnumber">1.5.1</span> <span class="toctext">Good examples from SMILA</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1"><a href="Legal_Documentation.html#Summary"><span class="tocnumber">2</span> <span class="toctext">Summary</span></a></li>
<li class="toclevel-1"><a href="Legal_Documentation.html#About_File_Templates"><span class="tocnumber">3</span> <span class="toctext">About File Templates</span></a>
<ul>
<li class="toclevel-2"><a href="Legal_Documentation.html#Simple_About_File_Template"><span class="tocnumber">3.1</span> <span class="toctext">Simple About File Template</span></a></li>
<li class="toclevel-2"><a href="Legal_Documentation.html#Third-Party_Content_About_File_Template"><span class="tocnumber">3.2</span> <span class="toctext">Third-Party Content About File Template</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="Legal_Documentation.html#Features_Licenses_and_Feature_Update_Licenses"><span class="tocnumber">4</span> <span class="toctext">Features Licenses and Feature Update Licenses</span></a></li>
<li class="toclevel-1"><a href="Legal_Documentation.html#Glossary"><span class="tocnumber">5</span> <span class="toctext">Glossary</span></a></li>
<li class="toclevel-1"><a href="Legal_Documentation.html#Links"><span class="tocnumber">6</span> <span class="toctext">Links</span></a></li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="The_core_of_the_legalisation"></a><h2> <span class="mw-headline"> The core of the legalisation </span></h2>
<a name="Source_Code"></a><h3> <span class="mw-headline">Source Code</span></h3>
<p>Every source code (which includes Java source as well other types of files such as XML, HTML, etc.) must have a <a href="http://www.eclipse.org/legal/copyrightandlicensenotice.php" class="external text" title="http://www.eclipse.org/legal/copyrightandlicensenotice.php" rel="nofollow">Copyright and License Notice</a>. If the source is to be licensed under a license other than the <a href="http://www.eclipse.org/org/documents/epl-v10.php" class="external text" title="http://www.eclipse.org/org/documents/epl-v10.php" rel="nofollow">Eclipse Public License Version 1.0</a> alone, you must ensure that the Eclipse Foundation has approved the notice.
</p><p>Source files (which includes Java source as well other types of files such as XML, HTML, etc.) must have the Copyright and License Notice before the files are checked into the eclipse.org source repository.
</p><p>The Eclipse repository contains a tool that will fix copyrights in your code: <a href="http://wiki.eclipse.org/Eclipse_copyright_tool" title="Eclipse copyright tool">Eclipse copyright tool</a>
</p><p>Read here, how you can use the Eclipse copyright tool: <a href="http://wiki.eclipse.org/How_to_use_Eclipse_copyright_tool" class="mw-redirect" title="How to use Eclipse copyright tool">How to use Eclipse copyright tool</a>
</p>
<a name="Good_examples_from_SMILA"></a><h4> <span class="mw-headline">Good examples from SMILA</span></h4>
<p>All java, xml and properties files in SMILA have a copyright header.
</p><p><br />
Java source&nbsp;: <i>DeltaIndexingManager.java</i> (Plug-in <i>org.eclipse.eilf.connectivity.deltaindexing</i>) has a header:
</p><p><a href="http://wiki.eclipse.org/Image:Header1.jpg" class="image" title="Image:header1.jpg"><img alt="Image:header1.jpg" src="http://wiki.eclipse.org/images/e/e8/Header1.jpg" width="600" height="225" border="0" /></a>
</p><p><br />
XML source: <i>BrokerConfig.xml</i> (Plug-in <i>org.eclipse.eilf.connectivity.queue.broker.main</i>) has a header:
</p><p><a href="http://wiki.eclipse.org/Image:Header_xml.jpg" class="image" title="Image:header_xml.jpg"><img alt="Image:header_xml.jpg" src="http://wiki.eclipse.org/images/1/1c/Header_xml.jpg" width="1000" height="175" border="0" /></a>
</p><p><br />
Properties file: <i>build.properties</i>(Plug-in <i>org.eclipse.smila.product</i>) has a header:
</p><p><a href="http://wiki.eclipse.org/Image:Properties.jpg" class="image" title="Image:properties.jpg"><img alt="Image:properties.jpg" src="http://wiki.eclipse.org/images/b/b6/Properties.jpg" width="700" height="300" border="0" /></a>
</p>
<a name="Should_have_generated_files_copyright_notice.3F"></a><h4> <span class="mw-headline">Should have generated files copyright notice?</span></h4>
<ul><li> We have some generated code (JAXB) that we use in the SMILA project. Should have these files copyright notice?
</li></ul>
<p><b>Martin Oberhuber</b> (Senior Member of Technical Staff)&nbsp;: 
</p><p>No generated source code bears any expression of creativity or art whatsoever, and is therefore not subject to Copyright law. Therefore, just leave the source as it is (without any copyright
header), and check it in. 
If there is any copyrightable material in the generated code, then it's the template from which it was generated. Therefore, that very template is responsible for adding a copyright header or not.
</p><p>Also, note that the absence or presence of a Copyright Header does not change the legal status of any material in any way -- its copyright owner, or license information exist or do not exist
regardless of whether that information is in the source file or not. 
Having it in the source file is just a matter of making it easier for adopters to find the relevant information.
</p>
<a name="Documentation"></a><h3> <span class="mw-headline">Documentation</span></h3>
<p>The help documentation must have a Legal page with a copyright notice and a link to the About file in the plug-in that contains the help documentation.
Documentation books usually contain a "Legal" page as the last page in the book.
</p>
<a name="Builds"></a><h3> <span class="mw-headline">Builds</span></h3>
<p>Every build distribution, such as a zip or tar file, must contain a Eclipse Foundation Software User Agreement (<a href="http://www.eclipse.org/legal/epl/notice.html" class="external text" title="http://www.eclipse.org/legal/epl/notice.html" rel="nofollow">SUA</a>) in the root directory of the distribution in HTML format in a file named <b>"notice.html"</b>.
</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="http://www.eclipse.org/legal/epl-v10.html" class="external text" title="http://www.eclipse.org/legal/epl-v10.html" rel="nofollow">Eclipse Public License </a> alone in a file named <b>"epl-v10.html"</b> In exceptional circumstances, the Board may approve the licensing of a project under license terms other than the EPL alone.
</p>
<a name="Features"></a><h3> <span class="mw-headline">Features</span></h3>
<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><p>For example:
</p><p><a href="http://wiki.eclipse.org/Image:Feature_Folder.jpg" class="image" title="Image:Feature Folder.jpg"><img alt="Image:Feature Folder.jpg" src="http://wiki.eclipse.org/images/b/bc/Feature_Folder.jpg" width="780" height="240" border="0" /></a>
</p><p>The first required file is <b>"license.html"</b>. This file is required to be the <a href="http://www.eclipse.org/legal/epl/notice.html" class="external text" title="http://www.eclipse.org/legal/epl/notice.html" rel="nofollow">SUA</a> in HTML format (and thus an exact duplicate of the "notice.html" in the root of the distribution). This file is referred to as The Feature License. 
</p><p>The second required file is the <a href="http://www.eclipse.org/legal/epl-v10.html" class="external text" title="http://www.eclipse.org/legal/epl-v10.html" rel="nofollow">Eclipse Public License</a>in HTML format in a file named <b>"epl-v10.html"</b> (and thus also an exact duplicate of the "epl-v10.html" in the root of the distribution). 
</p><p>Each feature has a file named <b>"feature.xml"</b> with a license node. Often the strings in the "feature.xml" file are externalized in a <b>"feature.properties"</b> file. Either way, the license node or property must contain the <a href="http://www.eclipse.org/legal/epl/notice.html" class="external text" title="http://www.eclipse.org/legal/epl/notice.html" rel="nofollow">SUA</a> in PLAIN TEXT format. This text (node or property) is referred to as The Feature Update License. 
</p><p>Each feature has at least one plug-in associated with it which is the "feature plug-in" for that feature. Not surprisingly, this plug-in usually has the same name as the feature. The "about.properties" property named "blurb" contains text that appears in the "About features" dialog in the Eclipse workbench. This is known as a "Feature Blurb." Blurbs often contain copyright notices and any other statements of attribution that may be required by licenses.
</p><p><br />
</p>
<a name="Good_examples_from_SMILA_2"></a><h4> <span class="mw-headline">Good examples from SMILA</span></h4>
<ul><li>feature <i>com.sleepycat.dbxml.feature</i>
</li></ul>
<p><br />
<a href="http://wiki.eclipse.org/Image:FeatureExampe1.jpg" class="image" title="Image:featureExampe1.jpg"><img alt="Image:featureExampe1.jpg" src="http://wiki.eclipse.org/images/b/bc/FeatureExampe1.jpg" width="600" height="200" border="0" /></a>
</p><p>The file beginning <i>feature.properties</i> look <a href="http://wiki.eclipse.org/Here" title="Here">here</a>.
</p><p>The "feature plug-in" for that feature bundle <i>com.sleepycat.dbxml</i> has a file <a href="http://wiki.eclipse.org/About.properties" title="About.properties">about.properties</a>.
</p>
<a name="Plug-ins"></a><h3> <span class="mw-headline">Plug-ins</span></h3>
<p>All plug-in directories must have an <b>"about.html"</b> file describing the license terms of the code and content of the plug-in. The "about.html" file may also contain other information such as whether the content contains cryptographic functionality that may be subject to export controls. These "about.html" are collective known as "Abouts." 
</p><p>Most plug-ins of Eclipse Projects are pure <a href="http://www.eclipse.org/org/documents/epl-v10.php" class="external text" title="http://www.eclipse.org/org/documents/epl-v10.php" rel="nofollow">EPL</a> and thus the about.html file will be <a href="http://www.eclipse.org/legal/epl/about.html" class="external text" title="http://www.eclipse.org/legal/epl/about.html" rel="nofollow">default About</a> for EPL plug-ins. If a plug-in contains non-EPL content About files must be <a href="http://www.eclipse.org/legal/epl/about.php" class="external text" title="http://www.eclipse.org/legal/epl/about.php" rel="nofollow">About files for third-party content</a>. 
</p><p>In JAR’ed plug-ins, any local files linked from an About such as copies of licenses, must be located in a directory called <b>"about_files"</b>. The contents of the "about_files" directory are handled specially so that links resolve correctly when the About in a JAR’ed plug-in is viewed in an external browser spawned from the About dialog.
</p><p>For example:
</p><p><a href="http://wiki.eclipse.org/Image:Plug-in.jpg" class="image" title="Image:plug-in.jpg"><img alt="Image:plug-in.jpg" src="http://wiki.eclipse.org/images/d/d2/Plug-in.jpg" width="600" height="240" border="0" /></a>
</p><p><br />
</p>
<a name="Good_examples_from_SMILA_3"></a><h4> <span class="mw-headline">Good examples from SMILA</span></h4>
<ul><li> Plug-in (pure EPL) <i><b>org.eclipse.eilf.binstorage</b></i> has the default about.html:
</li></ul>
<p><br />
<a href="http://wiki.eclipse.org/Image:Plug-in_pure.jpg" class="image" title="Image:Plug-in_pure.jpg"><img alt="Image:Plug-in_pure.jpg" src="http://wiki.eclipse.org/images/a/ad/Plug-in_pure.jpg" width="540" height="240" border="0" /></a>
</p>
<ul><li> Plug-in with non-EPL content (3rd Party)  <i><b>org.apache.tomcat</b></i> has <a href="http://wiki.eclipse.org/The_about.html" title="The about.html">the about.html</a> in form <i>About files for third-party content</i> and about_files:
</li></ul>
<p><br />
<a href="http://wiki.eclipse.org/Image:Plug-in3Party.jpg" class="image" title="Image:Plug-in3Party.jpg"><img alt="Image:Plug-in3Party.jpg" src="http://wiki.eclipse.org/images/4/44/Plug-in3Party.jpg" width="720" height="300" border="0" /></a>
</p>
<a name="Summary"></a><h2> <span class="mw-headline">Summary</span></h2>
<ul><li>Every source file has a Copyright and License Notice
</li></ul>
<p><br />
</p>
<ul><li>Every feature has the standard SUA in HTML in "license.html"
</li><li>Every feature has the Project's primary license(s) (e.g., the EPL in "epl-v10.html")
</li><li>Every feature has the standard SUA in plain text in "feature.xml &lt;license&gt;" or "feature.properties / license"
</li><li>Every feature plug-in has copyright notices, etc. in the "blurb" property of "about.properties"
</li></ul>
<p><br />
</p>
<ul><li>Every plug-in has an "about.html", usually the standard one.
</li><li>Every plug-in with a non-standard "about.html" contains the additional referenced license files.
</li><li>Every JAR’ed plug-in stores linked files in "about_files"
</li></ul>
<p><br />
</p>
<ul><li>Every help documentation set contains a Legal page
</li></ul>
<p><br />
</p>
<ul><li>Every build distribution has the standard SUA in the root as "notice.html"
</li><li>Every build distribution has a copy of the primary license(s) in the root, e.g., "epl-v10.html"
</li></ul>
<a name="About_File_Templates"></a><h2> <span class="mw-headline">About File Templates</span></h2>
<a name="Simple_About_File_Template"></a><h3> <span class="mw-headline">Simple About File Template</span></h3>
<p><b>About This Content</b>
</p><p><i>enter current date here</i>
</p><p><b>License</b>
</p><p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html" class="external free" title="http://www.eclipse.org/legal/epl-v10.html" rel="nofollow">http://www.eclipse.org/legal/epl-v10.html</a>. For purposes of the EPL, "Program" will mean the Content.
</p><p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor’s license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at <a href="http://www.eclipse.org" class="external free" title="http://www.eclipse.org" rel="nofollow">http://www.eclipse.org</a>.
</p>
<a name="Third-Party_Content_About_File_Template"></a><h3> <span class="mw-headline">Third-Party Content About File Template</span></h3>
<p><b>About This Content</b>
</p><p><i>enter current date here</i>
</p><p><b>License</b>
</p><p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html" class="external free" title="http://www.eclipse.org/legal/epl-v10.html" rel="nofollow">http://www.eclipse.org/legal/epl-v10.html</a>. For purposes of the EPL, "Program" will mean the Content.
</p><p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor’s license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at <a href="http://www.eclipse.org" class="external free" title="http://www.eclipse.org" rel="nofollow">http://www.eclipse.org</a>.
</p><p><b>Third Party Content</b>
</p><p>The Content includes items that have been sourced from third parties as set out below. If you did not receive this Content directly from the Eclipse Foundation, the following is provided for informational purposes only, and you should look to the Redistributor’s license for terms and conditions of use.
</p><p><i>Replace these sections with the relevant content, as described below. One section will be required for each third-party component contained within the plug-in</i>
</p><p><br />
<i>Name of first package including version number</i>
</p><p><br />
Please include in this section information about the package including where it was obtained from, outbound licensing terms and notices that may apply, and anything else necessary to meet the obligations of redistribution (and possibly modification, etc.) under the inbound license. If the source code for the package is not available at eclipse.org, please include instructions on how to get it regardless of whether you are obligated to do so by the license.
</p><p><i>Name of second package including version number</i>
</p><p>Please include in this section information about the package including where it was obtained from, outbound licensing terms and notices that may apply, and anything else necessary to meet the obligations of redistribution (and possibly modification, etc.) under the inbound license. If the source code for the package is not available at eclipse.org, please include instructions on how to get it regardless of whether you are obligated to do so by the license.
</p>
<a name="Features_Licenses_and_Feature_Update_Licenses"></a><h2> <span class="mw-headline">Features Licenses and Feature Update Licenses</span></h2>
<ul><li>The Basics: 
</li></ul>
<p>A feature is a set of one or more related plug-ins and/or fragments that can be installed and upgraded together. There are three important legal documentation files for features, the Feature License (license.html), the Feature Update License (feature.properties &gt; license) and the Feature Blurb (about.properties &gt; blurb). 
</p>
<ul><li>The Details: 
</li></ul>
<p><i>The Feature License</i>
</p><p>Each feature has a file named "license.html." We call this a "Feature License." In Eclipse.org builds, this file is an exact copy of the file "notice.html" that is found in the root directory of the distribution. In other words, it is the SUA.
</p><p><i>The Feature Update License</i>
</p><p>Each feature has a file named "feature.properties." In that file is a property named "license". This is known as the "Feature Update License." For Eclipse.org builds, the Feature Update License is an exact copy of the SUA in PLAIN TEXT format. Feature Update Licenses must be delivered in that format whereas all the other files we’ve covered so far have been HTML files.
</p><p><i>The Feature Blurb</i>
</p><p>Each feature has at least one plug-in associated with it which is the "feature plug-in" for that feature. Not surprisingly, this plug-in usually has the same name as the feature. The property named "blurb" contains text that appears in the "About features" dialog in the Eclipse workbench. This is known as a "Feature Blurb." Blurbs often contain copyright notices and any other statements of attribution that may be required by licenses.
</p><p><i>What’s the difference?</i>
</p><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. It is for this reason that the maintainer of a feature may choose to have different text for the Feature License and Feature Update License.
</p><p>Note: All features must contain a Feature License and a Feature Update License in the directory for that feature. The feature’s plug-in must contain a Feature Blurb.
</p>
<ul><li>The Location:
</li></ul>
<p><i>The Feature License</i>
</p><p>The Feature License is found in the feature directory which is usually a sub-directory of the directory named "features." Any referenced files (for example, the EPL or the SUA) are located in the same location.
</p><p><i>The Feature Update License</i>
</p><p>The Feature Update License is found in the feature directory which is usually a sub-directory of the directory named "features." Any referenced files (for example, the EPL or the SUA) are located in the same location. 
</p><p><i>The Feature Blurb</i>
</p><p>The Feature Blurb resides in the "plugins" directory as either a sub-directory or a JAR. In the feature plug-in there is a file named "about.properties.", the Feature Blurb is the property named "blurb". To view the blurb for each installed feature, go to the menu item <b>Help &gt; About Eclipse Platform</b> and then click <b>"Feature Details"</b> and then select a feature. The blurb will appear in the bottom half of the dialog.
</p>
<a name="Glossary"></a><h2> <span class="mw-headline">Glossary</span></h2>
<p>SUA – <a href="http://www.eclipse.org/legal/epl/notice.php" class="external text" title="http://www.eclipse.org/legal/epl/notice.php" rel="nofollow">Eclipse Foundation Software User Agreement</a>
</p><p>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. 
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><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. 
</p><p><br /> 
EPL – <a href="http://www.eclipse.org/org/documents/epl-v10.php" class="external text" title="http://www.eclipse.org/org/documents/epl-v10.php" rel="nofollow">Eclipse Public License Version 1.0</a>
</p><p>The EPL was written specifically for the Eclipse Foundation.  First, it changes the Agreement Steward, formerly IBM for the CPL, to now be the Eclipse Foundation for the EPL.  Second, it addresses concerns some Eclipse Foundation members had with how the CPL deals with possible patent litigation.
<a href="http://www.eclipse.org/legal/eplfaq.php" class="external text" title="http://www.eclipse.org/legal/eplfaq.php" rel="nofollow">FAQ</a>
</p><p>CPL – <a href="http://www.eclipse.org/legal/cpl-v10.html" class="external text" title="http://www.eclipse.org/legal/cpl-v10.html" rel="nofollow">Common Public License Version</a>
</p><p>Eclipse IP Policy – <a href="http://www.eclipse.org/org/documents/Eclipse_IP_Policy.pdf" class="external text" title="http://www.eclipse.org/org/documents/Eclipse_IP_Policy.pdf" rel="nofollow">ECLIPSE FOUNDATION, Inc. INTELLECTUAL PROPERTY POLICY</a>
</p><p>EMO – Eclipse Management Organization (legal@eclipse.org)
</p><p>PMC – Project Management Committee
</p>
<a name="Links"></a><h2> <span class="mw-headline"> Links</span></h2>
<p><a href="http://www.eclipse.org/legal/guidetolegaldoc2.php#3_Builds" class="external text" title="http://www.eclipse.org/legal/guidetolegaldoc2.php#3_Builds" rel="nofollow">A Guide to the Legal Documentation for Eclipse-Based Content</a>
</p><p><a href="http://www.eclipse.org/legal/guidetolegaldoc.php#3_Builds" class="external text" title="http://www.eclipse.org/legal/guidetolegaldoc.php#3_Builds" rel="nofollow">A Guide to the Legal Documentation for Eclipse-Based Content 2</a>
</p><p><a href="http://www.eclipse.org/legal/EclipseLegalProcessPoster.pdf" class="external text" title="http://www.eclipse.org/legal/EclipseLegalProcessPoster.pdf" rel="nofollow">Eclipse Legal Process</a>
</p><p><a href="http://www.opensource.org/licenses/category" class="external text" title="http://www.opensource.org/licenses/category" rel="nofollow">All Open Source License</a>
</p>
<!-- 
NewPP limit report
Preprocessor node count: 18/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->

<!-- Saved in parser cache with key wikidb:pcache:idhash:15936-0!1!0!!en!2!edit=0 and timestamp 20120203101341 -->
<div class="printfooter">
Retrieved from "<a href="Legal_Documentation.html">http://wiki.eclipse.org/SMILA/Legal_Documentation</a>"</div>
          <div id="catlinks"><p class='catlinks'><a href="http://wiki.eclipse.org/Special:Categories" title="Special:Categories">Category</a>: <span dir='ltr'><a href="http://wiki.eclipse.org/Category:SMILA" title="Category:SMILA">SMILA</a></span></p></div>          <!-- end content -->
          <div class="visualClear"></div>
        </div>
      </div>


    </div>


	<!-- Yoink of toolbox for phoenix moved up -->


  </div>
  </div>
              <div id="clearFooter"/>
            <div id="footer" >  
	      <ul id="footernav">
                <li class="first"><a href="http://www.eclipse.org/">Home</a></li>
               	<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
	        <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
		<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
                <li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
               	<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
	      </ul>
              <span id="copyright">Copyright &copy; 2012 The Eclipse Foundation. All Rights Reserved</span>
	      <p id="footercredit">This page was last modified 15:32, 15 October 2008 by <a href="http://wiki.eclipse.org/index.php?title=User:Szhbankova.brox.de&amp;action=edit" class="new" title="User:Szhbankova.brox.de">Sofya Zhbankova</a>. Based on work by <a href="http://wiki.eclipse.org/index.php?title=User:Akaufmann.brox.de&amp;action=edit" class="new" title="User:Akaufmann.brox.de">Allan Kaufmann</a>, <a href="http://wiki.eclipse.org/User:Daniel.stucky.empolis.com" title="User:Daniel.stucky.empolis.com">Daniel Stucky</a> and <a href="http://wiki.eclipse.org/index.php?title=User:Rrausch.brox.de&amp;action=edit" class="new" title="User:Rrausch.brox.de">Ralf Rausch</a>.</p>
	      <p id="footerviews">This page has been accessed 5,180 times.</p>
	    </div>

            <script type="text/javascript">
              var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
              document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
            </script>
            <script type="text/javascript">
              var pageTracker = _gat._getTracker("UA-910670-4");
              pageTracker._trackPageview();
            </script>
 
 	



		

<!-- 			<div class="visualClear"></div> -->
	
		<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>

<!-- Served in 0.211 secs. --></body></html>
