<?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'

$pageTitle 		= "Eclipse Monkey Proposal";
$pageKeywords	= "Eclipse Monkey Scripting";
$pageAuthor		= "James E. Ervin";

ob_start();
?>
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php");
generate_header("Eclipse Monkey");
?>
<div id="maincontent">
<div id="midcolumn">
<b id="u6-.0">Eclipse Monkey Proposal</b>
<br id="g.lu0">
<h2 id="u6-.9">Introduction</h2>
<p id="u6-.12">The Eclipse Monkey is a proposed open source
project under the <a id="u6-.11" href="http://www.eclipse.org/technology/">Eclipse
Technology Project</a> to be split from the&nbsp;<a title="Eclipse Dash Project" href="http://www.eclipse.org/dash/" id="crhh">Eclipse Dash Project</a> and to be based on the existing <a title="Groovy Monkey Project" href="http://groovy.codehaus.org/Groovy+Monkey" id="dgm5">Groovy Monkey Project</a>.&nbsp; This proposal is in the Project Proposal Phase (as defined in the
<a id="u6-.13" href="http://www.eclipse.org/projects/dev_process/">
Eclipse Development Process document</a>) and is written to declare its intent
and scope. This proposal is written to solicit additional participation and
input from the Eclipse community. You are invited to comment on and/or join the
project. Please send all feedback to the <a id="u6-.14" href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.eclipse-monkey">http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.eclipse-monkey</a> newsgroup.&nbsp;
</p><h2 id="u6-.15">Background</h2>
Eclipse provides a flexible and extensible framework for third party tool integration, but the only way currently to extend its functionality is through the context of a bundle/plugin component.&nbsp; The primary issue is that creation of a fragment or bundle can be heavyweight and forces the user to utilize Eclipse's self-hosting feature.&nbsp; There must be a simpler, lighter and easier way for a power user/developer to extend/modify the current Eclipse workbench.&nbsp; In particular, there is no defined way to script from within Eclipse.&nbsp; This is what the new Eclipse Monkey seeks to address.&nbsp; A simpler and catchier synopsis would be to say that the new Eclipse Monkey is aiming to give the Eclipse power user the power of&nbsp;<a title="Emacs" href="http://www.gnu.org/software/emacs/" id="s_-c">Emacs</a> without the LISP.<br id="ttdr0">
<h2 id="u6-.16">Description</h2>
<p id="u6-.17" align="left">The new Eclipse Monkey seeks to address the following three scenarios:</p><ol id="hota0"><li id="hota1">Eclipse Task Automation and Scripting<br id="cwmc0"></li><li id="hota2">Eclipse API Exploration<br id="zen30"></li><li id="hota2">Rapid Prototyping and Quick Development of new Eclipse Plugins.<br id="zen31"></li></ol><br id="blwt0">Eclipse Monkey Lifecycle View: From script to full blown plugin<br id="blwt1">A user starts with a script that does something useful.&nbsp; Eclipse Monkey provides easy ways to access it, modify it, to run it and to share it with others.&nbsp; After some time, multiple scripts are written with functions that can be reused.&nbsp; Library scripts are then written, simplifying the other scripts and providing for reuse.&nbsp; After some more time, it is noticed that some of these library scripts are very useful and to take advantage of static typing/Java tooling those library scripts become DOM (Domain Object Model) objects deployed in a plugin.&nbsp; Eventually the DOM plugin could become the basis of a fully functional Eclipse plugin, with UI elements, extension points, etc...<br id="blwt2"><br id="zxrk0">Eclipse Monkey seeks to make it as simple as possible to use to as large a potential audience as possible, it attempts this by the following:<br id="jpl_0"><ol id="jpl_1"><li id="jpl_2">To be as language agnostic as possible.&nbsp; If a JVM language has a BSFEngine implementation and can utilize the classloader passed into it, it can be used.&nbsp; The Eclipse Monkey tool should not force a user into a new language to begin working.&nbsp; Scripts written in one language should be able to invoke others written in another language.<br id="k7x70"></li><li id="jpl_2">An editor with hippie completion and (to the degree possible) code completion.</li><li id="jpl_3">An outline view to show the user how the script is configured and what is available for use (DOMs/bundles/java packages).<br id="z10f0"></li><li id="jpl_3">A DOM that enables a user to invoke another monkey script, in the workspace, via a URL or generated and fed as a string input.</li><li id="jpl_3">A DOM that allows a script writer to take an existing plugin project and hot-load it into the current existing Eclipse workbench instance.</li><li id="jpl_3">A console DOM that allows a script writer access to something like stdout for feedback.<br id="x0wa0"></li><li id="jpl_3">Language specific DOMs that enable Eclipse Monkey to leverage existing libraries for the user (ex. <a title="GroovySWT" href="http://groovy.codehaus.org/GroovySWT" id="ktsv">GroovySWT</a> or JRuby <a title="Glimmer" href="http://rubyforge.org/projects/glimmer/" id="kk:7">Glimmer</a>).</li><li id="jpl_3">Additional metadata keywords that enable filesystem jars, filesystem folders, workspace jars, workspace folders, workspace projects or existing workbench bundles to be added to a script's classpath at runtime.</li><li id="jpl_3">Add in shell support through use of Eclipse Monkey metadata as a template and the BSF support for consoles.<br id="r9en0"></li></ol><br id="e58e0"><p id="u6-.17" align="left"><b id="g9w50">Proposed Changes<br id="g9w51"></b></p><p id="u6-.17" align="left">The new Eclipse Monkey tool will be based on the existing Eclipse Monkey's use of a metadata header (with additional keywords), but will be extended to use the <a title="Apache Bean Scripting Framework" href="http://jakarta.apache.org/bsf/index.html" id="uebv">Apache Bean Scripting Framework</a> and the Eclipse Jobs API.&nbsp; <br id="n..40"></p><p id="u6-.17" align="left"><br id="fst90"></p><ul id="sms10"><li id="sms11">Additional/Modified Metadata Keywords<br id="cg.b0"></li></ul><div id="sms12" style="margin-left: 40px;"><br id="oof80">DOM:<br id="jggs0">The new Eclipse Monkey will modify this keyword to allow the user to specify the local variable name for the script, overriding the name defined in the extension point.&nbsp; This will address potential variable name conflicts and give the DOM user/developer more freedom in choosing variable names.&nbsp; Eclipse Monkey will also provide support by marking potential conflicts and offering quick fixes to address them.<br id="oof81"><br id="jggs1">Exec-Mode:<br id="t8y30">This is a keyword that works in conjunction with the new Job keyword.&nbsp; Exec-Mode allows the script writer to tell Eclipse whether to run the script as a foreground or background job.&nbsp; The net effect is to determine if there should be a modal progress dialog shown to the user when the script is running or if it should be in the Eclipse progress view when running.<br id="t8y31"><br id="w0pr0">Include:<br id="czch0">The Include keyword allows script writers to add class folders or jars from the workspace or filesystem directly to the classloader defined for the script.&nbsp; For instance this allows script writers to leverage 3rd party libraries or java binaries in output folders directly.&nbsp; The Include keyword is vital for allowing scripts to be used in prototyping.<br id="czch1"><br id="cg.b1">Include-Bundle:<br id="bk-c0">The Include-Bundle keyword allows script writers to add bundle classloaders directly to the classloader of a script at runtime.&nbsp; Eclipse Monkey will use the OSGi runtime to acquire the target bundle's classloader and then allow the script's classloader to delegate to it at runtime.&nbsp; The net effect is to allow a script to be written such that if it were Java code directly embedded in one or more bundles.&nbsp; The Include-Bundle keyword is vital to enable Eclipse Monkey's goals of task automation, Eclipse API exploration and rapid prototyping.<br id="w0pr1"><br id="n..41">Include-Project:<br id="jggs2">The Include-Project keyword allows script writers to add Java workspace projects directly to the classloader of a script at runtime.&nbsp; Eclipse Monkey will use the JDT to interrogate the project for its resolved classpath and pass that information onto the classloader of the script at runtime.&nbsp; This feature will not be enabled for Eclipse RCP apps that are lacking both the Eclipse Platform and JDT.&nbsp; Future enhancements could allow for Eclipse Monkey to be able to determine if a project is a plugin and then be able to load the bundle via the bundlerDOM, run the script and then unload the bundle after its completion.<br id="s6_l0"><br id="n..42">Job:<br id="u8370">The Job keyword allows script writers to specify the kind of Eclipse job that the script is to run in.&nbsp; Current valid values are Job, WorkspaceJob, UIJob and default (empty string) maps to Job.<br id="jggs3"><br id="n..43">LANG:<br id="jggs4">The LANG keyword allows script writers to specify the language the script body is to be written in.&nbsp; Current valid values are Beanshell, Groovy, Ruby and default (empty string) maps to Groovy.<br id="rbb90"><br id="n..44">Menu:<br id="w0pr2">The Menu keyword allows script writers to specify the pulldown path to access the script via the monkey menu.<br id="a1dq0"><br id="n..45">Script-Path:<br id="a1dq1">The full path of the script in the workspace.<br id="k_x60"><br id="sms13"></div><ul id="z0ku0"><li id="z0ku1">Apache Bean Scripting Framework</li></ul><div id="z0ku2" style="margin-left: 40px;">The Apache Bean Scripting Framework enables the use of any JVM (Java Virtual Machine) Language that has a compatible BSFEngine implementation.&nbsp; As of right now the existing Groovy Monkey project allows scripts to be written in either <a title="Beanshell" href="http://www.beanshell.org/" id="y74e">Beanshell</a>,&nbsp;<a title="Groovy" href="http://groovy.codehaus.org" id="o8h2">Groovy</a>, or <a title="Ruby" href="http://jruby.codehaus.org/" id="nhdb">Ruby</a>.&nbsp; The first release of the newly constituted Eclipse Monkey will target the aforementioned languages but also will target <a title="ECMAScript" href="http://www.mozilla.org/rhino/" id="n95f">ECMAScript</a>(JavaScript) and <a title="Python" href="http://www.jython.org/Project/index.html" id="x_gg">Python</a>.<br id="e58e2"></div><br id="gl1u0"><ul id="gl1u1"><li id="gl1u2">Eclipse Jobs API:</li></ul><div id="icyz0" style="margin-left: 40px;">An Eclipse monkey script will be run within the context of an existing Eclipse Job.&nbsp; <br id="icyz1"></div><h3 id="u6-.37">Relationship with other Eclipse Projects</h3>Eclipse Monkey is meant to enable scripting on the entire range of Eclipse platforms.&nbsp; A core plugin should allow for scripting on a base Equinox OSGi container (+org.eclipse.core.runtime/resources) based application.&nbsp; A core and core UI plugin should allow development of Monkey scripts on Eclipse RCP platforms.&nbsp; Finally, full editor support and features should be allowed for Eclipse platforms that contain the JDT.&nbsp; As more and more of the full Eclipse SDK is available, more functionality would be available from Eclipse Monkey.<br id="c9xs0"><h2 id="u6-.40">Organization</h2>
<p id="u6-.41" align="left">We propose this project should
be undertaken as a Technology project rather than as part of the
Eclipse Platform. Being a Technology project gives it room to
experiment without disruption to other Eclipse Platform development
work.</p>
<p id="u6-.42" align="left">Finally, since Technology sub-projects
are not meant to be ongoing, we foresee three possible evolutionary
paths for the subproject:<br id="u6-.43">
<br id="u6-.44">
1. The project is merged back into the mainline Eclipse Platform top-level project.<br id="u6-.45">
2. The project is moved to a permanent state as a Tools Platform project.<br id="u6-.46">
3. The technology proves to be insufficient for Eclipse and the work is set aside.<br id="u6-.47">
<br id="u6-.48">
These paths are not mutually exclusive. Some combination of some or all
of these paths may be the result of the work done in this project.&nbsp;</p>
<h3 id="u6-.49" align="left">Proposed initial committers</h3>
<ul id="dhvw0"><li id="dhvw1">James E. Ervin, Independent Software Engineer</li><li id="dhvw2">Others welcome<br id="dhvw3"></li></ul>
<h3 id="u6-.57" align="left">Interested parties</h3><h3 id="u6-.61" align="left">Code Contributions</h3>
<p id="u6-.62" align="left">James E. Ervin is offering Groovy Monkey as an initial codebase
(see <a title="http://sourceforge.net/projects/groovy-monkey" href="http://sourceforge.net/projects/groovy-monkey" id="e4vw">http://sourceforge.net/projects/groovy-monkey</a>).</p><h2 id="u6-.65">Tentative Plan</h2>
<p id="u6-.66" align="left">Development with Groovy Monkey is on-going, if given the green-light, work will cease on that project and the first version of the new Eclipse Monkey would follow relatively quickly.&nbsp; Given the number of potential languages to use as input and the potential number of features, releases should occur on a regular six week schedule.<br id="x3y50">
</p>
</div>
</div>
</div>
</p>

      </div>
  </div>
<?php
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
