the journey of visual studio code - gotocon.com studio a tool that combines the code simplicity of a...
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