写点什么

微软“木马计”:用你的技术,比你做的还好

  • 2018-12-11
  • 本文字数:2929 字

    阅读完需:约 10 分钟

微软“木马计”:用你的技术,比你做的还好

最近微软抛弃 Edge 浏览器,转投 Chromium 阵营的消息震动了业界,有人说浏览器大战终于结束、谷歌 Chrome 获得了最后的胜利;也有人担忧 Web 技术多样性遭遇打击,Chrome 会成为新 IE。但在这一片嘈杂的讨论中,没有人讨论微软为什么会这么做。这篇文章会分析一下这个问题,以及试图说服你:浏览器大战还未结束,微软还有机会!


要讨论微软为什么会转投 Chromium,让我们先从 TypeScript 谈起。

TypeScript:初试开源威力

TypeScript 是 JavaScript 的超集,是为了解决 JavaScript 过于灵活、难以在大型项目中使用而创立。自创立至今,TypeScript 已经被越来越多的人所接受,成为企业级 JS 项目的主流。


TypeScript 早在 2010 年就在微软内部使用,然后在 2012 年 10 月对外公开。到了 2014 年纳德拉上台,微软的风气为之一变,TypeScript 也迎来了另一个阶段:发布了 1.0 版本,从微软自己的代码托管平台 Codeplex 迁移到 GitHub,从而吸引更多的开发者。同时微软的计算机大神——Delphi、C#之父 Anders Hejlsberg 也开始领导 TypeScript 的研发,他还走到前台,到各地去为 TypeScript 布道。


我还记得 Anders 来到中国,在微软北研做的一场分享,在分享中他手写代码演示了 TypeScript 的种种特性,还说自己现在每天工作有很大一部分时间在 GitHub 上。他还介绍了微软新的研发理念,以开源为先。后来微软的种种动作都验证了这个说法。


TypeScript 对微软来说太重要了。在之前开源软件吞噬世界,而微软则在社区逐渐边缘化,人们谈论 Linux 和其它开源软件,而对微软的技术视而不见,甚至有的开发者在发布软件库的时候拒绝开发 Windows 版本。TypeScript 帮助微软重回软件开发的主流,重新赢得了开发者的认可。



(Source:The State Of JavaScript 2018)


在前不久 Stateofjs 发布的调查报告里,除了 JS 的官方语言 ES6,TypeScript 的支持率远远超过了其它 JS 的方言/近亲。


TypeScript 的成功也鼓舞了微软更多的拥抱开源,包括后面将.NET core及相关工具开源,甚至将 Azure 的文档也开源在 Github 上。在 2018 年的 GitHub 年度报告里,微软不仅在参与开源项目人数上名列前茅,还有多个项目进入最受欢迎的项目 Top 10.

VS Code:用你的技术还比你受欢迎

2014 年微软还有另一个大动作,就是宣布推出 Visual Studio Code,这对微软来说是另一个历史性的突破。


微软第一次将开发工具带到了 Linux 和 macOS 上,第一次将开发工具开源,同时也是第一次利用其它公司的核心技术开发自己的产品。这个核心技术就是现在在跨平台桌面开发中越来越受欢迎的 Electron(之前叫 Atom-Shell)。


Electron 是 GitHub 在打造自己的桌面端产品的过程中沉淀下来的,GitHub 基于它开发了自己的桌面客户端和代码编辑器 Atom。Atom 为代码编辑器领域吹进了一股新风,并对传统的代码编辑器 Sublime Text 等形成了强烈的冲击。


微软的 Visual Studio 号称“宇宙第一 IDE”,其强大毋庸置疑。它适合 C++、C#等静态语言的开发,但越来越多的编程语言如 JavaScript、Python、PHP 等青睐使用轻量级的代码编辑器来进行开发。为了应对这股潮流,2015 年微软推出 Visual Studio Code,但出人意料的是,微软在 VS Code 使用了 GitHub 的开发框架。


微软不是没有能力推出自己的开发框架,并且当时的 Atom-Shell 也才推出一年多尚显稚嫩,但这次稍显冒险的行为,为微软赢得丰厚的回报:发布仅仅三年之后,VS Code 成为开发者最喜欢的代码编辑器。



(Source:StackOverflow Developer Survey Results 2018)


VS Code 是如此受欢迎,它甚至都不需要微软的开发者们到处去布道。这中间有一件趣事:极客 时间曾联系 VS Code 团队的工程师吕鹏,让他来开设一个付费的课程,课程本身不贵,作者既布道了这个编辑器又从劳动中获得收益,但作者却担心被人认为靠公司项目敛财而将课程下线了。在短短不到一周的上线时间内,课程就有几千人购买,足以见得 VS Code 受欢迎的程度。


如果说 TypeScript 代表着对开源的拥抱,VS Code 既开源又使用别家技术所以代表着开放,既然微软已经在这两个项目上验证了开源和开放的威力,那么为什么不在其它的项目上复用已有的经验呢?

新 Edge:复用已有成功经验

微软 Edge 团队在 GitHub 上发布了一篇文档,解释了为什么 Edge 是复用上述经验的一个良好的目标:


  • 早在一年前移动端的 Edge 浏览器已经使用其它平台的技术构建。这并不出奇,苹果规定浏览器需基于自家技术开发,连 Chrome 到了 iOS 上也得乖乖的用 WebKit。

  • Edge 本身使用了一些开源技术,如 ANGLE、Web Audio、Brotli 等。

  • 之前微软帮助 Chromium 在适配 ARM 平台时已经做了一些工作,微软发现,第三方浏览器在提升 Windows 用户体验、性能、降低功耗等方面并不上心,为了给终端用户更好的体验,微软有必要去治理它们的源头,其中最主要的就是 Chromium。


当然,还有一条微软不好意思说但外人看的很明白的点:Edge 之前在调研中市场覆盖率仅占 4%左右,这样下去什么也不做才真会默默死掉,还不如掀桌子重来。


当你看明白了微软正在 Edge 上复用它们开源与开放的经验的时候,也就知道我为什么会说浏览器大战还没有结束了。


大家对于 Web 技术多样性的担忧暂时是没有必要的,微软在浏览器内核的更上游——Web 标准上正在投入更大的力量参与,具体就体现在微软会更多的参与到 W3C 和 WHATWG 的事务中去。


如果谷歌无视 Web 标准一意孤行,到时候微软熟悉了 Chromium 的开发之后,将有能力从 Chromium 创建分支,这也是开源允许的做法。


Edge 更换底层平台,毫无疑问影响深远,而这么做也给微软带来新的机会:


  • Edge 将迎来 Chromium 平台上量多质优的浏览器插件,从而大大增强 Edge 的功能。

  • 我们曾报道过微软正在研发针对 ChromeOS 上网本的 Windows Lite 版本,这个版本将主要支持 PWA 和 UWP 应用,通过采用 Chromium,微软可以更好的支持谷歌推出的 PWA,甚至参与到 PWA 的研发设计当中。

  • 通过将微软账户集成进 Chromium 里,微软也可以打造自己围绕浏览器的生态,到时再通过一个迁移工具一键将 Chrome 的各种设置和插件移到 Edge 上,那还不是美滋滋。


所以 Edge 转投 Chromium 不但不意味着浏览器大战的结束,反正还意味着未来还可能再起波澜!

谷歌,小心微软“木马计”

大公司通常容易患上一种 NIHS 综合征(Not Invent Here Syndrome),具体表现为如果哪项受欢迎的技术不是自己的,那么一定要做一个和它类似的。微软也曾经是这一症状的患者,在历史上,它创建了类比于 JavaScript 的 JScript、类比于 Flash 的 Silverlight,毫无疑问,这些全都失败了。


一旦抛弃了这个症状,微软突然发现自己可以发挥真正的实力:在开发 Windows、Office、Visual Studio 期间积累的丰富的经验技术和对用户体验的理解。


使用别家的技术,然后比别人做的好,这目前是微软的独家本领。这种行为就像特洛伊木马,进入别人腹地颠覆对方。而且让对方无奈的是,这种行为甚至无从防御,这些都是开源规则允许甚至是鼓励的,只能眼睁睁的看着对方超过自己。


当然,前两次成功不一定能证明接下来也一定成功。特别是 Edge 与对手相差悬殊,想要赶超其难度超乎想象。


总之,未来的浏览器领域的竞争仍然充满变数,谷歌暂时领先了,但也不能躺在功劳簿上打盹,毕竟,IE 的前车之鉴就在前面,而微软还没有放弃。


2018-12-11 17:295788
用户头像

发布了 164 篇内容, 共 110.6 次阅读, 收获喜欢 392 次。

关注

评论 2 条评论

发布
用户头像
Visual studio code 也用了 chrome 的V8js引擎了吧?所以不只是 github 的 electron
2018-12-16 08:20
回复
没有更多了
发现更多内容

SchedulerX 如何帮助用户解决分布式任务调度难题?

阿里巴巴云原生

阿里云 云原生 公有云 SchedulerX

JAVA 那些事 - 聊聊那些易混淆的概念:JVM/JRE/JDK,openJDK/oracleJDK,JAVA SE/JAVA EE/Jakarta EE

明哥的IT随笔

jdk Openjdk Java EE

技术人聊开源:这并不只是用爱发电

SOFAStack

开源

火山引擎 MARS-APMPlus X 美篇 | 形成应用性能全面监控,大幅提升APP稳定性

字节跳动终端技术

字节跳动 APM 性能监控 应用性能监控产品 火山引擎MARS

如何实现一个人管理1000个主播?

优秀

低代码 直播带货, 主播

解构流存储 — Pravega,与 Flink 构建端到端的大数据流水处理线

Apache Flink

大数据 flink 开源 编程 实时计算

AI生明月,万里共文心

脑极体

GPU在Kubernetes中的使用与管理 | 社区征文

大菠萝

新春征文

数据分析实际案例之:pandas在泰坦尼特号乘客数据中的使用

程序那些事

Python 数据分析 pandas 程序那些事 2月月更

FinClip 的 2021 与 2022

FinClip

产品设计与思考

11种绕过CDN查找真实IP方法

喀拉峻

网络安全

一个cpp协程库的前世今生(二十六)共享栈

SkyFire

c++ cocpp

车联网平台搭建从入门到精通 01|车联网场景中的 MQTT 协议

EMQ映云科技

车联网 物联网 通信 mqtt 平台搭建

Web Components 系列(八)—— 自定义组件的样式设置

编程三昧

前端 组件化 2月月更 WebComponent

云效Flow如何实现阿里云ECS多环境发布

阿里云云效

阿里云 运维 云原生 软件开发 研发

MySQL RC事务隔离级别的实现

JavaEdge

2月月更

《MySQL入门很轻松》第4章:数据表的创建修改删除

乌龟哥哥

数据库 2月月更

恒源云(GpuShare)_AIphaCode是否能取代程序员?

恒源云

深度学习 AI transformers

使用Perf和FlameGraph进行系统性能分析

wong

flamegraph perf

Go 语言入门很简单:基准测试

宇宙之一粟

Go 语言 2月月更

性能分析之用户登录TPS低以及CPU被打满问题分析

zuozewei

性能分析 2月月更

网络安全kali渗透学习 web渗透入门 DDOS的原理和防护

学神来啦

[建造者模式实战]如何用JAVA实现一个基于POI的复杂表格导出工具类?

山河已无恙

Java 2月月更

《新程序员》杂志|李鹏辉谈开源云原生消息流系统

Apache Pulsar

开源 架构 云原生 中间件 Apache Pulsar

K8s Ingress Provider 为什么选择 MSE 云原生网关?

阿里巴巴云原生

阿里云 Kubernetes 容器 微服务网关 云原生网关

Spring Boot Serverless 实战系列 | 性能调优

阿里巴巴云原生

spring 阿里云 Serverless 云原生 框架

跨平台应用开发进阶(一) :走近 uni-app

No Silver Bullet

uni-app 跨平台 实战 2月月更

独家交付秘籍之招式拆解(第一回)

阿里巴巴云原生

阿里云 云原生 应用交付

网络安全之小程序抓包渗透测试流程

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

【架构师训练营】模块七作业

樰巳-堕~Horry

架构实战营 「架构实战营」

微软“木马计”:用你的技术,比你做的还好_开源_徐川_InfoQ精选文章