Dynamic Languages Toolkit

The project has been created. Please visit the project page.

Introduction

The Dynamic Languages Toolkit is a proposed open source project under the Eclipse Technology Project.

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process document) 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 http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology newsgroup. 

Background

Eclipse provides a flexible and extensible framework for third parties to implement solutions for authoring, editing, and building files in a particular language. Dynamic langauges is a valuable subset of programming languages but lack of support from Eclipse side. Support of dynamic languages in Eclipse Project(s) would extend Eclipse influence on non-Java world as well as dynamic languages would benefit from Eclipse Tools and Technologies.

Description

Dynamic Languages Toolkit project goal will be to develop framework for tool vendors, researchers, and end-users who rely on dynamic languages (like TCL, Python, and Ruby). The toolkit will support of editing, code navigation, debugging, and refactoring of code in dynamic languages and must be an extensible such that new languages such as PHP and Perl could be plugged in easily.

Also project will explore potential reuse amoung other Eclipse language projects and result in recomendations/code to push down to LTK (in addition to ltk.refactoring).

Proposed Components

  • Generic Language Model. Provides common reusable base generalized from popular dynamic language models, defines API and contracts for Common Infrastructure components and extensions. Coupled with partial or full, where appropriate, implementations of source/model related services like code indexer, search engine, type evaluators Generic Language Model will help to plug-in new lanuguages easily (instead of "copy-and-paste") to reach primary goal.

    Another goal is to make dynamic language models interoperable. While this is not the primary goal, it has an advantages for multi-language evironments like dynamic language VMs designed for wide range of languages (see Perl Foundation's Parrot VM) and cross-language tools.

  • Type Inference Framework. Type inference is an important task for dynamic language tools. DLTK goal is to explore Type Inference algorithms (like DDP), and explore possibilities to build a framework for tool implementors.
  • Common UI Components. Generic Language Model will provide services on top of which Common UI Components will be build. These UI components includes but not limited to: structural code explorer and browser, type hierarchy and call graph viewers, code outline viewer, code navigation and code search UI parts.
  • Debugging Infrastructure. Creating infrastructure for support debugging of scripting languages including common debugger protocol, implementation and extensions to Eclipse Platform Debug UI. Xdebug project's DBGp protocol is designed for scripting languages and proposed as a common debugger protocol to use in the project.
  • Exemplary Implementations. Plugged in exemplary implementations of scripting languages (Ruby, Python, TCL) will prove the Dynamic Languages Toolkit design and architecture and will be examples for technology adopters.
  • JDT Integration. Scripting languages widely used for Java scripting with pure Java scripting language interpreters like JRuby (Ruby), Jython (Python), Jacl (Tcl), Rhino (ECMAScript), etc. DLTK JDT integration component targeted to provide an integration layer between DLTK based tools and JDT. Potentially this will extend JDT with refactoring partcipants to include script code in refactoring operations as well as allow script programmer to use Java code completion on Java objects inside script, etc.

Relationship with other Eclipse Projects

Dylamic Languages Toolkit project will be build on top of Eclipse Platform. Eclipse projects which rely on scripting languages might be interested, including WTP (JavaScript), WTP-based projects (scripting languages for web development, like PHP IDE project), Laszlo Eclipse Frameworks which rely on JavaScript and other scripting languages, etc.

DLTK JDT Integration will also rely on Eclipse JDT project codebase.

Organization

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.

Finally, since Technology sub-projects are not meant to be ongoing, we foresee three possible evolutionary paths for the subproject:

1. The project is merged back into the mainline Eclipse Platform top-level project.
2. The project is moved to a permanent state as a Tools Platform project.
3. The technology proves to be insufficient for Eclipse and the work is set aside.

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. 

Proposed initial committers

  • Andrei Sobolev - xored software, Inc.
  • Andrey Platov - xored software, Inc.
  • Mikhail Kalugin - xored software, Inc.
  • Dmitriy Kovalev - xored software, Inc.
  • Andrey Tarantsov - xored software, Inc.
  • Yuri Baburov - xored software, Inc.

Interested parties

The following companies have expressed interest in this project. Key contacts listed.

  • Cisco Systems, Inc. - Ed Warnicke (eaw@cisco.com)

Code Contributions

xored software, Inc. is offering TruStudio Foundation PHP & Python IDE, as an initial codebase (see http://www.xored.com/trustudio). TruStudio IDE built with proposed concepts in mind and could be used as a potential codebase for some parts of Dynamic Languages Toolkit project.

Cisco Systems, Inc. contributed TCL language support code for Dynamic Languages Toolkit project.

Tentative Plan

Development is ongoing at www.eclipsedltk.org, Plan for DLTK core and TCL exemplary tools available here: DLTK TCL Project Plan and scheduled for release on Jan, 23 2007. We plan to release DLTK 1.0 Final with exemplary tools for Ruby, Python, and TCL by the end of Q1/2007.