写点什么

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

  • 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:295877
用户头像

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

关注

评论 2 条评论

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

架构师训练营 - 第二周 - 学习总结

韩挺

架构师训练营第二周作业

sunnywhy

架构师训练营-第二章课程总结-软件设计&面向对象

而立

极客大学架构师训练营

理解持续测试,才算理解DevOps

禅道项目管理

DevOps 测试 持续集成

在滴滴和字节跳动干了 2 年后端开发,太真实…

程序员生活志

程序员 字节跳动 后端 滴滴 开发

依赖倒置原则

Coder的技术之路

架构师训练营 - 第二周 - 作业

韩挺

架构师训练营 - 软件设计原则

Pontus

极客大学架构师训练营

架构师训练营第二周作业

好名字

极客大学架构师训练营 作业

Spring Web MVC 依赖倒置原则分析

鲁米

【架构训练营】第二周作业

Mr.hou

极客大学架构师训练营

第二周学习总结

武鹏

第二周作业

changtai

极客大学架构师训练营

架构师训练营——第二周作业

jiangnanage

【架构训练营】第二周总结

Mr.hou

极客大学架构师训练营

Week2-总结

TiK

极客大学架构师训练营

架构设计篇之领域驱动设计(DDD)

小诚信驿站

领域驱动设计 DDD 架构设计 架构设计原则 刘晓成

Week 02 学习总结

卧石漾溪

极客大学架构师训练营

第二周作业

芒夏

极客大学架构师训练营

第二周总结

芒夏

极客大学架构师训练营

架构师训练营第二周总结

sunnywhy

架构师训练营-作业-2-架构设计原则

superman

永远招聘:打造高绩效团队的最佳姿势

伴鱼技术团队

企业文化 管理 团队建设 绩效 团队组织

深入理解MySQL索引

Simon郎

MySQL 索引

英特尔发布提升计算效率的多种新方法:将在机器人、增强现实等领域广泛应用

最新动态

Week2-作业

TiK

极客大学架构师训练营

java静态代理与动态代理

张瑞浩

架构师训练营 - 软件设计原则

Pontus

极客大学架构师训练营

CVPR 2020 六小时教程上线!新视角生成的前沿方法

神经星星

人工智能 学习 计算机视觉 模式识别 教程

带功能隔离的cache设计

Coder的技术之路

嵌入SpreadJS,赋能计量器具检定信息化

葡萄城技术团队

SpreadJS 计量检定

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