The Journey of

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

hp

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

Proprietary Open Source

Hacker News: Microso “Hit List”

hps://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 integraon file/folders with project plaorm tools many languages ... keyboard centered code understanding debug task running

Inside Visual Studio Code – OSS in Acon

Electron, Node

TypeScript

Monaco Editor

It’s fun to program in JavaScript Compensating patterns for classes, modules and .

Refactoring JavaScript code is difficult! Code becomes read only

Defining and documentation of APIs is difficult. Type information in comments are not checked TypeScript

Oponal sta types – beer tooling: IntelliSense, Refactoring

Beer 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

Everything is…

... a plugin with contribuons

… implemented in

… runs in a single shell/window

Eclipse Plug-ins Extension isolaon Controlled extensibility

JavaScript or Extension Main Extension TypeScript Extension Host Process Host IPC RP Host Reuse node modules C Node Renderer process API: vscode..ts

Extension descripon: package. 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 definion Returns the file locaon of the symbol at the given file locaon references Returns the file locaons that reference the symbol at the given file locaon compleons Returns possible compleons at a given file locaon symbolDetails Return a type informaon and documentaon for the symbol at a given file locaon format Returns edit instrucons to format a file outline Returns list of navigaon targets for a parcular file Request launch Launch a debugee open Nofies the server that the editor host has opened a filesetBreakpoints Sets mulple break points close Nofies the server that a previously opened file is now closed change Nofies the server that a range of a file has changedconnue, next, Execuon control stepIn, stepOut

stackTrace Returns the stack trace from the current execuon state variables Returns the children of all variables given a variable reference Event stopped The execuon 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

Quesons: Stack Overflow Issues/Pull Requests: GitHub Feature Vong: User Voice Senment: Twier

MSFT FTEs use to same channels

Feedback Example - Accessibility

Collaboraon with GitHub on Electron accessibility

hps://.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, somemes none We track, review each license, C/ statements for every dependency

Needs tooling to generate and maintain third party noces 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