• Stars
    star
    2,828
  • Rank 16,089 (Top 0.4 %)
  • Language
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Microsoft Edge

Microsoft Edge and Chromium Open Source: Our Intent

Authors: Microsoft Edge Team Last Updated: 2018-12-06

Why this document

For the past few years, Microsoft has meaningfully increased participation in the open source software (OSS) community, becoming one of the world’s largest supporters of OSS projects. We are starting down a path to adopt Chromium open source in the development of Microsoft Edge on the desktop, becoming a larger contributor and user of its open source so that we can create better web compatibility for our customers and less fragmentation of the web for all web developers.

This document exists to clarify our thinking on how that work will proceed: we want to explain our plans and intentions related to Microsoft Edge and the Chromium open-source project. The audiences we think will find this document most relevant and useful are (a) the people working on Chromium as approvers/maintainers and leading that project (b) the companies and engineers who build other browsers and will be interested in the contributions we plan to make, and (c) the broader community of web developers, corporate IT managers and partners we work with on Windows and Microsoft Edge. And of course, we and all those audiences care primarily about the end-user, who is ultimately the audience this work is intended to benefit.

TL;DR

Working with open source is not new for Microsoft Edge. Our new mobile browser has been based on open source from its beginnings over a year ago. We’ve also used open source for various features of Microsoft Edge on the desktop (e.g. ANGLE, Web Audio, Brotli) and we’ve begun making contributions to the Chromium project to help move browsing forward on new ARM-based Windows devices. In that context, we have been thinking through plans to adopt the Chromium open source project in the development of Microsoft Edge on the desktop to create better web-compatibility for our customers and less fragmentation of the web for all its developers, and we’re now ready to move forward.

As part of this, we hope and intend to become a significant contributor to Chromium, in a way that can make not just Microsoft Edge - but other browsers as well - better on both PCs and other devices. We’ve written down our “OSS Principles for Microsoft Edge” below and “What Happens Next” to clearly outline our approach to contributions.

Our plan is to engage in a way that embraces the well-established open source model that’s been working effectively for years: meaningful and positive contributions which align with long-standing thoughtfully-designed architecture, collaborative engineering, and keeping in mind that we, together as a community, seek the best outcome for all people who use the web across many devices.

Microsoft and The Web Today

Our intent is profoundly informed by our context. Historically, Microsoft has focused on three primary constituencies: end-users, developers, and enterprises/organizations. These audiences have informed the investments we have made in Internet Explorer in the past, and now inform the investments we make in Microsoft Edge. As we have listened to these customers over the last few years, a consistent theme they echo is the increased complexity of their environments, and a desire for consistency, simplicity, reliability, compatibility.

We have effectively partnered with Google and other browser vendors over the years, first in the W3C and now even more closely through the WHATWG, to create common standards for the web platform to reduce this complexity and to improve the overall web experience. While browser vendors across the industry have made significant progress in aligning to these common standards, the underlying implementations and differing release schedules have created difficulties for our developers to fully benefit from the promises of the open web.

We see an opportunity now to move forward in a deeper way on a common compatible web platform that will serve Microsoft’s customers well and will provide mutual benefit for the larger web community while maintaining the marketplace benefits of competitive diversity in the browser ecosystem. Consider the following opportunities as we view them across our customer segments:

  • End-users - Although Microsoft Edge has very high web compatibility for both standards-based HTML and for capabilities added by highly-used browsers like Chrome, our unique web-platform codebase still faces occasional compatibility problems as web developers focus less on HTML standards and rationally focus on widely used platforms like Chrome to develop and validate experiences for their customers. While we work hard to make updates and fix these issues continuously, our implementation of Microsoft Edge as a component that ships solely on the same schedule as the full Windows operating system has slowed our ability to update, causing platform fragmentation and exposing compatibility gaps. We think greater use of open source software (OSS) can improve this experience for our end-users.

  • Outside the Microsoft Edge browser, users of other browsers on Windows PCs sometimes face inconsistent feature-sets and performance/battery-life across device types. Some browsers have had slower-progress to embrace new Windows capabilities like touch and ARM processors. As you know, we’ve recently started making contributions that provide these types of hardware support to Chromium-based browsers, and we believe that this approach can be generalized: we think we can help to accelerate the web and users’ experience of it by contributing new capabilities to Chromium open source for the benefit of all these browsers and users.

  • Developers – as the web has grown in usage across an ever-widening array of device-types, the complexity and overhead involved in testing web-sites have exploded. Since web developers - particularly those at small companies - need to test so many different systems, it’s nearly impossible to ensure that interesting sites will work well across all device types and all browsers. We hope to simplify this matrix for web developers by aligning Microsoft Edge web-platform with other Chromium-browsers and to provide meaningful, aligned capabilities on Windows that can be used by any browser.

  • Corporate IT - IT managers face the downstream-complexity of users with many different device types, using both new and old sites, on devices owned both personally and by the corporation. We see meaningful value in creating better web compatibility and an aligned web-platform across browsers for Corp IT, regardless of device platform.

What’s common across all these audiences is the two-sided benefit we believe we can bring them when we (a) engineer valuable new capabilities into a shared open-source project, for the benefit of multiple browsers, and (b) increasingly use that shared open-source ourselves in the browser we distribute at scale. We intend to do both of these.

Recent Investments in Web-focused Open Source

Over the last year, we’ve started to engage in the Chromium and WebRTC open source projects (among other OSS areas more broadly at Microsoft), and our efforts have been ramping up as we consider a wider range of device types. Some examples include…

  • Porting Chromium to ARM64: We’ve done significant work in collaboration with Google engineers to enable Chromium-based browsers to compile and run natively on Windows on ARM devices. Because of our engineering investment, Chromium-based browsers will soon be able to ship native implementations for ARM-based Windows PCs, which significantly improves their performance and battery life. This is a great example of us making investments in Chromium to move-forward the web experience across a range of browsers on these new types of PCs.

  • Enabling WebRTC to work for Windows UWP apps: For more than a year, we have been working on WebRTC for Universal Windows Platform (UWP). This offers developers a WebRTC solution for all our Windows 10 platforms, including desktop, Xbox, HoloLens/VR and IoT. Last week, we announced our agreement with Google to push the UWP fork of WebRTC Lib back to the WebRTC.org repo.

  • Improving ANGLE: In the past, we have made improvements to ANGLE’s D3D11 backend and improve its performance. More recently, we collaborated with Intel and the ANGLE team on additional improvements to make ANGLE the official backend for WebGL in Microsoft Edge.

We recognize that these are modest-but-still-meaningful examples of web-oriented open source contributions. Both have provided us with a valuable perspective on how we can collaboratively use and contribute to Chromium in a healthy way. Across Microsoft, our OSS expertise and focus has grown – and our web teams are excited to take these lessons and move the web experience for millions of people forward.

Microsoft Edge + open source: a new direction for Microsoft

Getting down to brass tacks ... we have put this document together to be transparent to relevant OSS contributors and partners about our intent.

Use of OSS in the Microsoft Edge Browser

While we’ve been consumers of Chromium open source for shipping our Microsoft Edge mobile browser and for some components of Microsoft Edge desktop, we’ve made the decision to move much more of Microsoft Edge desktop to use Chromium open source and to increase our contributions back to this community.

The key aspects of this evolution in direction for Microsoft Edge are:

  1. We will adopt Chromium as the web platform for Microsoft Edge desktop. Our desire here is to align Microsoft Edge’s web platform both (a) with web standards and (b) with other Chromium-based browsers, for improved compatibility and a simpler test-matrix for developers.

  2. We will evolve the Microsoft Edge app architecture, enabling distribution to all supported versions of Windows including Windows 7 and Windows 8, as well as Windows 10. We will also bring Microsoft Edge to other desktop platforms, such as macOS. Improving the web experience for end-users (better compatibility) and developers (less fragmentation) requires a consistent web-platform as widely available as possible. To accomplish this, we will use Chromium’s cross-platform app-technology along with a change in our distribution model, so that the Microsoft Edge experience and web-platform become available across all supported operating systems.

  3. We will offer our Windows platform expertise to improve the experience of all Chromium-based browsers on Windows. Our philosophy of greater participation in Chromium open source will embrace the contribution of beneficial new tech, consistent with some of the work we described above. We recognize that making the web better on Windows is good for our customers, partners and our business – and we intend to actively contribute to that end. We welcome the opportunity to partner with the Chromium community in the areas of battery life, touch, accessibility, security, and other areas of mutual interest.

Our contributions: Principles and expectations

A key goal in providing this document to the teams and people who are already immersed in Chromium OSS is to indicate how we plan to contribute and to kick-start the engineering planning needed to bring valuable new tech into Chromium browsers.

We're excited to engage more deeply with the broader Chromium project. This has been a heavily-weighed decision and one that we believe is the right next step. That said, we're taking that step in the spirit of learning. We know we have a lot to learn as we increase our use and contributions to Chromium, and we look forward to engaging and contributing back to the broader community in a collaborative way. We are looking forward to evolving the nature and scope of our involvement over time.

Our OSS principles for Microsoft Edge

  1. We are making this decision for the long term. We expect our engineers to learn and over time become experts in the Chromium project and grow into active and responsible members of the community. We are eager to increase our contributions to the Chromium project and will continue to maintain any contributions we make.

  2. When seeking improvements in the web platform, our default position will be to contribute. We are focused on delivering a world-class browser with Microsoft Edge through its differentiated user experience features and connected services, but where new platform capabilities are concerned, we will seek a ‘rising tide that floats all boats’. We will get started with bug fixes and meaningful contributions in such areas as ARM64 support, accessibility, security, touch input and power enhancements on Windows.

  3. We recognize and will respect the architecture requirements and engineering approach that are intrinsic in web open-source projects and have made Chromium successful. There are many aspects that have governed Chromium OSS and other projects: multi-device support, multi-OS support, rigorous real-time engineering, etc. Although our company has historically had a focus on Windows PCs and we believe we can make contributions that improve browsers on Windows, we also understand that web OSS projects embrace a wide range of device-types, including Android, and that contributions must accommodate this device diversity. We will contribute in a way that is consistent with the architectural design that meets Chromium’s cross-platform and cross-device needs.

  4. We believe the evolution of the open web is best served though the standards communities and the open web benefits from the open debate from a wide variety of perspectives. We will remain deeply and vigorously engaged in the standards discussions in the context of the W3C, ECMA and the WHATWG where the perspectives of vendors developing competing browsers and the larger web community can be heard and considered.

Contribution: Initial Areas of Focus

As we’ve progressed our OSS work and considered the places where our engineering expertise can make the biggest difference for users and developers, we’ve put together an initial list of contribution “areas of focus”.

We’d like to underscore that we view this list simply as the starting point - some areas where we can learn/practice together and create meaningful value in the Chromium codebase for all its consumers.

  • ARM64 - Our plans here are to continue/finish the porting work that brings the Chromium codebase to support for ARM-64 and thus browsers can be shipped which support these devices natively.

  • Accessibility - To serve the needs of all our customers, we intend to build upon the accessibility of the Chromium codebase by adding Microsoft UI Automation (UIA) interfaces to support Narrator and other assistive technologies on Windows, integrating with Windows Ease of Access settings such as high contrast and caption styling, improving controls accessibility, and supporting caret browsing.

  • PC-hardware evolution for modern input types (e.g. touch) - We can help improve desktop touch, gesture recognition and scroll/panning smoothness, particularly on newer, more modern Windows devices.

  • Security - It is, of course, of paramount importance to all browser vendors that web users are kept as safe and secure as possible. In support of this shared goal, we are looking forward to partnering closely with the Chromium Security team and contributing our experience with building secure software in general, and our expertise with the Windows platform, in particular.

What Happens Next

This is a big step for Microsoft, for the Microsoft Edge team, and we recognize it will be a big step for the Chromium project as well. We are enthusiastic about the benefit we believe this will bring to the larger web community. We are eager to begin engaging with our counterparts at Google and the other contributors to the Chromium project, and in the Chromium project generally, on how we can move forward together on a common web platform. At the same time, we recognize the value of competition and intend to bring-to-life our best vision for a Microsoft Edge browser that builds on Chromium open source via differentiated user experience features and connected services.

We already have positive working relationships with many Chromium contributors based on our work in the standards bodies and in prior shared engineering efforts. We look forward to building on those relationships and learning-as-we-go how we can best contribute to this implementation of the open web.

To provide a more specific sense of what actions we’ll take with and following this memo, here’s the short-list:

  1. We will start by contacting the engineering owners of various parts of the Chromium project to engage on how we can begin contributing in the areas listed above. This includes Google as well as other companies.
  2. We will inform other key partners about this evolution in our Microsoft Edge strategy: e.g., WHATWG, the W3C… as well as our OEM partners, high-interaction development partners and others.
  3. We’ll make a public announcement via blog post so that the external community of people interested will have a transparent view of our strategy change.
  4. We’ll post this document to GitHub so any interested developer or web-community member can read about our plans directly.

We invite your comments, advice, and feedback as we begin to engage with you on the Chromium project!

More Repositories

1

MSEdgeExplainers

Home for explainer documents originated by the Microsoft Edge team
HTML
1,308
star
2

magic-mirror-demo

A ⚡Magic Mirror⚡ powered by a UWP Hosted Web App 🚀
JavaScript
1,231
star
3

static-code-scan

Run this quick static code scan on any URL to check for out-of-date libraries, layout issues and accessibility.
JavaScript
1,047
star
4

WebView2Samples

Microsoft Edge WebView2 samples
C++
868
star
5

JSBrowser

🌲 A web browser built with JavaScript as a Windows app
JavaScript
795
star
6

WebGL

Microsoft Edge WebGL Implementation
C++
714
star
7

Status

This repository tracks the roadmap for the Microsoft Edge web platform. This data is used on https://status.microsoftedge.com/ to provide implementation status and forward-looking plans for web standards in Edge and other browsers.
JavaScript
534
star
8

WebView2Feedback

Feedback and discussions about Microsoft Edge WebView2
449
star
9

Demos-old

Open source and interoperable demos for Microsoft Edge Dev site
JavaScript
438
star
10

WebView2Browser

A web browser built with the Microsoft Edge WebView2 control.
JavaScript
410
star
11

MicrosoftEdge-Documentation

Microsoft Edge documentation
239
star
12

Demos

Web pages and apps used to demo various DevTools, PWA, WebView, Extensions, and Web Platform features of Microsoft Edge
JavaScript
212
star
13

JsDbg

Debugging extensions for Microsoft Edge and other Chromium-based browsers
JavaScript
177
star
14

DevTools

Feedback and discussions about Microsoft Edge Developer Tools
HTML
154
star
15

Sudoku

In this demo we take the well-known game of Sudoku, and demonstrate how developers can use HTML5 and JavaScript to create an efficient algorithm to solve these puzzles. The algorithms draw heavily on the Chakra engine’s support for ECMAScript 5 standard array operations to rapidly solve many Sudoku games. You can also manually solve Sudoku puzzles.
HTML
149
star
16

MicrosoftEdge-Extensions-Demos

JavaScript
134
star
17

pushnotifications-demo

Demo for cross browsers push notifications with server side code
JavaScript
119
star
18

WebView2Announcements

Subscribe to this repo to be notified of Announcements and changes in Microsoft WebView2 controls.
111
star
19

generator-appx

Yeoman generator for building websites and Windows 10 Apps
JavaScript
90
star
20

webauthnsample

JavaScript
85
star
21

dev.microsoftedge.com-vms

Scripts used to generate the free VMs available at https://dev.microsoftedge.com
PowerShell
81
star
22

edge-launcher

A simple command line exe to launch Microsoft Edge at a URL.
C++
78
star
23

BrowserEfficiencyTest

BrowserEfficiencyTest is a Selenium WebDriver based web browser test automation project.
C#
65
star
24

css-usage

This script is used within our Bing and Interop crawlers to determine the properties used on a page and generalized values that could have been used.
JavaScript
65
star
25

EdgeWebDriver

Feedback and discussions about WebDriver for Microsoft Edge
57
star
26

enterprise-mode-site-list-portal

C#
52
star
27

Gamepad-Sample

A basic sample on how to use the W3C GamePad API across browsers.
JavaScript
52
star
28

pushnotifications-demo-aspnetcore

Demo for cross-browser push notifications with ASP.NET Core server side code
C#
46
star
29

A11y

Automated testing for HTML5Accessibility.com
C#
39
star
30

hwa-cli

Command-Line Interface for converting Windows Hosted Web Apps locally and remotely
TypeScript
31
star
31

webauthn-polyfill

Polyfill that maps the Web Authentication API on top of Edge preliminary implementation.
JavaScript
30
star
32

WebAppsDocs

Windows 10 web apps and frameworks documentation
HTML
30
star
33

Elevator

Elevator is a utility that allows other programs to collect traces through Windows Performance Recorder.
C#
28
star
34

DevToolsSamples

A collection of samples from Edge Developer Tools
JavaScript
22
star
35

webpayments

Polyfill to map Apple Pay APIs to the latest spec for Web Payments.
22
star
36

APICatalogData

This project contains the data for https://aka.ms/apicatalog, a tool to visualize and analyze the API overlap between standards specifications and support across browsers.
15
star
37

edgevr

Edge
HTML
15
star
38

appx-starter

JavaScript
15
star
39

fps-emitter

Measure the FPS of a page and emit it whenever it updates. Designed for the browser.
JavaScript
15
star
40

videotest

Video streaming battery rundown test methodology
CSS
14
star
41

pan-tool

A tool that injects touch input on the screen. It sends pointerdown, pointerupdate and pointerup to simulate pan, scrolling and fling gestures.
C++
14
star
42

wptest

JavaScript
14
star
43

serviceworker-demo

Service Worker demos
JavaScript
13
star
44

hwa-starter

Everything you need to get started building a Windows Universal Hosted Web App.
HTML
13
star
45

WebOnPi

Home application that comes pre-loaded on the #WebOnPi project
C++
13
star
46

hwa-server

Server for deploying HWAs in conjunction with the HWA-CLI tool.
TypeScript
12
star
47

hwa

PowerShell
12
star
48

edge-launch

Launcher for Microsoft Edge
JavaScript
12
star
49

CloudAppX

Cloudy with a chance of AppX
JavaScript
11
star
50

noin

Takes inline scripts and puts them into separate files
JavaScript
11
star
51

DevToolsDeviceList

Repo that contains the list of devices displayed in the emulation tool of the developer tools in Edge.
10
star
52

MicrosoftWebDriver-chocolatey

Microsoft WebDriver chocolatey package so installation is easier
PowerShell
9
star
53

SurfacePresenter

ISurfacePresenter API with D3D9 and D3D10/11, and contrasts with GDI
C++
8
star
54

css-usage-for-crawlers

This is where we will store our crawler specific code.
JavaScript
8
star
55

Sprache

A NuGet package for managing and using the Accept-Language header in C#
C#
7
star
56

generator-lasagnajs

Generator for the LasagnaJS architecture
JavaScript
6
star
57

A11yDevTool

This repo contains a mapping of UIA properties to ARIA properties that is used by the F12 developer tools in Edge.
6
star
58

CloudAppX-cli

JavaScript
6
star
59

timing-allow-origin-test

Demo of Timing-Allow-Origin with multiple origins
JavaScript
5
star
60

microsoftedge.github.io

4
star
61

edge-devtools-crash-analyzer-support

Enables un-minification of call stacks in the Microsoft Edge DevTools Crash Analyzer tool
TypeScript
4
star
62

.github

Default Community Health Files for the Microsoft Edge organization on GitHub
3
star
63

action-issue-to-workitem

GitHub Action that creates a Azure DevOps work item when an Issue is created
JavaScript
2
star
64

TopDeveloperNeeds

Web platform top developer needs dashboard
JavaScript
1
star