Language Engineering    in the Cloud       Lennart Kats        @lennartcl
9
<utrecht>
Language Engineering     ResearchCompilersDomain-specific languagesLanguage extensionsParsers
Spoofax
Spoofax“DOES THE TYPE CHECKER CATCH THIS?”
Spoofax“DOES THIS HYPERLINK POINT TO THE RIGHT PLACE?”
Fast-growing startup:     Cloud9 IDE
Venture capital30 employees2 offices
Core Product
OrganizationFront-end             ProductsBack-end              SupportLanguage            Marketing &              busine...
Open Source
GoalCreate 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 linesof JavaScript
Everything is a plugin                             file treesearch                  JS completion                          ...
Plugin components      Client-side JS      Server-side JS       XML for UI
Evented I/O for JavaScriptV8 JavaScript engineEverything asynchronousNo threads
Scaling
ELBProxy1   Proxy2   Proxy3IDE1     IDE2     IDE3
XaaS in Cloud9                BrowserDeveloper IDE    SaaS     Red Hat     PaaS     Amazon      IaaS
ELB Proxy1           Proxy2            Proxy3  IDE1            IDE2              IDE3Gear1     Gear2       Gear3   ...    ...
LanguageInfrastructure
Cloud9Language Services       DEMO
Editor, plugin                 Cloud9 architecture
UI, Events,                 Language FoundationWebWorkersEditor, plugin                       Cloud9 architecture
Interface       base_handler  UI, Events,                 Language FoundationWebWorkersEditor, plugin                     ...
Implementation      Language services      Interface       base_handler   UI, Events,                   Language Foundatio...
base_handler•   handlesLanguage()•   parse()•   analyze()•   outline()•   complete()•   ...
Language Foundation     All language services are functional and           described by a single functionThe Spoofax Langu...
Language Foundation  All language services are technology-agnosticfindNode(), getPos()Accelerating the creation of customiz...
Language Foundation   All language services asynchronous  WebWorkers or Client/Server I/O
Language Foundation  Concise specification using generic traversalsStratego/XT 0.17. A language and toolset for programtran...
Treehugger.js• Based on Stratego/XT• 100% JavaScript• Use any parser• Efficient
Implementation      Language services      Interface       base_handler   UI, Events,                   Language Foundatio...
Parser            JS ServicesImplementation                            treehugger.js      Interface             base_handl...
Treehugger.JS     DEMO
Computational ModelServer-side:- CPU resources expensiveClient-side:- CPU resources “free”!
VMs for everyone!
What’s NextWhole-project analyses• Incremental• Distributed• Multi-user
What’s NextParser generators• Incremental• Recovery• General
What’s NextJava IDE• High expectations of Java IDEs• Can’t we reuse existing IDEs?• OpenShift to the rescue
What’s NextCloud9 Extension Store• Extend Cloud9 for tools, languages• GitHub
Community Reachout• Open source, GitHub• R&D• Graduate students• Education• Third-party extensions
Conclusion             Open-source              OpenShiftAdvanced language analysis expanding to     server and other lang...
Language Engineering in the Cloud
Language Engineering in the Cloud
Language Engineering in the Cloud
Language Engineering in the Cloud
Language Engineering in the Cloud
Language Engineering in the Cloud
Language Engineering in the Cloud
Upcoming SlideShare
Loading in...5
×

Language Engineering in the Cloud

366

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
366
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • What I brought to the table\nIDE compulsory\n
  • intimate connection between the two\nboth from user and developer perspective\n
  • Language workbenches combine interactive definition and use of DSLs\n
  • Scenario: scoping rules!\n
  • Scenario: scoping rules!\n
  • \n
  • After four years, I completed my PhD and went on to do a 2 year postdoc\n
  • \n
  • \n
  • \n
  • Accel/Atlassian\n
  • \n
  • 30 ppl; half developers\n\nproducts: strategies, website, UX, support\n
  • \n
  • \n
  • 2 areas: features based on the connectiveness of the cloud, and features familiar from desktop IDEs\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • IaaS: scaling, pay-by-use\n
  • IaaS: scaling, pay-by-use\n
  • IaaS: scaling, pay-by-use\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • departure from DSL approach\nefficient: caching\n
  • \n
  • \n
  • \n
  • \n
  • NodeJS: single-threaded; openshift: computational power per user!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Language Engineering in the Cloud

    1. 1. Language Engineering in the Cloud Lennart Kats @lennartcl
    2. 2. 9
    3. 3. <utrecht>
    4. 4. Language Engineering ResearchCompilersDomain-specific languagesLanguage extensionsParsers
    5. 5. Spoofax
    6. 6. Spoofax“DOES THE TYPE CHECKER CATCH THIS?”
    7. 7. Spoofax“DOES THIS HYPERLINK POINT TO THE RIGHT PLACE?”
    8. 8. Fast-growing startup: Cloud9 IDE
    9. 9. Venture capital30 employees2 offices
    10. 10. Core Product
    11. 11. OrganizationFront-end ProductsBack-end SupportLanguage Marketing & business Node.js development
    12. 12. Open Source
    13. 13. GoalCreate the best (JavaScript) IDE out there!
    14. 14. Key Features
    15. 15. Collab
    16. 16. Collab
    17. 17. Integration with Cloud Services
    18. 18. VIM Mode
    19. 19. Offline Mode
    20. 20. Terminal Access
    21. 21. Language Support
    22. 22. Cloud9 Architecture
    23. 23. 300.000 linesof JavaScript
    24. 24. Everything is a plugin file treesearch JS completion terminal file system save
    25. 25. Plugin components Client-side JS Server-side JS XML for UI
    26. 26. Evented I/O for JavaScriptV8 JavaScript engineEverything asynchronousNo threads
    27. 27. Scaling
    28. 28. ELBProxy1 Proxy2 Proxy3IDE1 IDE2 IDE3
    29. 29. XaaS in Cloud9 BrowserDeveloper IDE SaaS Red Hat PaaS Amazon IaaS
    30. 30. ELB Proxy1 Proxy2 Proxy3 IDE1 IDE2 IDE3Gear1 Gear2 Gear3 ... Gear n
    31. 31. LanguageInfrastructure
    32. 32. Cloud9Language Services DEMO
    33. 33. Editor, plugin Cloud9 architecture
    34. 34. UI, Events, Language FoundationWebWorkersEditor, plugin Cloud9 architecture
    35. 35. Interface base_handler UI, Events, Language FoundationWebWorkersEditor, plugin Cloud9 architecture
    36. 36. Implementation Language services Interface base_handler UI, Events, Language Foundation WebWorkers Editor, plugin Cloud9 architecture
    37. 37. base_handler• handlesLanguage()• parse()• analyze()• outline()• complete()• ...
    38. 38. Language Foundation All language services are functional and described by a single functionThe Spoofax Language Workbench, OOPSLA 2009
    39. 39. Language Foundation All language services are technology-agnosticfindNode(), getPos()Accelerating the creation of customized, language-Specific IDEsin Eclipse, Charles et al., OOPSLA 2009
    40. 40. Language Foundation All language services asynchronous WebWorkers or Client/Server I/O
    41. 41. Language Foundation Concise specification using generic traversalsStratego/XT 0.17. A language and toolset for programtransformation, Bravenboer et al., SCP 2008
    42. 42. Treehugger.js• Based on Stratego/XT• 100% JavaScript• Use any parser• Efficient
    43. 43. Implementation Language services Interface base_handler UI, Events, Language Foundation WebWorkers Editor, plugin Cloud9 architecture
    44. 44. Parser JS ServicesImplementation treehugger.js Interface base_handler UI, Events, Language Foundation WebWorkers Editor, plugin Cloud9 architecture
    45. 45. Treehugger.JS DEMO
    46. 46. Computational ModelServer-side:- CPU resources expensiveClient-side:- CPU resources “free”!
    47. 47. VMs for everyone!
    48. 48. What’s NextWhole-project analyses• Incremental• Distributed• Multi-user
    49. 49. What’s NextParser generators• Incremental• Recovery• General
    50. 50. What’s NextJava IDE• High expectations of Java IDEs• Can’t we reuse existing IDEs?• OpenShift to the rescue
    51. 51. What’s NextCloud9 Extension Store• Extend Cloud9 for tools, languages• GitHub
    52. 52. Community Reachout• Open source, GitHub• R&D• Graduate students• Education• Third-party extensions
    53. 53. Conclusion Open-source OpenShiftAdvanced language analysis expanding to server and other languages Lennart C. L. Kats @lennartcl http://lennart.cl

    ×