微软员工揭秘 Linux 子系统研发全过程
(给程序员的那些事加星标)
转自:编译:CSDN-风车云马,英文作者:Tara Raj
2016年8月,我从弗吉尼亚大学计算机科学与技术专业毕业后加入微软,在微软的整个职业生涯都在为Linux开发工具。其实我上大学时几乎只使用Linux操作系统,大部分编程都是用C++编写的。
当时我的学习经历似乎不太适合微软,但赶上微软正在做企业改革,所有操作系统都很重要,包括Linux。
到微软的第一份工作是加入Linux的SQL数据库开发团队,该团队特别邀请我把以往的Linux经验发挥出来。我刚刚毕业,一听到自己的开发经验能为团队带来价值时,我真感到受宠若惊。
几年前,微软想在Linux上开发SQL Server只是一个玩笑,然而到2016年,这个想法却变成了现实。在他们发布第一个版本后不久,我就加入了这个团队,并致力于改进用于SQL Server的管理工具——特别是管理Linux服务器和应用程序。要在Linux上正常运行SQL Server,需要以Linux操作系统的工作方式来设计命令行工具。
我有幸为Linux的SQL Server设计第一个版本的GUI工具,刚开始采用了Visual Studio代码(现在叫Azure Data Studio代码),它不受操作系统的限制,可用于所有类型的SQL Server开发。
在微软的第一年我学到了很多,包括项目管理的流程和方法,如何将技术实践和商业思维结合起来。
2017年8月,我加入了Windows 的Linux子系统(Windows Subsystem for Linux,简称WSL)研发团队,并担任项目经理。我第一次听说WSL是在2016年的微软Build大会上,当时它被宣布为“Bash on Ubuntu on Windows”。
当时Channel9一经发布就迅速走红,淹没了Build 大会上的其他许多报道。《华尔街日报》记者凯文·加洛(Kevin Gallo)对Build大会做了一个简短的视频介绍,虽然只占用了整个主题演讲的两分钟,但观众和媒体都非常激动。Channel9团队曾一度担心WSL视频的巨大点击量是不是DDoS攻击。微软在Windows系统内运行Ubuntu引起了巨大的轰动。
Windows Console团队是第一个确定客户对WSL有需求的团队。当他们深入客户调研时,一次又一次地听到人们希望在Windows上有类似Bash的东西。最终团队意识到:既然可以让Bash本身在Windows上运行,为什么还要开发类似Bash的东西呢?
其实为Linux创建Windows子系统并不容易做到。团队需要对Windows内核有深入的了解,还要研究一项微软名为Pico process的技术。恰好有趣的是,Pico process也是在Linux上实现SQL Server的技术。简单的说,WSL使Linux编译的二进制文件在Windows NT内核上运行成为可能,而无需重新编译应用程序或使用虚拟机。
Ubuntu是WSL中第一个可用的Linux版本。开始我们联系了Canonical公司的开发人员,看看他们是否愿意提供帮助。他们对这个WSL想法很有热情,后来Ubuntu可以在Windows商店(Windows Store)中使用。在Windows商店中存在多种Linux版本的应用(至少有六种),是不是觉得很有趣,你见过多少自家的应用商店有其他操作系统?
我们编写的代码是兼容Linux的内核系统调用(syscall),将Linux进程与底层Windows内核连接起来。Linux中大约有340个系统调用,问题是先实现哪个系统调用?与所有操作系统版本一样,新的系统调用会与新的操作系统版本一起添加,但是为了保持向后兼容性,不会删除旧的调用。当初涌现了一波syscall浪潮,WSL团队也开始深入理解syscall用户需要什么。
要实现什么样的syscalls,首先要了解哪些人会使用它。Build公告的主要目的是希望人们使用WSL并提供反馈。任何人都可以通过Windows内部程序获得WSL。也许你认为只有Windows爱好者才会对内部程序感兴趣,但现在有超过1000万的订阅者,他们对各种各样的东西都感兴趣,比如游戏、蓝牙和WSL。
对Windows中运行Bash感兴趣的还有Web开发人员,他们试图构建运行在Linux服务器上的Web应用程序,可采用一系列Bash命令。此外,如果您查找构建Web应用程序的帮助,比如Stack Overflow,其大多数示例代码只运行在Linux上——而你正在Windows机器上进行开发,这让人感到很无奈。对于Web开发人员来说,只好迁移到Mac和macOS上,在那里运行代码。
在WSL进入Windows的初期,一位积极的WSL用户设法让XEyes作为GUI应用程序运行在WSL和X11上。XEyes所做的就是在屏幕上画一对卡通眼睛,跟着鼠标指针转。在成功演示时,所有的社交媒体都沸腾了!
我们想了很多收集用户反馈的方法。曾为WSL建立了一个UserVoice站点,上面已经收集了数百个想法和数千次投票。考虑到WSL的首批受众是Web开发人员,所以觉得GitHub很有作用。但是WSL并不是一个开源项目——在开源的GitHub上放置一个非开源项目似乎很奇怪。最后我们决定在GitHub上创建一个专门反馈和讨论相关问题的论坛,至今我们已经收到了关于WSL的数千个问题。
在 WSL GitHub repo 上会提交成千上万的问题,而WSL团队会审查每一个问题,通过分析和评估,然后决定要做什么。如果需要编写新代码来实现某个特性或修复某个问题,那么会将任务添加到WSL项目计划中,开发周期可以短至几周。
这样,人们所希望的WSL功能或遇到的问题通过UserVoice或GitHub得到了有效快速的解决,构建WSL社群也是整个项目创建过程的关键部分。
当我作为WSL的项目经理时,我的目标是让WSL超越beta版。人们抱怨最多的是兼容性和性能。在我看来这些问题提得很好,这恰恰说明他们在认真使用我们的产品,因为在产品初期我们可能只关心系统一些大的方面。所以,为了让人们用WSL做得更多、更快,我们还有很多工作要做。
随着WSL功能的扩展和完善,我们将WSL带向其他开发系统及其开发人员——而不仅局限于Microsoft生态系统的开发。当我们参加PyCon和OSCON这样的活动时,那里的开发人员看到微软员工时都很惊讶。当我们告诉他们在微软开发工具上运行Linux时,他们都表示怀疑。然后我当场演示了SQL Server、WSL和Visual Studio代码。
为了打消他们的疑虑,我让他们自己试一试。当这些开发人员开始运行他们自己的命令、脚本和代码时,总是反应激动:“等等,这实际上是Linux。你是怎么做到的?我怎么会不知道呢? 这很酷。”
针对有关WSL兼容性和性能的抱怨,我们已经在一个新版本中解决了这个问题——WSL 2。它在Windows中提供了Linux内核并将性能提升了20倍。今天,WSL已经经过了beta测试并升级到了版本2。你可以在公告博客上了解更多。
我还与微软的其他团队合作,希望WSL能与其他产品很好的结合。例如Visual Studio Code,它是JavaScript和Node.js中最流行的文本编辑器。使用Visual Studio代码的开发人员可以从WSL中获益良多。主要的优势在于使运行在WSL中的Node.js代码调试变得更容易。开发人员可以在运行WSL的Windows计算机上编写Linux版本的Node.js并进行调试。
当我们为Node.js提供这样的功能时,C++、Python和其他语言也有类似的需求。我开始对这种集成非常着迷,这为Linux开发带来了全新的体验。我现在着手c++代码的Visual Studio远程开发,我们会在今年的PyCon上线WSL的c++扩展功能。
尽管我在微软工作的时间不长,但我为Linux开发工具感到兴奋——从数据库到操作系统再到 IDES。我愿意继续传播对Linux的热爱,并创建让全世界的开发人员都感到满意的工具。
英文:https://medium.com/microsoft-open-source-stories/when-linux-came-to-windows-204cf9abb3d6
往期热文(点击图片即可阅读)
关注「程序员的那些事」加星标,不错过圈内事
圈内事,我在看❤️
微软员工揭秘 Linux 子系统研发全过程相关推荐
- 微软员工揭秘 Windows 的 Linux 子系统研发全过程
[CSDN 编者按]微软在开源道路上不断前进,甚至在Windows10中开放名为 WSL 的 Linux 子系统,让开发者可以直观操作 Linux.本文作者作为 WSL团队的一员,将详细给我们讲述开发 ...
- 微软更新Linux子系统,编译WSL 2内核只需3步
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今年,微软在Build大会上向开发者放了两个"大招":Windows Terminal和WSL 2.两个工具都是为了向 ...
- 通过微软商店软件安装kali Linux子系统及图形界面
通过微软商店软件安装kali Linux子系统及图形界面 开启windows的wsl功能: 这里引用一位博主大佬的文章: (https://blog.csdn.net/qq_36512792/arti ...
- wsl调试linux内核,微软更新Linux子系统,编译WSL 2内核只需3步
点击▲存眷 "CU手艺社区" 给公家号标星置顶 [本文来自:www.pp00.com] 更多出色 第一时间直达 [本文来自:www.pp00.com] 晓查 发自 凹非寺转自量 ...
- 路透社:谷歌已停止与华为部分合作;联想否认断供华为PC;微软计划直供Linux内核;谷歌无人机快递Wing进军芬兰……...
关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...
- 400名微软员工主动曝光薪资:28万元到228万元不等!
作者 | Dave Gershgorn 译者 | 弯月,编辑 | 郭芮 来源 | CSDN(ID:CSDNnews) [导读]近日,近400名微软员工分享了他们的薪酬(从4万美元到32万美元不等,约为 ...
- Windows10安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机
很多优秀的生物信息学软件,如QIIME.QIIME 2.LEfSe等没有Windows版,而使用VirutalBox虚拟机不仅效率低,而且挂载外部硬盘和使用中也经常遇到各种问题,配置和使用详见 - 扩 ...
- windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
原标题:Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天, ...
- Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天,安装Windows 10测试版本号19603的用户发现,系统里WSL (Windows中的L ...
最新文章
- 深度学习stride_深度学习圣经“花书”各章摘要与笔记整理
- oracle存储过程 ppt,oracle_存储过程培训(动画版本)详解.ppt
- 网页转图片 java_java-网页转图片
- JAVA进阶day07JNI(java调用c)B部分
- nts包如何下周 php_windows下PHP7安装方法(ts版和nts版)
- MATLAB获得子图位置
- python 项目结构图_python+selenium-【六】-完整的项目结构
- 多目标粒子群算法_PSO粒子群算法可视化
- 使用yuicompressor 压缩js, CSS
- 盘点下常用的接口测试工具,有几个你肯定没用过
- 查询SQL最近一次启动时间
- Mysql经典面试题及答案
- 用PL/SQL判断一个FTP服务器上的文件是否存在
- 文件夹批量重命名不会操作?快来看看吧
- 深度学习中的深度是指什么_什么是深度学习
- lammps案例:分子自由落体运动模拟
- Java语言格式化返回日期为北京时间(东八区)
- 计算机网络与无线通信系统学习1:计算机通信网概述
- 夜神模拟器 开发 重新连接
- 测风塔选址与代表性问题