<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# sample_3col.php
	#
	# Author: 		Denis Roy
	# Date:			2005-11-07
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Guidelines for Eclipse Logos &amp; Trademarks";
	$pageKeywords	= "legal, foundation, guidelines, trademarks";
	$pageAuthor		= "Mike Milinkovich, Nov. 26, 2005";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 1);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>$pageTitle<br/></h1>
		<p>March 7, 2016</p>
	<h3><a name="h.ggtn2qdts1nf"></a>Table of Contents</h3>
      <blockquote>
      <ul>
        <li><a href="#Purpose" class=jump>Purpose</a></li>
        <li><a href="#GeneralLogo" class=jump>General Usage of Logos</a></li>
        <li><a href="#ProperEclipse" class=jump>Proper Usage of	&quot;Eclipse&quot; Trademark and Logo</a></li>
        <li><a href="#ProperProjects" class=jump>Proper Usage of Eclipse Project Names and Logos</a></li>
        <li><a href="#ProperWG" class=jump>Proper Usage of Eclipse Working Group Names and Logos</a></li>
        <li><a href="#ProperMember" class=jump>Proper Usage of &quot;Eclipse Foundation Member&quot; Logo</a></li>
        <li><a href="#ProperBuilt" class=jump>Proper Usage of &lsquo;Built on Eclipse&lsquo; Trademark and Logo</a></li>
        <li><a href="#ProperReady" class=jump>Proper Usage of &quot;Eclipse Ready&quot; Trademark and Logo</a></li>
        <li><a href="#ProperIncubation" class=jump>Proper Usage of &quot;Eclipse Incubation&quot; Trademark and Logo</a></li>
        <li><a href="#ProperNotice" class=jump>Proper Notice and Attribution</a></li>        
      </ul>
      </blockquote>

	<h3><a name="Purpose"></a>Purpose:</h3>
	<p>These requirements are meant to promote and improve the image of
	all elements of the Eclipse community, as well as to show that all
	Eclipse Foundation projects are part of a community of developers,
	adopters and users. While every project manages their own development
	within the broader <a href="https://eclipse.org/projects/dev_process/development_process.php">Eclipse
	Development Process</a>, a consistent set of trademark and branding
	requirements benefits the entire Eclipse community.</p>
	
	<p>The Eclipse Foundation holds the trademarks for the project names
	and logos on behalf of, and for the benefit of, the Eclipse community
	as a whole. The individual projects are not separate legal entities,
	and thus not able to hold trademarks individually. The Eclipse
	Foundation is a legal entity and owns the trademarks on behalf of the
	entire community.</p>
	
	<p>If you have any questions regarding this policy, or wish to use an
	Eclipse Foundation trademark in a way not explicitly explained in
	these Guidelines, then ask us by sending an email to
	<a href="mailto:license@eclipse.org" target="_top">license@eclipse.org</a>.</p>
	
	<p>The Eclipse Foundation and Eclipse projects have created a number
	of trademarks and logos to identify the Eclipse community and
	individual Eclipse projects. In addition to the &lsquo;Eclipse&rsquo;
	trademark, the Eclipse Foundation has introduced seven trademarks and
	logos: </p>
		<ul>
			<li/>
		<p>Eclipse Foundation Member,</p>
			<li/>
		<p>EclipseCon,</p>
			<li/>
		<p>Eclipse Summit,</p>
			<li/>
		<p>Built on Eclipse,</p>
			<li/>
		<p>Eclipse Ready, and</p>
			<li/>
		<p>Eclipse Incubation.</p>
		</ul>
	<p>Individual Eclipse projects and Eclipse Working Groups have also
	introduced unique names and logos&nbsp;that are trademarks of the
	Eclipse Foundation. This document outlines the policy and guidelines
	of the Eclipse Foundation in regards to any use of these trademarks.</p>
	<p>Our goals in establishing these guidelines are pretty simple:</p>
	<ul>
	<li>The Eclipse trademarks are a
		symbol of the quality and community support that people have come to
		associate with Eclipse. To ensure that the Eclipse trademarks
		continue to serve these functions, we need to keep control over
		their use. Along these lines, we want to ensure that the use of our
		marks is not likely to lead to confusion with other marks. By this
		we mean that people should be able to tell when something is from
		the Eclipse Foundation or one of the Eclipse projects. Also, use of
		our marks must not be in a disparaging manner because we prefer that
		our marks not be used to be rude about the Eclipse technology, the
		Eclipse Foundation, its projects, or its Members.</li>
	<li>We want to encourage our logos to be used in approved ways.
		For example, we want to make it as simple as legally possible for
		our Members to use the &lsquo;Eclipse Foundation Member&rsquo; mark.</li>
	</ul>
	<h3><a name="GeneralLogo"></a>General Usage of Logos</h3>
	<ol>
		<li/>
	<p>Derivative works of the
		&lsquo;EclipseCon&rsquo;, &lsquo;Eclipse Summit&rsquo;, &lsquo;Eclipse
		Foundation Member&rsquo;, &lsquo;Built on Eclipse&rsquo;, &lsquo;Eclipse
		Ready&rsquo; and projects logos are not allowed.</p>
		<li/>
	<p>The &lsquo;Eclipse&rsquo; logos
		and production specification are available from www.eclipse.org.
		Replication of these logos must follow these specifications.</p>
		<li/>
	<p>Except for use by Eclipse
		projects on the eclipse.org website, use of the &lsquo;Eclipse
		Incubation&rsquo; Trademark and Logo is not permitted unless
		authorized in writing by the Eclipse Foundation.</p>
	</ol>	
	
	<h3><a name="ProperEclipse"></a>Proper Usage of	&quot;Eclipse&quot; Trademark and Logo</h3>
	<p>The &ldquo;Eclipse&rdquo; name and logo are the intellectual
	property of the Eclipse Foundation and must be identified as such.
	Eclipse logos are provided for use under the terms of these
	Guidelines. Use of the &ldquo;Eclipse&rdquo; name or Eclipse logos
	are restricted to identifying the Eclipse Foundation, the Eclipse
	projects, the Eclipse working groups, and their deliverables, as
	applicable.</p>
	<p>Eclipse logos (including the Eclipse logo, and the logos of
	Eclipse projects and working groups) cannot be altered without the
	written permission of the Eclipse Foundation. Eclipse Foundation
	projects or working groups are permitted to create derivative works
	of Eclipse logos with the permission of the <a href="http://www.eclipse.org/org/foundation/directors.php">Eclipse
	Foundation Board of Directors</a>. Any project that wishes to seek
	such permission may do so by sending an email to license@eclipse.org.</p>
	<ol>
		<li/>
	<p>You must not incorporate the
		&lsquo;Eclipse&rsquo; trademark into the name of your company or
		software product name. If you have a software product that works
		with an Eclipse technology, you must use phrases such as &lsquo;&lt;product
		name&gt; for Eclipse&rsquo; or &lsquo;&lt;product name&gt;, Eclipse
		Edition&rsquo;.</p>
		<li/>
	<p>You may request permission to
		include the &lsquo;Eclipse&rsquo; trademark in the name of a
		publication, certification program, domain name or book. At a
		minimum you must ensure that a) the appropriate TM or (R) symbol is
		associated with the &lsquo;Eclipse&rsquo; reference and appropriate
		attribution as discussed below, b) &lsquo;Eclipse&rsquo; is not
		concatenated with another word, e.g. EclipseBoard, and c) the usage
		does not imply or make the user believe that the publication, domain
		name or book is supported or authorized by the Eclipse Foundation.
		Any organization wishing to seek such permission may do so by
		sending an email to license@eclipse.org.</p>
		<li/>
	<p>An important use of the
		&lsquo;Eclipse&rsquo; trademark is the &lsquo;org.eclipse&rsquo;
		string used on all namespaces for Eclipse open source projects. This
		naming convention is used to identify code that has been developed
		as an Eclipse open source project. Therefore, no one, except Eclipse
		open source projects may develop or maintain software packages that
		use &lsquo;org.eclipse&rsquo; in their namespace.</p>
		<li/>
	<p>&lsquo;Eclipse&rsquo; must always be capitalized, except
		when used as part of the Eclipse logos.</p>
	</ol>
	<h3><a name="ProperProjects"></a>Proper Usage of Eclipse Project Names and Logos</h3>
	<p>The <a href="https://wiki.eclipse.org/Development_Resources/HOWTO/Project_Naming_Policy">Eclipse
	Project Naming Policy</a>&nbsp;allows for Eclipse projects to have a
	descriptive name, optional nickname and acronym. These names, e.g.
	Orion, and acronyms, e.g. BIRT, can be become effective identifiers
	of certain technologies, therefore it is important to establish
	proper usage guidelines. All project names, nicknames, logos, and
	acronyms are the intellectual property of the Eclipse Foundation and
	must be identified as such. For clarity, projects are not required to
	include &ldquo;Eclipse&rdquo; in their project logos. (Please see
	proper notice and attribution below.)</p>
	<ol>
		<li/>
	<p>All Eclipse projects must be
		identified as being Eclipse projects. Therefore, when referencing an
		Eclipse project, we ask that both the first and the most prominent
		reference to the project on each page is identified as Eclipse
		[project name], ex Eclipse Graphical Modeling Framework (GMF) or in
		the case of a project name that already includes Eclipse, Eclipse
		Communication Framework (ECF). Subsequent references may drop the
		Eclipse identifier.</p>
		<li/>
	<p>You must not incorporate the
		name of an Eclipse project, nickname or acronym into the name of
		your company or software product name. If you have a software
		product that works with an Eclipse project, it is suggested you use
		terms such as '&lt;product name&gt; for &lt;Eclipse project name&gt;'
		or '&lt;product name&gt;, &lt;Eclipse project name&gt; Edition'</p>
		<li/>
	<p>You may request permission to &nbsp;include an Eclipse
		project trademark in the name of a publication, certification
		program, domain name or book. At a minimum you must ensure that a)
		the appropriate &trade; or &reg; symbol is associated with the
		Eclipse project name reference and appropriate attribution as
		discussed below, b) Eclipse project name is not concatenated with
		another word, e.g. OrionPortal, and c) the usage does not imply or
		make the user believe that the publication, domain name or book is
		supported or authorized by the Eclipse Foundation or any Eclipse
		project. &nbsp;Any organization wishing to seek such permission may
		do so by sending an email to license@eclipse.org.</p>
	</ol>
	
	<h3><a name="ProperWG"></a>Proper Usage of Eclipse Working Group Names and Logos</h3>
	<p>The names and logos of the Eclipse Foundation Working Groups (WG)
	are the intellectual property of the Eclipse Foundation and must be
	identified as such. (Please see proper notice and attribution below).
	Use of WG trademarks are restricted to identifying the WGs and their
	deliverables, as applicable. No other uses of WG names and logos are
	permitted unless authorized in writing by the Eclipse Foundation.</p>
	<p>Each WG may, at its discretion, develop guidelines for use of the
	WG trademarks or their derivatives, as applicable, by third parties.
	These guidelines will be referenced in Appendix A of this document
	and shall be consistent with these Guidelines for Eclipse Logos and
	Trademarks. It is not permitted to create any derivative work of a WG
	trademark with written approval of the Eclipse Foundation, which will
	consult with the Steering Committee of the relevant Working Group.
	Any organization wishing to seek permission to create a derivative
	work of any WG trademark may do so by sending an email to
	license@eclipse.org.</p>

	<h3><a name="ProperMember"></a>Proper Usage of &quot;Eclipse Foundation Member&quot; Logo</h3>
	<p>The &lsquo;Eclipse Foundation Member&rsquo; logo is to identify
	those organizations and individuals that are official members of the
	Eclipse Foundation, including 1) Strategic Members, 2) Enterprise
	Members, 3) Solutions (formerly Add-in Provider) Members, 4)
	Associate Members, and 5) Committer Members. Only official Members of
	the Eclipse Foundation are authorized to use this logo.</p>
	<h3><a name="ProperBuilt"></a>Proper Usage of &lsquo;Built on Eclipse&lsquo; Trademark and Logo</h3>
	<p>The &lsquo;Built on Eclipse&rsquo; trademark is used to identify a
	product that includes the core Eclipse IDE Platform, specifically the
	runtime, SWT, JFace, and Generic Workbench components. This type of
	product is able to run standalone with no prerequisites of other
	Eclipse components.</p>
	<h3><a name="ProperReady"></a>Proper Usage of &quot;Eclipse Ready&quot; Trademark and Logo</h3>
	<p>The &lsquo;Eclipse Ready&lsquo; trademark and logo is used to
	identify a product that is packaged as an Eclipse IDE feature or
	plug-in and must be added to an Eclipse platform product. This type
	of product does not run standalone.</p>
	<h3><a name="ProperIncubation"></a>Proper Usage of &quot;Eclipse Incubation&quot; Trademark and Logo</h3>
	<p>The &lsquo;Eclipse Incubation&rsquo; Trademark and Logo are for use exclusively&nbsp;by
	the Eclipse Foundation and the Eclipse projects. Only the Eclipse
	Foundation and its projects are authorized to use this trademark and
	logo. All other use -- even by Eclipse Foundation Members -- is
	prohibited.</p>
	<h3><a name="ProperNotice"></a>Proper Notice and Attribution</h3>
	<p>The appropriate trademark symbol (i.e. TM or (R)) must appear at
	both the first and most prominent use of the Eclipse Foundation
	trademarks, and with all occurrence of the Eclipse logo.</p>
	<p>When you use an Eclipse Foundation trademark or logo you must
	include a statement attributing the trademark to the Eclipse
	Foundation, Inc. For example, &quot;&lsquo;Eclipse&rsquo;, &lsquo;Built
	on Eclipse&rsquo; and &lsquo;Eclipse Ready&rsquo;, &lsquo;BIRT&rsquo;,
	&lsquo;Orion&rsquo; are trademarks of Eclipse Foundation, Inc.&quot;</p>
	<h3></a>Footnotes</h3>
	<p>These guidelines were first introduced at a point in time when
	some companies and individuals already had product names that include
	the &lsquo;Eclipse&rsquo; trademark. Companies and individuals using
	the &lsquo;Eclipse&rsquo; trademark as of February 1, 2005 will not
	be required to change their already existing product names to comply
	with these guidelines now or in the future. However, all companies
	and individuals are required to give proper notice and attribution of
	the &lsquo;Eclipse&rsquo; trademark. All usage subsequent to February
	1, 2005 are required to follow these guidelines.</p>
	<p>Similarly, further revisions to these guidelines were first
	introduced at a point in time when some companies and individuals
	already had product names that include Eclipse project trademarks.
	Companies and individuals using an Eclipse project trademarks as of
	June 20, 2007 will not be required to change their already existing
	product names to comply with these guidelines now or in the future.
	However, all companies and individuals are required to give proper
	notice and attribution of the Eclipse project trademark. All usage
	subsequent to June 20, 2007 are required to follow these guidelines.</p>
</div>
EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
