the journey of visual studio code - goto blog · 2013 meanwhile microso; changes ... visual studio...

47
The Journey of Visual Studio Code Erich Gamma

Upload: leduong

Post on 15-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

The Journey of Visual Studio Code

ErichGamma

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

RunonWindows RuneverywhereEditinVisualStudio UseyourfavoriteeditorBlackboxcompilers OpenLanguageServiceAPIsProprietary OpenSource

Hacker News: Microso; “Hit List”

h@ps://hn.algolia.com/?query=MicrosoH

Pivotor

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/fastkeyboardcenteredfile/foldersmanylanguagesmanyworkflows

projectsystemscodeunderstanding

debugintegratedbuild

File>New,wizardsdesigners

ALMintegraVonplaWormtools

...

lightweight/fastfile/folders withprojectcontextmanylanguageskeyboardcenteredcodeunderstandingdebugtaskrunning

Inside Visual Studio Code – OSS in AcGon

Electron,NodeTypeScriptMonacoEditor

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

OpVonalstaVctypes–be@ertooling:IntelliSense,RefactoringBe@erAPIsdocsMoresafety

deletethis.markers[range.statMarkerId];//startMarkerId

Usefeaturesfromthefuture(ES6,ES7)today

Growing the Code

VS Code Preview – April 2015

Extensions

Eclipse

Everythingis…...apluginwithcontribuVons…implementedinJava…runsinasingleshell/window

Eclipse Plug-ins

Extension isolaGon ControlledextensibilityJavaScriptorTypeScriptReusenodemodulesAPI:vscode.d.tsExtensiondescripVon:package.json

MainProcess

IPC

ExtensionHost

ExtensionHostRP

C

ExtensionHost

Node Renderer process

Language API

Language API – Providers

EditorregisterHoverProvider()…

ProviderprovideHover()…

DEMO: Extension Development

Extensions, Extensions, Extensions

1000+ extensions in the marketplace

Language/Debug services

RPC

ExtensionHost

Node Renderer process

JSON

PowerShell

OmniSharpServer

GoCLITools

Jedi

vs

racer

javac

TS/JSServer(*) code language protocol

Tool Protocols Request Response

definiFon ReturnsthefilelocaVonofthesymbolatthegivenfilelocaVon

references ReturnsthefilelocaVonsthatreferencethesymbolatthegivenfilelocaVon

compleFons ReturnspossiblecompleVonsatagivenfilelocaVon

symbolDetails ReturnatypeinformaVonanddocumentaVonforthesymbolatagivenfilelocaVon

format ReturnseditinstrucVonstoformatafile

outline ReturnslistofnavigaVontargetsforaparVcularfile

open NoVfiestheserverthattheeditorhosthasopenedafile

close NoVfiestheserverthatapreviouslyopenedfileisnowclosed

change NoVfiestheserverthatarangeofafilehaschanged

Request launch LaunchadebugeesetBreakpoints SetsmulVplebreakpoints

conFnue,next,stepIn,stepOut

ExecuVoncontrol

stackTrace ReturnsthestacktracefromthecurrentexecuVonstatevariables ReturnsthechildrenofallvariablesgivenavariablereferenceEvent stopped TheexecuVonofthedebugeehasstoppedexited Thedebugeehasterminated

DEMO: Sublime

November 2015: VS Code goes OSS

DevelopmentTeam Community

Transparency

Feedback

OSS - Transparency

Feedback Channels

QuesVons:StackOverflowIssues/PullRequests:GitHubFeatureVoVng:UserVoiceSenVment:Twi"erMSFTFTEsusetosamechannels

Feedback Example - Accessibility

CollaboraVonwithGitHubonElectronaccessibility

h@ps://github.com/MicrosoH/vscode/issues/2108

More Feedback: Development Channels

DailyupdatesStability

VS Code OSS vs. VS Code Distro

VSCodeOSSEverybodycanbuildfromgithubrepoNotbrandedMITLicenseSupportedbyCommunity

VSCodeDistroBuildsonVSCodeMSbranded(logo,telemetry,gallery)MSStandardLicenseSupportedbyMS

Easy for Developers

VSCodeconsumes142OSScomponents,90+%arenodemodules

Varietyoflicenses,someVmesnoneWetrack,revieweachlicense,C/Rstatementsforeverydependency

NeedstoolingtogenerateandmaintainthirdpartynoVces

Easy for Contributors: CLA BOT

Summary

RunonWindows RuneverywhereEditinVisualStudio UseyourfavoriteeditorBlackboxcompilers OpenLanguageServiceAPIsProprietary OpenSource

Thank you!

@erichgamma@code