❤
Erich Gamma
Distinguished Engineer Daily Active Users of VS Code
Connect()
???
Christmas Holidays Envision new paradigms for online developer tooling that will be as successful as the IDE has been for the desktop Build a development experience in a browser … that makes you forget you’re in a browser
BEFORE AFTER
BEFORE
AFTER No expensive operations in the UI thread
Main Thread Web Worker
Model Mirror Model events events
mode.suggest(model.id, position).then((results) => { // render suggestions });
Minified code: an editor’s worst nightmare
What’s in 42 lines?
3409 spans (~tokens) 281 spans (~tokens) Eat your own dogfood
http
Meanwhile Microsoft 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: Microsoft “Hit List”
https://hn.algolia.com/?query=Microsoft
DEMO: .NET Core Development on OS X
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
https://github.com/Microsoft/vscode/ Focus on the Coding Inner Loop
Commit Edit Integrated Git Fast, lean editor, many languages code understanding
Debug Build Integrated debugger many build tools (tasks) many debuggers integrated errors 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 integration file/folders with project context platform tools many languages ... keyboard centered code understanding debug task running Inside Visual Studio Code – OSS in Action
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 and code rots over time.
Defining and documentation of APIs is difficult. Type information in comments are not checked TypeScript
Optional static types – better tooling: IntelliSense, Refactoring
Better APIs docs
More safety delete this.markers[range.statMarkerId]; // startMarkerId
Use features from the future (ES6, ES7) today DEMO: TypeScript support for JavaScript TypeScript 2.0
Non-Nullable Types
Async/await downlevel support
Improved typings acquisition https://github.com/Microsoft/TypeScript/wiki/Roadmap Extensions Inside Extensions Controlled extensibility
JavaScript or Extension Main Extension TypeScript ExtensionHost Process Host IPC RPC Host Reuse node modules Node Renderer process API: vscode.d.ts
Extension description: package.json DEMO: Extension Development Extensions, Extensions, Extensions
1000+ extensions in the marketplace Language/Debug services OmniSharp Server
PowerShell
Go CLI Tools
Jedi Extension RPC Host vs
Renderer process Node racer
javac
TS/JS Server (*) code language protocol JSON DEMO: Sublime November 2015: VS Code goes OSS Transparency
Development Community Team
Feedback OSS - Transparency Feedback Channels
Questions: Stack Overflow Issues/Pull Requests: GitHub Feature Voting: User Voice Sentiment: Twitter
MSFT FTEs use to same channels Feedback Example - Accessibility
Collaboration with GitHub on Electron accessibility
https://github.com/Microsoft/vscode/issues/2108 ASP.net Community Standups
https://live.asp.net/
https://live.asp.net/ Feedback
Many issues
Some great PRs
Stars 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 A large organization acts like a smaller organization
Transparency across projects, issues roadmaps
Contributions via Pull Requests across projects Easy for Developers
VS Code consumes 142 OSS components, 90+% are node modules Variety of licenses, sometimes none We track, review each license, C/R statements for every dependency
Needs tooling to generate and maintain third party notices Easy for Contributors: CLA BOT Microsoft ❤ Open Source Software
It is fun! (with the right tools and processes)
Thank you!
@erichgamma @code