<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<title>Default Eclipse Foundation Copyright and License Notice</title>
</head>

<body lang="EN-US" link=blue vlink=purple>

<p>Last updated September 8th, 2004</p>

<p>With the Eclipse Foundation transitioning from the CPL to the EPL (for further information
see the <a href="CPL2EPLTransitionPlan.pdf">CPL to EPL Transition Plan</a> (.pdf) and matching <a href="cpl2eplfaq.html">FAQ</a>),
the default license for a project will either be the CPL or the EPL.  For CPL projects, the notice template is:
</p>

<p>
/*******************************************************************************<br>
&nbsp;* Copyright (c) {DATE} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.<br>
&nbsp;* All rights reserved. This program and the accompanying materials<br>
&nbsp;* are made available under the terms of the Common Public License v1.0<br>
&nbsp;* which accompanies this distribution, and is available at<br>
&nbsp;* http://www.eclipse.org/legal/cpl-v10.html<br>
&nbsp;*<br>
&nbsp;* Contributors:<br>
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;{INITIAL AUTHOR} - initial API and implementation<br>
&nbsp;*******************************************************************************/
</p>

<p>For EPL projects, the notice template is:</p>

<p>
/*******************************************************************************<br>
&nbsp;* Copyright (c) {DATE} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.<br>
&nbsp;* All rights reserved. This program and the accompanying materials<br>
&nbsp;* are made available under the terms of the Eclipse Public License v1.0<br>
&nbsp;* which accompanies this distribution, and is available at<br>
&nbsp;* http://www.eclipse.org/legal/epl-v10.html<br>
&nbsp;*<br>
&nbsp;* Contributors:<br>
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;{INITIAL AUTHOR} - initial API and implementation<br>
&nbsp;*******************************************************************************/
</p>

<p>NOTE:  While the CPL to EPL Transition Plan is in effect, do NOT use the EPL notice unless you know for certain that your project
has transitioned fully to the EPL.</p>

<p>If the contents of the file are to be governed by another license, different text will be required.
Contact the relevant PMC for assistance with this.</p>

<p><strong>{DATE}</strong> is either a year or a range of years with the first and last years
of the range separated by a comma.  So for example: &quot;2004&quot; or &quot;2000, 2004&quot;.
The first year is when the contents of the file were first created and the last year is the last
year is when the contents were last modified.</p>
	
<p><strong>{INITIAL COPYRIGHT OWNER}</strong> is the copyright owner that created the initial content.
If the content is subsequently modified and appended to by other copyright owners, the words
&quot;and others&quot; are typically appended.  So for example: &quot;XYZ Corp.&quot; or &quot;XYZ Corp. and others&quot;.
The words &quot;and others&quot; are used to avoid having to list every copyright owner and because often,
most of the content in the file was contributed the by initial copyright owner with subsequent modifications by others
being smaller.  However especially if the number of copyright owners is small (e.g. two), there is nothing wrong with
listing all of them especially if their contributions are more proportionately equal.  For example:
&quot;XYZ Corp., John Smith, and ABC Enterprises.&quot;</p>

<p>NOTE:  Do not confuse copyright owners with authors (which is explained below).  A copyright owner may be either
an individual or an entity.  If a person is making their contributions on behalf of their employer, then the copyright
owner is usually the employer (i.e. &quot;XYZ Corp.&quot; and not &quot;John Smith&quot;).</p>

<p><strong>{INITIAL AUTHOR}</strong> is the name of the person that wrote the initial content.  Subsequent authors
are listed on proceding lines with a short description of the contribution.  If there is an associated Bugzilla report
number, then it is good practice to include it here.  Over time, this section actually
becomes a log of the contributions.  Although it could become quite lengthy in some cases, it should be maintained for
two important reasons - to acknowledge the contributions of individuals (especially when their contribution is 
owned by their employer), and to assist with tracking the pedigree of the code (who wrote what).  It is good practice to
list the name of the author with their employer if the latter owns the copyright.  For example: &quot;John Smith (XYZ Corp.)&quot;.</p>
</body>
</html>
