<<

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 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, editor, many languages code understanding

Debug Build Integrated many build tools (tasks) many 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 – OSS in Action

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 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. 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, / 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