SlideShare a Scribd company logo
Tooling for the JavaScript era
                                     Andy Clement, Staff Engineer
                                     Martin Lippert, Staff Engineer
                           Andrew Eisenberg, Senior Member of Technical Staff


© 2012 SpringOne 2GX. All rights reserved. Do not distribute without permission.
Speaker Introduction
              •    Andy Clement
                    –  Staff Engineer, R&D
                    –  Lead, language lab

              •    Martin Lippert
                    –  Staff Engineer, R&D
                    –  Lead, development tools

              •    Andrew Eisenberg
                    –  Senior Member of Technical Staff, R&D
                    –  Lead, Groovy-Eclipse

2
Disclaimer
•  This session may contain product features that are
   currently under development.
•  This session/overview of the new technology represents
   no commitment from SpringSource/VMware to deliver
   these features in any generally available product. 
•  Features are subject to change, and must not be
   included in contracts, purchase orders, or sales
   agreements of any kind. 
•  Technical feasibility and market demand will affect final
   delivery. 
•  Pricing and packaging for any new technologies or
   features discussed or presented have not been
   determined
3
Agenda
•    The basic idea
•    Observations and assumptions
•    Our prototypes
•    Where are we heading?




4
The basic idea
•  Where are IDE and development tools in general heading
   towards?
    –    Big integrated desktop IDE?
    –    Lightweight editors?
    –    Browser-based IDEs?
    –    Does Cloud have an impact?

•  Why can Google search the web in 10ms, but it takes
   1000ms or more for my IDE to lookup a type hierarchy

5
Exploring…
•  Lets do things differently:
    –    Browser-based
    –    Lightweight instead of fully integrated IDEs
    –    Maybe cloud hosted
    –    Innovate…


•  And see what comes out of that…



6
Exploration
•  Non-coding work:
    –  Talk to people
    –  Ask questions
    –  Scribble
•  Coding work:
    –  Prototyping
    –  Shipping early



7
JavaScript
•  Increasing in popularity
•  Not only web UI gadgets anymore
    –  Serious large-scale apps in JavaScript
    –  Server-side JS (node.js)
•  Other dialects interesting: CoffeeScript, TypeScript
    –  JS is first priority
•  Fits nicely into our scope for browser-based tooling



8
Results and assumptions #1
•  Lightweight beats heavyweight
    –  Simple editors still the most popular JS tool
    –  Don’t want the uber tool


•  Speed is essential (startup, coding, typing)
    –  No acceptance for long startups, delay in typing




9
Results and assumptions #2
•  Real code comprehension missed a lot
     –  People would love to get good content-assist and code-
        completion
        •  Aware of module definitions (AMD, RequireJS, …)
        •  Aware of frameworks
     –  Fast/accurate navigation
     –  Early error indication (more than just JSLint)




10
Results and assumptions #3
•  Debugging is great, but good integration with editing is
   missing
     –  Workarounds exist (for Chrome Dev Tools, for example)
     –  Better integration would be good

•  Connecting with existing popular tools




11
Results and assumptions #4
•  A cloud-hosted workspace?
     –  Need to work offline
     –  Need to use other tools on my machine on the files

•  A cloud-hosted tool?
     –    Collaborative editing
     –    Social coding
     –    Zero installation – always up-to-date
     –    Technically using cloud (aka unlimited) resources
12
Let’s prototype




13
Prototyping
•  Build some basic tools with key features that meet user
   need
•  Make them available
•  Collect feedback, adjust direction as necessary




14
Prototype #1
•  Build:
     –  Editing tool with server side ‘cloud’ workspace
        •  browser based editing experience
     –  Good content assist
     –  Reuse tech where appropriate
     –  No preference on backend technology




15
Prototype #1: Eclipse Orion

         “Browser-based open tool integration platform”

•    Eclipse Project
•    Client/Server tool
•    Orion is a tools platform
•    Not an IDE in a browser tab



16
Prototype #1: Features
•  An Eclipse Orion deployed internally in VMware
•  With extra capabilities:
     –  Better content assist than real orion
     –  Basic command line console included for running some
        server side commands
        •  e.g. vmc push to Cloud Foundry


•  What happened?


17
What happened?
•  Very little interest
     –  Developers are busy people
     –  The benefits of basic content assist did not outweigh cost of
        giving up their environment
     –  Developers happier with code on their machine
     –  Even just to ‘try it out’ they had to migrate some code over
        to the cloud workspace




18
Prototype #2
•  Learn from our own experiences extending Orion
     –  What do we need?


•  Create a tool that would support local or remote
   workspace
     –  Continues to be a web app, just with a local server
     –  Can optionally have the server deployed remotely
     –  Keep a low adoption barrier


19
Prototype #2
•  Could use Orion, but:
     –  UI for Orion not quite as snappy/fast as we wanted
     –  Server is a bit heavy
     –  Orion offered more facilities than we wanted
        •  Another Git UI
        •  Multi user setup




20
Prototype #2
•  Reuse Eclipse Orion Code Editor
•  Implement alternative lightweight backend
•  Focus on:
     –  Speed (startup and usage)
     –  Code awareness:
        •  Static code analysis
        •  Content assist
             –  Module system comprehension



21
Scripted Architecture: client side
•  Eclipse Orion
     –  Just the editor: familiar to Eclipse users
•  Dojo for now
•  Inferencing engine relying on
     –  Recoverable JS parsing: esprima
     –  Dependency analysis code




22
Scripted Architecture: server side
•  Small Node.js server
     –  Serving the client html/js
     –  Serving requests from the client
        •  ‘give me the contents of file X’
        •  ‘search for this string’
        •  ‘tell me the dependencies of this JS file’
•  Restarted on each editor launch
     –  Likely to eventually be a long running process


23
Scripted
•  Much more positive feedback internally
•  Decided to open source to access a wider audience
•  Now on github:
     https://github.com/scripted-editor/scripted




24
Scripted: Features
•  Fast – startup and during use
•  Code awareness
     –  JSLint early error indication
     –  Module system awareness, transitive dependency analysis
     –  JSDoc comprehension
•  Basic editor configuration
•  Basic navigator
•  Side-panel

25
Scripted Demo




26
Scripted – near term goals
•  Even more code awareness
     –  Even better content assist
     –  More module systems
     –  Maybe always ON content assist…
•  Plugin model
     –  Extend it with JavaScript




27
Scripted – near term goals
•  More side-panel contents
     –  More panes (documentation, search results)
     –  Automated management of panes by the editor
•  UI overhaul
     –  we’re smarter than we were when we started !




28
Scripted – longer term goals
•  Debugging
     –  Not reinventing CDT
     –  Helping developers in callback hell
     –  Step into server from client
•  Selected tool integration
     –  But not replacing command line tools, e.g. Git
•  Even further out
     –  Other languages (Java)


29
Some images from the drawing board…




30
Original overlays instead of side panel
                                Discarded
                                •  Covering the user
                                   code just too irritating




31
Other side panel entries
                           Will be implementing
                           •  Documentation pane
                           •  Search results pane
                           •  Panes pinnable

                           •  More panes to follow




32
Navigator filters
                    Still exploring
                    •  Filters try to ensure
                       navigator content
                       relevant
                    •  Tag based filtering with
                       auto-tagging




33
Scrolling side panel
                       Still exploring
                       •  Confusing ‘scroll’ story




34
‘Overview’ for side panel entries
                                Unlikely to pursue
                                •  Overview doesn’t
                                   communicate enough
                                   information
                                •  Still somewhat fiddly
                                   scrolling story




35
Accordion style side panel
                             Still exploring
                             •  How lightweight can the
                                collapsed entries be?
                             •  Easier scroll story




36
Smart global search box
                          Likely to implement
                          •  One place to search for
                             anything




37
Git integration
                  Likely to implement
                  •  Initially just a browsing
                     tool for comments/
                     commit changes
                  •  Timeline feature (at the
                     bottom) still work in
                     progress




38
Feedback welcome
•  Having a reaction to some of those images?
•  Let us know!

     https://groups.google.com/forum/#!forum/scripted-dev

     https://issuetracker.springsource.com/browse/scripted




39
Summary
•  The basic idea
•  Observations and assumptions
•  The prototypes
     –  The Scripted Code Editor
•  Where are we heading?




40
Any questions?
•  Google Group: scripted-dev
     https://groups.google.com/forum/#!forum/scripted-dev
•  Project page:
          https://github.com/scripted-editor/scripted

     Andy Clement          Martin Lippert        Andrew Eisenberg
     aclement@vmware.com   mlippert@vmware.com   aeisenberg@vmware.com
     @andy_clement         @martinlippert        @werdnagreb




41
The End




42

More Related Content

KEY
Zend Code in ZF 2.0
KEY
Get your Project back in Shape!
PDF
Native vs HTML
PDF
NetWork - 15.10.2011 - Applied code generation in .NET
PDF
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
PPTX
How to get started in Open Source!
PDF
Hardware hacking on the pi; what's js got to do with it
PDF
A Tale of Two Toolkits
Zend Code in ZF 2.0
Get your Project back in Shape!
Native vs HTML
NetWork - 15.10.2011 - Applied code generation in .NET
From Zero to Hero - Contribute to Linux Kernel in 15 Minutes
How to get started in Open Source!
Hardware hacking on the pi; what's js got to do with it
A Tale of Two Toolkits

What's hot (12)

KEY
Stop Building It From Scratch: Creating Reusable eLearning Components
PDF
Android : How Do I Code Thee?
PPT
Mazenet
PDF
Mozilla + Rust at PCU Manila 02 DEC 2016
PPTX
Introduction to Java Part-2
PPTX
Introduction to Java
PDF
Discover Qt Learning and Certification
PPT
Inside the Android application framework - Google I/O 2009
PPT
PDF
Java gc
PPTX
Next-gen IDE v2 - OpenSlava 2013-10-11
PDF
Cerebro general overiew eng
Stop Building It From Scratch: Creating Reusable eLearning Components
Android : How Do I Code Thee?
Mazenet
Mozilla + Rust at PCU Manila 02 DEC 2016
Introduction to Java Part-2
Introduction to Java
Discover Qt Learning and Certification
Inside the Android application framework - Google I/O 2009
Java gc
Next-gen IDE v2 - OpenSlava 2013-10-11
Cerebro general overiew eng
Ad

Viewers also liked (6)

PPT
Coffee@DBG - TechBites Sept 2015
PPTX
Getting ready for the cloud iaa s
PPTX
Coffee@DBG - Evolution of html
PDF
Tech bites
PDF
Cross Device UI Designing
PDF
Front end workflow Presentation at Coffee@DBG by Praveen Vijayan
Coffee@DBG - TechBites Sept 2015
Getting ready for the cloud iaa s
Coffee@DBG - Evolution of html
Tech bites
Cross Device UI Designing
Front end workflow Presentation at Coffee@DBG by Praveen Vijayan
Ad

Similar to Tooling for the JavaScript Era (20)

PDF
Devconf 2011 - PHP - How Yii framework is developed
PDF
PPTX
Reviewing CPAN modules
PDF
JavaFX 101
PDF
Prototyping like it is 2022
PDF
Everyone wants (someone else) to do it: writing documentation for open source...
PDF
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
PDF
The Architect Way - JSCamp.asia 2012
PPTX
Security research over Windows #defcon china
PDF
AD1545 - Extending the XPages Extension Library
PPTX
Kafka 0.8.0 Presentation to Atlanta Java User's Group March 2013
PDF
Talent42 2014 Sam Wholley -
PPTX
Lean-Agile Development with SharePoint - Bill Ayers
PDF
Agile Software Development in practice: Experience, Tips and Tools from the T...
PDF
Xcode, Basics and Beyond
KEY
Make It Cooler: Using Decentralized Version Control
PPTX
Introducing systems analysis, design & development Concepts
PPS
CS101- Introduction to Computing- Lecture 45
PDF
Easing Cloud Migrations with Software Pipelines as a Service - Christopher J...
PPT
Lean-Agile SharePoint Development
Devconf 2011 - PHP - How Yii framework is developed
Reviewing CPAN modules
JavaFX 101
Prototyping like it is 2022
Everyone wants (someone else) to do it: writing documentation for open source...
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
The Architect Way - JSCamp.asia 2012
Security research over Windows #defcon china
AD1545 - Extending the XPages Extension Library
Kafka 0.8.0 Presentation to Atlanta Java User's Group March 2013
Talent42 2014 Sam Wholley -
Lean-Agile Development with SharePoint - Bill Ayers
Agile Software Development in practice: Experience, Tips and Tools from the T...
Xcode, Basics and Beyond
Make It Cooler: Using Decentralized Version Control
Introducing systems analysis, design & development Concepts
CS101- Introduction to Computing- Lecture 45
Easing Cloud Migrations with Software Pipelines as a Service - Christopher J...
Lean-Agile SharePoint Development

More from martinlippert (20)

PDF
WJAX 2013: Java8-Tooling in Eclipse
PDF
WJAX 2013: Die PaaS-Parade - Teil 2 - Cloud Foundry
PDF
EclipseCon-Europe 2013: Optimizing performance - how to make your Eclipse-bas...
PDF
EclipseCon-Europe 2013: Making the Eclipse IDE fun again
PDF
Jax2013 PaaS-Parade - Part 1: Cloud Foundry
PDF
JAX 2013: Modern Architectures with Spring and JavaScript
PDF
JAX 2013: Introducing Eclipse Orion
PDF
Spring Tooling: What's new and what's coming
PDF
Modern Architectures with Spring and JavaScript
PDF
Scripted - Embracing Eclipse Orion
PDF
PaaS Parade - Cloud Foundry
PDF
Browser and Cloud - The Future of IDEs?
PDF
Modern Architectures with Spring and JavaScript
PDF
What's new with tooling for Spring, Grails, and the Cloud
PDF
Embracing Eclipse Orion
PDF
Why SOLID matters - even for JavaScript
PDF
JAX 2012: Moderne Architektur mit Spring und JavaScript
PDF
JAX 2012: Pimp Your IDE Productivity
PDF
WaveMaker - Spring Roo - SpringSource Tool Suite - Choosing the right tool fo...
PDF
Spring Tooling Update - New & Noteworty (at SpringOne 2011)
WJAX 2013: Java8-Tooling in Eclipse
WJAX 2013: Die PaaS-Parade - Teil 2 - Cloud Foundry
EclipseCon-Europe 2013: Optimizing performance - how to make your Eclipse-bas...
EclipseCon-Europe 2013: Making the Eclipse IDE fun again
Jax2013 PaaS-Parade - Part 1: Cloud Foundry
JAX 2013: Modern Architectures with Spring and JavaScript
JAX 2013: Introducing Eclipse Orion
Spring Tooling: What's new and what's coming
Modern Architectures with Spring and JavaScript
Scripted - Embracing Eclipse Orion
PaaS Parade - Cloud Foundry
Browser and Cloud - The Future of IDEs?
Modern Architectures with Spring and JavaScript
What's new with tooling for Spring, Grails, and the Cloud
Embracing Eclipse Orion
Why SOLID matters - even for JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Pimp Your IDE Productivity
WaveMaker - Spring Roo - SpringSource Tool Suite - Choosing the right tool fo...
Spring Tooling Update - New & Noteworty (at SpringOne 2011)

Tooling for the JavaScript Era

  • 1. Tooling for the JavaScript era Andy Clement, Staff Engineer Martin Lippert, Staff Engineer Andrew Eisenberg, Senior Member of Technical Staff © 2012 SpringOne 2GX. All rights reserved. Do not distribute without permission.
  • 2. Speaker Introduction •  Andy Clement –  Staff Engineer, R&D –  Lead, language lab •  Martin Lippert –  Staff Engineer, R&D –  Lead, development tools •  Andrew Eisenberg –  Senior Member of Technical Staff, R&D –  Lead, Groovy-Eclipse 2
  • 3. Disclaimer •  This session may contain product features that are currently under development. •  This session/overview of the new technology represents no commitment from SpringSource/VMware to deliver these features in any generally available product.  •  Features are subject to change, and must not be included in contracts, purchase orders, or sales agreements of any kind.  •  Technical feasibility and market demand will affect final delivery.  •  Pricing and packaging for any new technologies or features discussed or presented have not been determined 3
  • 4. Agenda •  The basic idea •  Observations and assumptions •  Our prototypes •  Where are we heading? 4
  • 5. The basic idea •  Where are IDE and development tools in general heading towards? –  Big integrated desktop IDE? –  Lightweight editors? –  Browser-based IDEs? –  Does Cloud have an impact? •  Why can Google search the web in 10ms, but it takes 1000ms or more for my IDE to lookup a type hierarchy 5
  • 6. Exploring… •  Lets do things differently: –  Browser-based –  Lightweight instead of fully integrated IDEs –  Maybe cloud hosted –  Innovate… •  And see what comes out of that… 6
  • 7. Exploration •  Non-coding work: –  Talk to people –  Ask questions –  Scribble •  Coding work: –  Prototyping –  Shipping early 7
  • 8. JavaScript •  Increasing in popularity •  Not only web UI gadgets anymore –  Serious large-scale apps in JavaScript –  Server-side JS (node.js) •  Other dialects interesting: CoffeeScript, TypeScript –  JS is first priority •  Fits nicely into our scope for browser-based tooling 8
  • 9. Results and assumptions #1 •  Lightweight beats heavyweight –  Simple editors still the most popular JS tool –  Don’t want the uber tool •  Speed is essential (startup, coding, typing) –  No acceptance for long startups, delay in typing 9
  • 10. Results and assumptions #2 •  Real code comprehension missed a lot –  People would love to get good content-assist and code- completion •  Aware of module definitions (AMD, RequireJS, …) •  Aware of frameworks –  Fast/accurate navigation –  Early error indication (more than just JSLint) 10
  • 11. Results and assumptions #3 •  Debugging is great, but good integration with editing is missing –  Workarounds exist (for Chrome Dev Tools, for example) –  Better integration would be good •  Connecting with existing popular tools 11
  • 12. Results and assumptions #4 •  A cloud-hosted workspace? –  Need to work offline –  Need to use other tools on my machine on the files •  A cloud-hosted tool? –  Collaborative editing –  Social coding –  Zero installation – always up-to-date –  Technically using cloud (aka unlimited) resources 12
  • 14. Prototyping •  Build some basic tools with key features that meet user need •  Make them available •  Collect feedback, adjust direction as necessary 14
  • 15. Prototype #1 •  Build: –  Editing tool with server side ‘cloud’ workspace •  browser based editing experience –  Good content assist –  Reuse tech where appropriate –  No preference on backend technology 15
  • 16. Prototype #1: Eclipse Orion “Browser-based open tool integration platform” •  Eclipse Project •  Client/Server tool •  Orion is a tools platform •  Not an IDE in a browser tab 16
  • 17. Prototype #1: Features •  An Eclipse Orion deployed internally in VMware •  With extra capabilities: –  Better content assist than real orion –  Basic command line console included for running some server side commands •  e.g. vmc push to Cloud Foundry •  What happened? 17
  • 18. What happened? •  Very little interest –  Developers are busy people –  The benefits of basic content assist did not outweigh cost of giving up their environment –  Developers happier with code on their machine –  Even just to ‘try it out’ they had to migrate some code over to the cloud workspace 18
  • 19. Prototype #2 •  Learn from our own experiences extending Orion –  What do we need? •  Create a tool that would support local or remote workspace –  Continues to be a web app, just with a local server –  Can optionally have the server deployed remotely –  Keep a low adoption barrier 19
  • 20. Prototype #2 •  Could use Orion, but: –  UI for Orion not quite as snappy/fast as we wanted –  Server is a bit heavy –  Orion offered more facilities than we wanted •  Another Git UI •  Multi user setup 20
  • 21. Prototype #2 •  Reuse Eclipse Orion Code Editor •  Implement alternative lightweight backend •  Focus on: –  Speed (startup and usage) –  Code awareness: •  Static code analysis •  Content assist –  Module system comprehension 21
  • 22. Scripted Architecture: client side •  Eclipse Orion –  Just the editor: familiar to Eclipse users •  Dojo for now •  Inferencing engine relying on –  Recoverable JS parsing: esprima –  Dependency analysis code 22
  • 23. Scripted Architecture: server side •  Small Node.js server –  Serving the client html/js –  Serving requests from the client •  ‘give me the contents of file X’ •  ‘search for this string’ •  ‘tell me the dependencies of this JS file’ •  Restarted on each editor launch –  Likely to eventually be a long running process 23
  • 24. Scripted •  Much more positive feedback internally •  Decided to open source to access a wider audience •  Now on github: https://github.com/scripted-editor/scripted 24
  • 25. Scripted: Features •  Fast – startup and during use •  Code awareness –  JSLint early error indication –  Module system awareness, transitive dependency analysis –  JSDoc comprehension •  Basic editor configuration •  Basic navigator •  Side-panel 25
  • 27. Scripted – near term goals •  Even more code awareness –  Even better content assist –  More module systems –  Maybe always ON content assist… •  Plugin model –  Extend it with JavaScript 27
  • 28. Scripted – near term goals •  More side-panel contents –  More panes (documentation, search results) –  Automated management of panes by the editor •  UI overhaul –  we’re smarter than we were when we started ! 28
  • 29. Scripted – longer term goals •  Debugging –  Not reinventing CDT –  Helping developers in callback hell –  Step into server from client •  Selected tool integration –  But not replacing command line tools, e.g. Git •  Even further out –  Other languages (Java) 29
  • 30. Some images from the drawing board… 30
  • 31. Original overlays instead of side panel Discarded •  Covering the user code just too irritating 31
  • 32. Other side panel entries Will be implementing •  Documentation pane •  Search results pane •  Panes pinnable •  More panes to follow 32
  • 33. Navigator filters Still exploring •  Filters try to ensure navigator content relevant •  Tag based filtering with auto-tagging 33
  • 34. Scrolling side panel Still exploring •  Confusing ‘scroll’ story 34
  • 35. ‘Overview’ for side panel entries Unlikely to pursue •  Overview doesn’t communicate enough information •  Still somewhat fiddly scrolling story 35
  • 36. Accordion style side panel Still exploring •  How lightweight can the collapsed entries be? •  Easier scroll story 36
  • 37. Smart global search box Likely to implement •  One place to search for anything 37
  • 38. Git integration Likely to implement •  Initially just a browsing tool for comments/ commit changes •  Timeline feature (at the bottom) still work in progress 38
  • 39. Feedback welcome •  Having a reaction to some of those images? •  Let us know! https://groups.google.com/forum/#!forum/scripted-dev https://issuetracker.springsource.com/browse/scripted 39
  • 40. Summary •  The basic idea •  Observations and assumptions •  The prototypes –  The Scripted Code Editor •  Where are we heading? 40
  • 41. Any questions? •  Google Group: scripted-dev https://groups.google.com/forum/#!forum/scripted-dev •  Project page: https://github.com/scripted-editor/scripted Andy Clement Martin Lippert Andrew Eisenberg aclement@vmware.com mlippert@vmware.com aeisenberg@vmware.com @andy_clement @martinlippert @werdnagreb 41