<!-- | |
This document is provided as a template along with some guidance for creating | |
your project proposal. This is just a template. Feel free to change it as | |
you see fit (add sections, remove section). We feel, however, that the | |
suggestions represented in this document represent the reasonable minimum | |
amount of information to move forward. | |
Please keep the formatting in this document simple. Please do not edit | |
this document in Microsoft Word as it adds huge piles of markup that make | |
it difficult to restyle. | |
More information is available here: | |
http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase | |
Direct any questions about this template to emo@eclipse.org | |
--> | |
<html> | |
<head> | |
<!-- | |
Include the title here. We will parse it out of here and include it on the | |
rendered webpage. Do not duplicate the title within the text of your page. | |
--> | |
<title>VJET: JavaScript Toolkit</title> | |
</head> | |
<!-- | |
We make use of the 'classic' HTML Definition List (dl) tag to specify | |
committers. I know... you haven't seen this tag in a long while... | |
--> | |
<style> | |
dt { | |
display: list-item; | |
list-style-position: outside; | |
list-style-image: | |
url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); | |
margin-left: 16px; | |
} | |
dd { | |
margin-left: 25px; | |
margin-bottom: 5px; | |
} | |
</style> | |
<body> | |
<p> | |
The VJET JavaScript Toolkit (VJET) project is a proposed open source project | |
under the <a | |
href="http://www.eclipse.org/projects/project_summary.php?projectid=webtools">Eclipse Web Tools Platform Project (WTP)</a>. | |
</p> | |
<!-- | |
The communication channel must be specified. Typically, this is the | |
"Proposals" forum. In general, you don't need to change this. | |
--> | |
<p> | |
This proposal is in the Project Proposal Phase (as defined in the | |
Eclipse Development Process) and is written to declare its intent and | |
scope. We solicit additional participation and input from the Eclipse | |
community. Please send all feedback to the <a | |
href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse | |
Proposals</a> Forum. | |
</p> | |
<h2>Background</h2> | |
<!-- | |
Optionally provide the background that has lead you to creating this project. | |
--> | |
VJET JavaScript IDE aims to provide the best and most productive | |
JavaScript functional and multiple-library development tools for | |
JavaScript developers for the Eclipse platform. In different JavaScript | |
libraries, the typing concepts are manifested through classes, mix-ins, | |
modules, interfaces, enumerations where you want to have excellent type code | |
assist, validation and searching for these types. In addition, there | |
are also many native JavaScript concepts where VJET solves code | |
completion for advanced features such as mixed typing, | |
overloaded functions, function call-backs, and typed object literals. | |
VJET is currently an open source project on ebayopensource.org and the project | |
plans on moving the code to the Eclipse Foundation to work closer with the | |
Eclipse ecosystem and the projects VJET depends on and forks. | |
<h2>Scope</h2> | |
<!-- | |
All projects must have a well-defined scope. Describe, concisely, what | |
is in-scope and (optionally) what is out-of-scope. An Eclipse project | |
cannot have an open-ended scope. | |
--> | |
VJET JavaScript IDE's focus is a general purpose toolkit for the | |
JavaScript language which can be extended to understand different | |
JavaScript libraries. VJET is meant to help JavaScript developers to | |
code with simple JS code to more complex class/type libraries. | |
<h2>Out of Scope</h2> | |
<!-- | |
All projects must have a well-defined scope. Describe, concisely, what | |
is in-scope and (optionally) what is out-of-scope. An Eclipse project | |
cannot have an open-ended scope. | |
--> | |
While we understand there are other efforts for JavaScript editing in | |
the Eclipse foundation, the VJET JavaScript IDE does not plan on | |
replacing the 2 other known JavaScript projects: the JavaScript | |
Development toolkit or JSDT project and Orion. We do however plan on | |
collaborating with the JSDT and Orion projects. | |
<h2>Description</h2> | |
<!-- | |
Describe the project here. Be concise, but provide enough information that | |
somebody who doesn't already know very much about your project idea or domain | |
has at least a fighting chance of understanding its purpose. | |
--> | |
VJET JavaScript IDE is a set of Eclipse plug-ins and core foundation | |
that provides a fully integrated development environment for JavaScript | |
- from authoring, to execution/test, and debugging. | |
<ul> | |
<li>Code Assistance - based on static analysis, js type | |
inferencing, js type libraries, and user defined types</li> | |
<li>Code Search - provide the best support for call hierarchy, | |
find declarations, type hierarchy, type searching</li> | |
<li>Syntax (mandatory) and Semantic Checking (optional) - through | |
a type meta model we validate the well known types/ methods / api | |
usage - to help with upgrading</li> | |
<li>Type Declarations using VJETDoc - Provide a simplified syntax | |
for defining JS object literals, functions, and JS library class | |
properties, methods in a comment</li> | |
<li>Type library support using VJET VJO - ability to extend VJET | |
using JavaScript</li> | |
<li>Java to JavaScript type - Java to JS provides a way for Java | |
types to be translated to JavaScript which can either be authored in | |
Java or switched to source in JavaScript.</li> | |
<li>Execution/Debugging - provide a way to run and debug directly | |
in Eclipse, integration between JDT debugger and VJET debugger is | |
also available.</li> | |
</ul> | |
<h2>Why Eclipse?</h2> | |
<p> | |
VJET is primarily an Eclipse plug-in and it is our long term goal to work with the well established and | |
well known foundation for managed open source projects for eclipse plug-ins to help grow the community. | |
</p> | |
<p> | |
Based on community feedback we realized that we needed to work closer with the web tools project. To collaborate with | |
other JavaScript related projects. For example the browser firebug debugger that JSDT has we would like to work | |
closer so that we can both use this module. | |
</p> | |
<p> | |
To help VJET project benefit from the large eclipse end-user and plugin developer community. We want to enable more developers to | |
use VJET capabilities as well as help them extend those capabilities for libraries. | |
</p> | |
<!-- | |
Answer these two questions: What value does this project bring to the Eclipse | |
community? What value do you expect to obtain from hosting your project at Eclipse? | |
What value do you get by having your project at Eclipse over and above the value | |
of hosting at Eclipse Labs? | |
--> | |
<h2>Initial Contribution</h2> | |
<!-- | |
Projects are expected to arrive at Eclipse with existing code. | |
Describe the existing code that will be contributed to the project. Please provide | |
a couple of paragraphs describing the code with modest detail, including important | |
information like code ownership (who holds the copyright?), and some consideration | |
of community that exists around the code. Include a listing of third-party libraries | |
and associated licenses. | |
--> | |
<p>The initial contribution will be from eBay software foundation. </p> | |
<p>The initial contribution will contain the following components:</p> | |
<ul> | |
<li>VJET core modules which do not depend on eclipse packages which act as back-end for VJET capabilities. | |
<ul> | |
<li>Jst Typespace provides indexing and queries for all JavaScript types. | |
<li>JST a higher level AST that understands Js types, Free form JavaScript and VJET Doc | |
<li>Browser SDK - Java interfaces and annotations for describing the multiple browser JavaScript apis | |
<li>Browser Dom syncing. | |
<li>JSDT forked AST parser minus Eclipse resource dependencies or JSDT inference engine. | |
<li>Vjo Generator - a generator for generating VJET vjo from a Jst model | |
<li>Java to Js generator translates Java from Eclipse JDT parser and translates the Java to JstType which is then generated into JS using Vjo Generator. | |
</ul> | |
<li>VJET eclipse - The VJET IDE for eclipse provides the front end of VJET. | |
<ul> | |
<li>DLTK extension points | |
<li>VJET selection engine | |
<li>VJET editor | |
<li>VJET builder to validate and sync the type-space. | |
<li>JST to DLTK light weight model translator. | |
<li>VJET debug Rhino server | |
<li>VJET debug integration with JDT debugger. | |
<li>VJET type space viewer for Eclipse | |
<li>VJET Script unit viewer for viewing the JstType and additional data in Script Unit | |
<li>VJET AST View which shows the original AST and recovered AST models. | |
<li>VJET help - Eclipse help, cheat-sheets. | |
<li>VJET WTP HTML editor integration. | |
<li>VJET VJETV a head-less application that can validation JavaScript syntax and semantics. | |
<li>VJET launching - a way to launch JavaScript applications in multiple ways. | |
</ul> | |
<li>VJET vjo - A JavaScript library for constructing types for runtime and authoring time. | |
<ul> | |
<li>vjo.ctype - class | |
<li>vjo.otype - object literal type | |
<li>vjo.mtype - mixin type | |
<li>vjo.itype - interface type | |
<li>vjo.etype - enum type | |
<li>vjo.ftype - function type | |
</ul> | |
<li>VJET typelibs - For getting support for many popular JavaScript libraries using vjet type meta-model | |
<ul> | |
<li>Dojo 1.6 | |
<li>EcmaScript Ed. 5 api updates | |
<li>HTML Canvas 2D API | |
<li>jQuery 1.4 | |
<li>jQuery Mobile 1.0 Alpha 4.1 (Requires JQuery Type lib) | |
<li>JSON | |
<li>Node.js 0.4 | |
</ul> | |
<li>VJET incubator type libraries - For getting support for many popular JavaScript libraries using vjet type meta-model | |
<ul> | |
<li>Console API type library | |
<li>Ext JS Core | |
<li>Orion JS | |
<li>W3C performance timing api - based on the draft w3c spec https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html | |
<li>PhoneGap | |
<li>PrototypeTL | |
<li>SWFObject | |
<li>ScriptaculousTL | |
</ul> | |
<li>VJET test libraries | |
<ul> | |
<li>Ecma Script test suite | |
<li>W3c dom test suite | |
<li>Type Semantic testing | |
<li>Code assist testing | |
<li>Js to Java proxy tests | |
<li>Java to VJET vjo JS tests | |
</ul> | |
<li>VJET dependencies | |
<ul> | |
<li>test framework | |
<li>utilities required to run VJET JS IDE. | |
</ul> | |
</ul> | |
The initial contribution will include the following modified open source dependencies: | |
<ul> | |
<li>a forked version of JSDT JavaScript AST parser. (EPL) | |
<li>a forked version of DLTK editor toolkit (EPL) | |
<li>a forked version of Rhino JavaScript runtime. (Apache) | |
</ul> | |
What is the extent of each fork? | |
<ul> | |
<li>For the DLTK project we added back JDT toolkit features to this project that were not part of DLTK original design goals such as typing concepts which are part of JDT project which DLTK pulled out. | |
<li>For the JSDT project this fork is a cherry pick. We pulled out the parser package and removed the inferencing components. | |
<li>For the Rhino project, we modified the runtime to handle obfuscation bugs and runtime bugs which support VJET Java and JavaScript integration. | |
</ul> | |
What is the goal to resolve forks? | |
<p> | |
VJET has a goal of eliminating forks of eclipse.org project code and get things to a point where you could just extend the projects. | |
In the long term, the project we modify we would like to work together to help them to be at the right level of extensibility so we can resolve our forks and inturn help the community. | |
</p> | |
<h2>Legal Issues</h2> | |
<!-- | |
Please describe any potential legal issues in this section. Does somebody else | |
own the trademark to the project name? Is there some issue that prevents you | |
from licensing the project under the Eclipse Public License? Are parts of the | |
code available under some other license? Are there any LGPL/GPL bits that you | |
absolutely require? | |
--> | |
<h2>Committers</h2> | |
<!-- | |
List any initial committers that should be provisioned along with the | |
new project. Include affiliation, but do not include email addresses at | |
this point. | |
--> | |
<p>The following individuals are proposed as initial committers to | |
the project:</p> | |
<dl> | |
<dt>Justin Early, eBay</dt> | |
<dd>Justin is a committer on the VJET ebayopensource project where he has | |
made significant contributions over many years. He will be | |
contribute to all VJET JS IDE functionality in this new project.</dd> | |
<dt>Dr. Ashvin Radiya, Avantsoft</dt> | |
<dd>Ashvin and his team has provided significant contributions to the | |
existing code base. They will contribute extensions to VJET functionality in | |
this new project.</dd> | |
</dl> | |
<p>We welcome additional committers and contributions.</p> | |
<!-- | |
Describe any initial contributions of code that will be brought to the | |
project. If there is no existing code, just remove this section. | |
--> | |
<h2>Mentors</h2> | |
<!-- | |
New Eclipse projects require a minimum of two mentors from the Architecture | |
Council. You need to identify two mentors before the project is created. The | |
proposal can be posted before this section is filled in (it's a little easier | |
to find a mentor when the proposal itself is public). | |
--> | |
<p>The following Architecture Council members will mentor this | |
project:</p> | |
<ul> | |
<li>David Carver</li> | |
<li>Chris Aniszczyk</li> | |
</ul> | |
<h2>Interested Parties</h2> | |
<!-- | |
Provide a list of individuals, organisations, companies, and other Eclipse | |
projects that are interested in this project. This list will provide some | |
insight into who your project's community will ultimately include. Where | |
possible, include affiliations. Do not include email addresses. | |
--> | |
<p>The following individuals, organizations, companies and projects | |
have expressed interest in this project:</p> | |
<ul> | |
<li>Luca Candela, Sencha</li> | |
<li>Simon Kaegi, IBM</li> | |
</ul> | |
<h2>Project Scheduling</h2> | |
<!-- | |
Describe, in rough terms, what the basic scheduling of the project will | |
be. You might, for example, include an indication of when an initial contribution | |
should be expected, when your first build will be ready, etc. Exact | |
dates are not required. | |
--> | |
<h2>Changes to this Document</h2> | |
<!-- | |
List any changes that have occurred in the document here. | |
You only need to document changes that have occurred after the document | |
has been posted live for the community to view and comment. | |
--> | |
<table> | |
<tr> | |
<th>Date</th> | |
<th>Change</th> | |
</tr> | |
<tr> | |
<td>22-May-2012</td> | |
<td>Document created</td> | |
</tr> | |
<tr> | |
<td>31-May-2012</td> | |
<td>Updated initial contribution section, mentors section</td> | |
</tr> | |
<tr> | |
<td>11-June-2012</td> | |
<td>Updated sections interested parties, background, why eclipse, initial contribution</td> | |
</tr> | |
</table> | |
</body> | |
</html> |