0% found this document useful (0 votes)
27 views47 pages

The Journey of Visual Studio Code

Uploaded by

zhangk1986
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views47 pages

The Journey of Visual Studio Code

Uploaded by

zhangk1986
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

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=MicrosoH
Pivot
or

Persevere?
Visual Studio
Code
A tool that combines the simplicity of a code
editor with 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 integraVon
file/folders with project context plaWorm tools
many languages ...
keyboard centered
code understanding
debug
task running
Inside Visual Studio Code – OSS in AcGon

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
OpVonal staVc 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 contribuVons

… implemented in Java

… runs in a single shell/window


Eclipse Plug-ins
Extension isolaGon
Controlled
extensibility

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

Extension descripVon:
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

JSON TS/JS Server


(*) code language protocol
Tool Protocols
Request Response
definiFon Returns the file locaVon of the symbol at the given file locaVon
references Returns the file locaVons that reference the symbol at the given file locaVon
compleFons Returns possible compleVons at a given file locaVon
symbolDetails Return a type informaVon and documentaVon for the symbol at a given file
locaVon

format Returns edit instrucVons to format a file


outline Returns list of navigaVon targets for a parVcular file
Request
launch Launch a debugee
open NoVfies the server that the editor host has
setBreakpoints opened
SetsamulVple
file break points
close NoVfies the server that a previously opened file is now closed
change NoVfies the server that a range of a filenext,
conFnue, has changed
ExecuVon control
stepIn, stepOut

stackTrace Returns the stack trace from the current execuVon state
variables Returns the children of all variables given a variable reference
Event
stopped The execuVon 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
QuesVons: Stack Overflow
Issues/Pull Requests: GitHub
Feature VoVng: User Voice
SenVment: Twi"er

MSFT FTEs use to same channels


Feedback Example - Accessibility

CollaboraVon with GitHub on


Electron accessibility

h@ps://github.com/MicrosoH/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, someVmes none
We track, review each license, C/R
statements for every dependency

Needs tooling to generate and


maintain third party noVces
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

You might also like