DotNetDay18: VSCode. An Open Source Text Editor with TypeScript and HTML5

DotNetDay18: VSCode. An Open Source Text Editor with TypeScript and HTML5

About 7 years, Erich Gamma compiled a team of software developers with a mission. Create the first user friendly web-based code editor in JavaScript and HTML5. The goal was to support IDE functionality known from the desktop, such as IntelliSense, or Code Actions. This editor transformed from the web back onto the desktop as the lightweight code editor that everybody loves, Visual Studio Code. In this session, Dirk explains how they changed the code from a huge monolithic JavaScript application into a modular desktop application written in TypeScript. In addition to the technical challenges you can get insight into the processes that the team uses to support this large open-source project.

E6cffbf3b7a5fbfee4707033ef1636f5?s=128

dotnetday

May 29, 2018
Tweet

Transcript

  1. Visual Studio Code Ein Open Source Code Editor in TypeScript

    und HTML 5 Dirk Bäumer (@dbktw)
  2. Visual Studio Code A desktop tool that combines the simplicity

    of a code editor with what developers need for the core code-build-debug-commit cycle
  3. None
  4. Microsoft Edge

  5. None
  6. None
  7. None
  8. None
  9. 288 OSS components

  10. None
  11. https://www.destroyallsoftware.com/talks/wat

  12. Programming JavaScript is like carving code in stone. Refactoring it

    is difficult. JavaScript code rots over time. Comprehending JavaScript code is difficult as well (hard to browse and navigate) Large code bases need to come up with compensating patterns for modules (esm, umd, amd or commonjs), namespaces, annotations, …. Describing APIs means keeping documentation synchronized with the implementation.
  13. None
  14. None
  15. None
  16. See also: https://github.com/lukehoban/es6features

  17. None
  18. None
  19. None
  20. Controlled extensibility JavaScript or TypeScript Reuse node modules API: vscode.d.ts

    Extension description: package.json Main Process IPC Extension Host Extension Host RPC Extension Host node.js Renderer process
  21. RPC Ext- Host Node Renderer process PowerShell Server OmniSharp Server

    Go CLI Tools Jedi C++ Server Rust LS Eclipse Java Server TS Server
  22. Editor/IDE Host Language Server Language Server Protocol User opens document

    textDocument/didOpen: textDocument User edits document textDocument/didChange: textDocument User executes go to definition textDocument/defintion: textDocument, position result: uri, range User closes document textDocument/didClose: textDocument JSON RPC textDocument/publishDiagnostics: diagnostics https://microsoft.github.io/language-server-protocol/
  23. http://code.visualstudio.com https://github.com/Microsoft/vscode/ http://www.typescriptlang.org/