<?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="#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="#GeneralLogo" class=jump>General Usage of 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
	license@eclipse.org.</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="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 anEclipse
		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="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="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);
?>
