SlideShare a Scribd company logo
Language Engineering
    in the Cloud



       Lennart Kats
        @lennartcl
9
<utrecht>
Language Engineering
     Research

Compilers
Domain-specific languages
Language extensions
Parsers
Language Engineering in the Cloud
Language Engineering in the Cloud
Spoofax
Spoofax




“DOES THE TYPE CHECKER CATCH THIS?”
Spoofax




“DOES THIS HYPERLINK POINT TO THE RIGHT PLACE?”
Language Engineering in the Cloud
Language Engineering in the Cloud
Fast-growing startup:
     Cloud9 IDE
Venture capital


30 employees


2 offices
Core Product
Organization

Front-end
             Products

Back-end
              Support
Language
            Marketing &
              business
 Node.js    development
Open Source
Goal



Create the best (JavaScript) IDE out there!
Key Features
Collab
Collab
Integration with
 Cloud Services
VIM Mode
Offline Mode
Terminal Access
Language Support
Cloud9 Architecture
300.000 lines


of JavaScript
Everything is a plugin

                             file tree

search
                  JS completion
                                        terminal
     file system
                             save
Plugin components

      Client-side JS


      Server-side JS


       XML for UI
Evented I/O for JavaScript
V8 JavaScript engine
Everything asynchronous
No threads
Scaling
ELB



Proxy1   Proxy2   Proxy3



IDE1     IDE2     IDE3
Language Engineering in the Cloud
XaaS in Cloud9
                Browser




Developer IDE    SaaS

     Red Hat     PaaS

     Amazon      IaaS
Language Engineering in the Cloud
ELB



 Proxy1           Proxy2            Proxy3



  IDE1            IDE2              IDE3


Gear1     Gear2       Gear3   ...     Gear n
Language Engineering in the Cloud
Language
Infrastructure
Cloud9
Language Services


       DEMO
Editor, plugin
                 Cloud9
 architecture
UI, Events,
                 Language Foundation
WebWorkers

Editor, plugin
                       Cloud9
 architecture
Interface       base_handler

  UI, Events,
                 Language Foundation
WebWorkers

Editor, plugin
                       Cloud9
 architecture
Implementation      Language services


      Interface       base_handler

   UI, Events,
                   Language Foundation
 WebWorkers

  Editor, plugin
                         Cloud9
   architecture
base_handler
•   handlesLanguage()
•   parse()
•   analyze()
•   outline()
•   complete()
•   ...
Language Foundation

     All language services are functional and
           described by a single function




The Spoofax Language Workbench, OOPSLA 2009
Language Foundation

  All language services are technology-agnostic


findNode(), getPos()

Accelerating the creation of customized, language-Specific IDEs
in Eclipse, Charles et al., OOPSLA 2009
Language Foundation


   All language services asynchronous


  WebWorkers or Client/Server I/O
Language Foundation

  Concise specification using generic traversals




Stratego/XT 0.17. A language and toolset for program
transformation, Bravenboer et al., SCP 2008
Treehugger.js


• Based on Stratego/XT
• 100% JavaScript
• Use any parser
• Efficient
Implementation      Language services


      Interface       base_handler

   UI, Events,
                   Language Foundation
 WebWorkers

  Editor, plugin
                         Cloud9
   architecture
Parser            JS Services
Implementation
                            treehugger.js

      Interface             base_handler

   UI, Events,
                      Language Foundation
 WebWorkers

  Editor, plugin
                              Cloud9
   architecture
Treehugger.JS



     DEMO
Computational Model

Server-side:
- CPU resources expensive


Client-side:
- CPU resources “free”!
VMs for everyone!
What’s Next

Whole-project analyses
• Incremental
• Distributed
• Multi-user
What’s Next

Parser generators
• Incremental
• Recovery
• General
What’s Next

Java IDE
• High expectations of Java IDEs
• Can’t we reuse existing IDEs?
• OpenShift to the rescue
What’s Next


Cloud9 Extension Store
• Extend Cloud9 for tools, languages
• GitHub
Community Reachout

• Open source, GitHub
• R&D
• Graduate students
• Education
• Third-party extensions
Conclusion

             Open-source
              OpenShift
Advanced language analysis expanding to
     server and other languages


         Lennart C. L. Kats
     @lennartcl http://lennart.cl

More Related Content

KEY
Using Aspects for Language Portability (SCAM 2010)
PDF
The Spoofax Language Workbench (SPLASH 2010)
KEY
Test-driven language development
PDF
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
KEY
Remix Your Language Tooling (JSConf.eu 2012)
PPT
C++ to java
PDF
Log cat kotlindsl
Using Aspects for Language Portability (SCAM 2010)
The Spoofax Language Workbench (SPLASH 2010)
Test-driven language development
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Remix Your Language Tooling (JSConf.eu 2012)
C++ to java
Log cat kotlindsl

What's hot (18)

PPSX
Community Tech Days C# 4.0
PPTX
C# language
PPT
A First Look at Google's Go Programming Language
PPTX
ZIP
An Introduction to PyPy
PPTX
C-Sharp 6.0 ver2
PDF
PyPy
PPT
a quick Introduction to PyPy
PPTX
Programming Language
PDF
Programming Language Selection
PDF
Python for Swift
PDF
Create Your Own Language
PPT
Introduction to Go-Lang
PDF
LIL Presentation
PDF
Difference between c, c++ and java
PPTX
Go programing language
PPT
Intro dotnet
PPTX
C++vs java
Community Tech Days C# 4.0
C# language
A First Look at Google's Go Programming Language
An Introduction to PyPy
C-Sharp 6.0 ver2
PyPy
a quick Introduction to PyPy
Programming Language
Programming Language Selection
Python for Swift
Create Your Own Language
Introduction to Go-Lang
LIL Presentation
Difference between c, c++ and java
Go programing language
Intro dotnet
C++vs java
Ad

Similar to Language Engineering in the Cloud (20)

KEY
All out on the Cloud - PloneConf 2012
PDF
The Architect Way - JSCamp.asia 2012
PDF
Node.JS briefly introduced
KEY
The Architect Way
PPTX
Building node.js applications on windows azure
PDF
Introduction to Node.js
PDF
Vert.x introduction
PDF
Node.js, toy or power tool?
PDF
Code-Hub
PDF
Frontrow conf
PDF
10 kickass-technologies-modern-developers-love
PDF
Meetup. Technologies Intro for Non-Tech People
KEY
The Transparent Web: Bridging the Chasm in Web Development
PDF
Building businesspost.ie using Node.js
PPT
Ferrara Linux Day 2011
PDF
Introducing Cloud9 at DynCon 2011
PPTX
Bbs214 Cloud IDEs
PDF
Essential Node.js for Web Developers from Developer Week 2013
PDF
Firefox extension Development
PDF
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
All out on the Cloud - PloneConf 2012
The Architect Way - JSCamp.asia 2012
Node.JS briefly introduced
The Architect Way
Building node.js applications on windows azure
Introduction to Node.js
Vert.x introduction
Node.js, toy or power tool?
Code-Hub
Frontrow conf
10 kickass-technologies-modern-developers-love
Meetup. Technologies Intro for Non-Tech People
The Transparent Web: Bridging the Chasm in Web Development
Building businesspost.ie using Node.js
Ferrara Linux Day 2011
Introducing Cloud9 at DynCon 2011
Bbs214 Cloud IDEs
Essential Node.js for Web Developers from Developer Week 2013
Firefox extension Development
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
Ad

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Electronic commerce courselecture one. Pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
cuic standard and advanced reporting.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
20250228 LYD VKU AI Blended-Learning.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
The AUB Centre for AI in Media Proposal.docx
Per capita expenditure prediction using model stacking based on satellite ima...
Electronic commerce courselecture one. Pdf
Understanding_Digital_Forensics_Presentation.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
MYSQL Presentation for SQL database connectivity
cuic standard and advanced reporting.pdf
Spectral efficient network and resource selection model in 5G networks
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Mobile App Security Testing_ A Comprehensive Guide.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
NewMind AI Weekly Chronicles - August'25 Week I

Language Engineering in the Cloud

Editor's Notes