E4/Scripting

From Eclipsepedia

< E4
Revision as of 09:49, 18 January 2013 by Laporte.yahoo.com (Talk | contribs)

Jump to: navigation, search

Contents

Abstract

Scripting is about easy customization, and automation of common workflows.

While most editors, IDEs and office tools support some sort of scripting, there is no common approach at Eclipse. Some projects exist but it's very fragmented. This effort is about getting together and unifying the efforts, such that we all get to a better solution.

Success Statement: Provide an installable scripting framework from Eclipse.org which satisfies most needs, such that fragmented efforts are united again.

Mailing List

Please direct all discussions around scripting to our archived mailing list. This page will collect our current understanding of things.

Meetings

Use Cases

List of use-cases for scripting, most relevant ones first

  • UI Automation: add a button to perform common task, and deploy that in a team easily.
    • open multiple Views
    • simple integrations with external tools (like "External Tools..." but better integrated eg context menu)
    • eg find-replace certain things in certain files
    • eg force-load a couple Preferences
  • Data Processing: Create a Project with certain properties, add some files / folders. Should work non-UI on commandline too.
  • Model Processing: Automate recurring activities on EMF models. Headless and UI execution are also required.
  • Editor Macros
  • Recording of steps (as a help to find ID's and edit the script afterwards)
  • Drive operation inside running Eclipse from the outside

Non-functional requirements

Most important requirements first.

  • View-Source: make it easy to read existing scripts, and modify for my own purpose
  • Easy Sharing: Send a script around that I like and make it super easy to deploy
  • Simple API for common things (DOM): Eclipse API is too complex for simple things. Make simple things simple, allow break-out to full Eclipse API for complex things.
  • Extendable for new commands / DOM's
  • Support recording of UI interaction in order to discover ID's and create a minimal basic frame for a script
  • Can drive from the outside
  • Works in non-UI mode
  • Multiple languages supported (everyone has their favorite ... though if there is ONE common good solution that's maybe better than yet more fragmentation)

Success Criteria

Looks like Eclipse Monkey supported the first four requirements (above) already, why didn't it succeed ?

  • Because Eclipse Monkey is working damn well? :) There is no need to modify a tool when it works almost as expected.

What can be done to make a new approach succeed ?

  • Provide more DOMs by default (easier and quicker usage)
  • Provide more examples (easier usage)
  • Provide more scripting languages by default (easier deployment)
  • Provide a script editor with good auto-completion/contextual help (javascript editor/pydev are often limited at this level) and debug capabilities (easier usage)
  • Provide a UI recording capability
  • Support seamless reuse/migration of existing Eclipse Monkey scripts for the main languages.

Existing Tools

Known software that brings scripting to Eclipse, most interesting ones first. May want to create sub-sections per tool as we collect more information about each.

  • Eclipse Command Language (ECL). Core is Open Source. Commercial extensions used by Xored in Q7 for test automation.
    • Every command created manually as an EMF object, data passed as EMF. Pipes and functional programming.
    • Supports recording of UI interaction into the scripts in Q7.
  • Eclipse Monkey (archived) - the original approach contributing menus through metadata in scripts residing in the workspace. Javascript only.
    • Groovy Monkey - The successor of Eclipse Monkey, supporting Groovy, Beanshell, Ruby or Python.
    • Python Monkey - Python Monkey adds support for Python language to Eclipse Monkey, using Jython.
    • TOPCASED supports Javascript/Python scripting based on unmodified Eclipse Monkey + Python Monkey and specific DOMs for modeling. Eclipse Monkey has been cloned to work around its archived status. See also TOPCASED scripting guide.
    • ScriptEclipse - Another sequel of Eclipse Monkey it seems. Details TBD.
  • OSGi Shell in Equinox 3.8 Juno and newer
    • Builtin commands for OSGi interactions and basic manipulation. Telnet and SSH connectivity. Contribute commands as OSGi Services.
    • Too hard to add new commands which are scripts themselves. No UI integration.
  • Jython - Drive Java from Python. Used in commercial test tool QF-Test.
  • Eclipse E4 Live Editor - Has a Javascript console embedded, and supports the E4 Application Model as DOM.
  • Aptana: Rubles - Ruby bundles to extend the IDE. Modeled after the TextMate editor.
  • Emacs+ - Editor scripting through Emacs emulation.
  • GroovyEclipse (Editor scripting)
  • DLTK - Console for running scripts
  • Javascript / Rhino engine
  • Java 6 and later - scripting interface (being used in several approaches above)
  • BeanScripting foundation for WebSphere
    • Scala etc in plugins
    • Mohammed's old extension point infrastructure

Automated Recording

  • Not perfect, but may help finding ID's etc.
    • SWTBot
    • Jubula - does not record into scripts
    • WindowTester
    • Xored Q7 / Eclipse Command Language (ECL) - see above

Next Steps

  • Get in touch with more interested parties
  • Collect very concrete use-cases
  • Find candidate tools to look at in more detail