(给程序员的那些事加星标)

转自:编译: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 子系统研发全过程相关推荐

  1. 微软员工揭秘 Windows 的 Linux 子系统研发全过程

    [CSDN 编者按]微软在开源道路上不断前进,甚至在Windows10中开放名为 WSL 的 Linux 子系统,让开发者可以直观操作 Linux.本文作者作为 WSL团队的一员,将详细给我们讲述开发 ...

  2. 微软更新Linux子系统,编译WSL 2内核只需3步

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 今年,微软在Build大会上向开发者放了两个"大招":Windows Terminal和WSL 2.两个工具都是为了向 ...

  3. 通过微软商店软件安装kali Linux子系统及图形界面

    通过微软商店软件安装kali Linux子系统及图形界面 开启windows的wsl功能: 这里引用一位博主大佬的文章: (https://blog.csdn.net/qq_36512792/arti ...

  4. wsl调试linux内核,微软更新Linux子系统,编译WSL 2内核只需3步

    点击▲存眷 "CU手艺社区"   给公家号标星置顶 [本文来自:www.pp00.com] 更多出色 第一时间直达 [本文来自:www.pp00.com] 晓查 发自 凹非寺转自量 ...

  5. 路透社:谷歌已停止与华为部分合作;联想否认断供华为PC;微软计划直供Linux内核;谷歌无人机快递Wing进军芬兰……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  6. 400名微软员工主动曝光薪资:28万元到228万元不等!

    作者 | Dave Gershgorn 译者 | 弯月,编辑 | 郭芮 来源 | CSDN(ID:CSDNnews) [导读]近日,近400名微软员工分享了他们的薪酬(从4万美元到32万美元不等,约为 ...

  7. Windows10安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机

    很多优秀的生物信息学软件,如QIIME.QIIME 2.LEfSe等没有Windows版,而使用VirutalBox虚拟机不仅效率低,而且挂载外部硬盘和使用中也经常遇到各种问题,配置和使用详见 - 扩 ...

  8. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...

    原标题:Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天, ...

  9. Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天,安装Windows 10测试版本号19603的用户发现,系统里WSL (Windows中的L ...

最新文章

  1. 深度学习stride_深度学习圣经“花书”各章摘要与笔记整理
  2. oracle存储过程 ppt,oracle_存储过程培训(动画版本)详解.ppt
  3. 网页转图片 java_java-网页转图片
  4. JAVA进阶day07JNI(java调用c)B部分
  5. nts包如何下周 php_windows下PHP7安装方法(ts版和nts版)
  6. MATLAB获得子图位置
  7. python 项目结构图_python+selenium-【六】-完整的项目结构
  8. 多目标粒子群算法_PSO粒子群算法可视化
  9. 使用yuicompressor 压缩js, CSS
  10. 盘点下常用的接口测试工具,有几个你肯定没用过
  11. 查询SQL最近一次启动时间
  12. Mysql经典面试题及答案
  13. 用PL/SQL判断一个FTP服务器上的文件是否存在
  14. 文件夹批量重命名不会操作?快来看看吧
  15. 深度学习中的深度是指什么_什么是深度学习
  16. lammps案例:分子自由落体运动模拟
  17. Java语言格式化返回日期为北京时间(东八区)
  18. 计算机网络与无线通信系统学习1:计算机通信网概述
  19. 夜神模拟器 开发 重新连接
  20. 测风塔选址与代表性问题

热门文章

  1. uniapp ----小程序上下滑动页面,视频自动播放(完整代码)
  2. python求绝对值得方法
  3. Msfvenom使用指南
  4. 购买二手MacBook是否正品,请仔细检查以下情况,可防止翻车
  5. 免安装版(解压缩版)MySQL安装
  6. 汽车电子环境基本阐述
  7. Hey UI源码市场
  8. Java高级开发必备--Docker进阶(一篇详细教程,进阶Docker)
  9. sublimelinter php 语法不起作用,sublime安装插件sublimeLinter不起作用解决办法
  10. 缺少编解码器,错误代码0xc00d5212 WIN10中AVI格式文件无法播放