The Journey of Visual Studio Code
Erich Gamma Envision new paradigms for online developer tooling that will be as successful as the IDE has been for the desktop
2012 2011 Eat your own dogfood
h p
2011 2012 2012 2013 Meanwhile Microso Changes
Run on Windows Run everywhere
Edit in Visual Studio Use your favorite editor
Black box compilers Open Language Service APIs
Proprietary Open Source
Hacker News: Microso “Hit List”
h ps://hn.algolia.com/?query=Microso Pivot or Persevere? Visual Studio
A tool that combines the simplicity of a code editor withCode what developers need for the core code-build-debug-commit cycle editor IDE lightweight/fast project systems keyboard centered code understanding file/folders debug many languages integrated build many workflows File>New, wizards designers lightweight/fast ALM integra on file/folders with project context pla orm tools many languages ... keyboard centered code understanding debug task running
Inside Visual Studio Code – OSS in Ac on
Electron, Node
TypeScript
Monaco Editor
It’s fun to program in JavaScript Compensating patterns for classes, modules and namespaces.
Refactoring JavaScript code is difficult! Code becomes read only
Defining and documentation of APIs is difficult. Type information in comments are not checked TypeScript
Op onal sta c types – be er tooling: IntelliSense, Refactoring
Be er APIs docs
More safety delete this.markers[range.statMarkerId]; // startMarkerId
Use features from the future (ES6, ES7) today Growing the Code VS Code Preview – April 2015 Extensions Eclipse
Everything is…
... a plugin with contribu ons
… implemented in Java
… runs in a single shell/window
Eclipse Plug-ins Extension isola on Controlled extensibility
JavaScript or Extension Main Extension TypeScript Extension Host Process Host IPC RP Host Reuse node modules C Node Renderer process API: vscode.d.ts
Extension descrip on: package.json Language API Language API – Providers
Editor Provider registerHoverProvider() provideHover() … …
DEMO: Extension Development Extensions, Extensions, Extensions
1000+ extensions in the marketplace Language/Debug services OmniSharp Server
PowerShell
Go CLI Tools
Jedi Extension RP Host vs C Renderer process Node racer
javac
TS/JS Server (*) code language protocol JSON Tool Protocols
Request Response defini on Returns the file loca on of the symbol at the given file loca on references Returns the file loca ons that reference the symbol at the given file loca on comple ons Returns possible comple ons at a given file loca on symbolDetails Return a type informa on and documenta on for the symbol at a given file loca on format Returns edit instruc ons to format a file outline Returns list of naviga on targets for a par cular file Request launch Launch a debugee open No fies the server that the editor host has opened a filesetBreakpoints Sets mul ple break points close No fies the server that a previously opened file is now closed change No fies the server that a range of a file has changedcon nue, next, Execu on control stepIn, stepOut
stackTrace Returns the stack trace from the current execu on state variables Returns the children of all variables given a variable reference Event stopped The execu on of the debugee has stopped exited The debugee has terminated DEMO: Sublime November 2015: VS Code goes OSS Transparency
Development Community Team
Feedback OSS - Transparency Feedback Channels
Ques ons: Stack Overflow Issues/Pull Requests: GitHub Feature Vo ng: User Voice Sen ment: Twi er
MSFT FTEs use to same channels
Feedback Example - Accessibility
Collabora on with GitHub on Electron accessibility
h ps://github.com/Microso /vscode/issues/2108 More Feedback: Development Channels
Stability Daily updates
VS Code OSS vs. VS Code Distro
VS Code OSS VS Code Distro
Everybody can build from github repo Builds on VS Code
Not branded MS branded (logo, telemetry, gallery)
MIT License MS Standard License
Supported by Community Supported by MS
Easy for Developers
VS Code consumes 142 OSS components, 90+% are node modules Variety of licenses, some mes none We track, review each license, C/R statements for every dependency
Needs tooling to generate and maintain third party no ces Easy for Contributors: CLA BOT Summary
Run on Windows Run everywhere
Edit in Visual Studio Use your favorite editor
Black box compilers Open Language Service APIs
Proprietary Open Source Thank you!
@erichgamma @code