微软:从“开源是毒瘤”到“我爱Linux”的20年

2023-11-05

整理 | 彭慧中 责编 | 屠敏
出品 | CSDN(ID:CSDNnews)

英国前首相帕麦斯顿曾说过:“没有永远的朋友,也没有永远的敌人,只有永远的利益。”这句话用来形容微软对于开源的态度正合适。

在21世纪初,曾视开源为“毒瘤”,并一度想将其毁灭的微软,现在却被戏称为一家“Linux和开源公司”。为何微软曾对开源恨之入骨,而又是从何时开始决定与开源和解并且亲如一家的呢?

故事还得从本世纪初开始说起。

在这里插入图片描述

开源是“毒瘤”

2001年,时任微软CEO的史蒂夫·鲍尔默(Steve Ballmer)宣称:“Linux是一个毒瘤。”后来,微软赞助了SCO(SCO Group,简称SCO,一家美国电脑软件公司)对Linux的版权攻击,声称Linux侵犯了微软的专利,并迫使基于Linux的Android厂商为该专利索赔买单。

在这里插入图片描述

图源The Register

比尔·盖茨和鲍尔默统治下的微软希望看到Linux和开源软件(OSS)“死去”并被“埋葬”,因为他们认为“OSS对微软构成了在收入和平台方面的威胁,特别是在服务器领域。”

他们还意识到开源能聚集大量优秀的开发人员。“OSS收集和利用集体智慧的能力简直令人惊叹。并且,OSS的传播速度之快、范围之广,比我们自己使出浑身解数来扩大的规模还要大。”

面对开源软件的威胁,微软的答案是什么?“尽管开放源软件项目已经能够在许多服务器应用中站稳脚跟。但通过扩展这些协议和开发新的协议,我们可以阻止OSS项目进入市场。”对于微软来说,这是一种久经考验的压制敌人的方法。

然而,随着微软内部决策层的变动,故事渐渐开始有了转折。盖茨在2008年先是停止了在微软的日常工作,又于2021年,退出微软董事会。鲍尔默则于2014年辞去了微软CEO一职,并辞去了董事会职务。他们如同其反对Linux和OSS的方式一样,终成为过去式。

在这里插入图片描述

微软爱Linux?

凭着“打不过就加入”的心态,萨蒂亚·纳德拉(Satya Nadella)作为微软新任CEO执掌微软大权时,他便高调地说:“微软爱Linux”。
在这里插入图片描述

图源The Register

当微软在开源大会和重大事件上拿出印有“Microsoft Loves Linux”的T恤和徽章时,可以想象大家的震惊。这是真的吗?微软真的爱 Linux?

当然,公关的口号和免费的T恤并不代表真理,事实胜于雄辩。但纳德拉明白,若想要赚钱,微软就得真正拥抱开源,而不是灭掉开源。

纳德拉曾在接受外媒《连线》采访时说道,他对过去的纷争不感兴趣。看上去好像是微软意识到“Linux 就在这里”的这样一个现实。微软不能真正地消灭它,所以必须接受它。

“如果你不跟上新的趋势,你就活不下去。”Linux已经成为当今商业技术的重要组成部分,这意味着微软不得不要与Salesforce等曾经的敌人交朋友,不仅要热爱Linux,还要将Linux融入到自己的产品中。

今天,大家都认为微软是一个大公司,在股市上也雄霸一方。但或许大家不记得的是,当鲍尔默在2014年辞职时,微软的股价已经下跌了40%以上。当鲍尔默宣布他要离开时,微软的股价是34.47美元。2022年7月14日,微软的股价是252.72美元。

微软已经变得比以往任何时候都更有价值,因为它终于发现,加入Linux和开源比与之对抗更好。

当然,微软也不是十全十美的。当开源与自己的商业利益相冲突时,有时也会做出“令人失望”的举措。

例如,近期它的子公司GitHub在其商业化的Copilot人工智能配对程序中使用开源代码,就存在严重的法律和道德争议问题。软件自由保护协会对此也表示愤怒,表示将放弃对GitHub的所有使用。同时,微软也被质疑断自由软件开发者活路,企图禁止微软商店中的商业开源…种种行为,也不禁让人担忧,微软是否是以“拥抱-扩展-消灭”的态势来渗透开源的,但毋庸置疑的是,微软近些年在开源维度做出的贡献也是实打实的。对此,你如何看待现如今的微软已经成为一家 Linux 与开源公司?

参考链接:https://www.theregister.com/2022/07/13/microsoft_linux_company/


新程序员001-004》已全面上市,欢迎扫描下方二维码或点击进入立即订阅,即可畅享电子书及精美纸质书

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微软:从“开源是毒瘤”到“我爱Linux”的20年 的相关文章

  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • NUMA 在虚拟内存中是如何表示的?

    有许多资源 https en wikipedia org wiki Non uniform memory access从硬件角度描述NUMA的架构性能影响 http practical tech com infrastructure num
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • 警告:请求的映像平台 (linux/amd64) 与检测到的主机平台 (linux/arm64/v8) 不匹配

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 docker 来自守护程序的错误响应 无法选择具有功能的设备驱动程序 gpu 我在 mac 上尝试运行此命令时遇到此
  • 当用户按下打印时运行脚本,并且在脚本结束之前不开始假脱机(linux,cups)

    我需要做的是结合用户按下打印来执行 python 程序 脚本 并且在该程序退出之前不要让打印作业假脱机 原因是打印驱动程序不是开源的 我需要更改用户设置 在本例中是部门 ID 和密码 通常是每个用户 但因为这是一个信息亭 具有相同帐户的不同
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • 如何从 C 程序中获取 NIC 详细信息?

    我想要获取连接到我的计算机的所有 NIC 的以下详细信息 1 接口名称 例如eth0 2 接口编号 如Windows http answers yahoo com question index qid 20080517041705AAOmJ
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6
  • dlopen 或 dlclose 未调用信号处理程序

    我在随机时间内收到分段错误 我注册了信号 但发生分段错误时未调用信号处理程序 include
  • 这种 bash 文件名提取技术有何用途?

    我有一部分 bash 脚本正在获取不带扩展名的文件名 但我试图了解这里到底发生了什么 是做什么用的 有人可以详细说明 bash 在幕后做了什么吗 如何在一般基础上使用该技术 bin bash for src in tif do txt sr
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例

随机推荐

  • python面对对象编程

    什么是面对对象编程 程序设定的范式 面对对象编程可以是代码程序更加的可控更加让人理解 面对对象编程就是把现实世界变得抽象并建立起对象模型 程序就是不同对象之间相互调用的逻辑 例 人 动物 车 这些都是现实世界的东西那就可以在这段代码中抽象出
  • UVM-寄存器模型

    目录 1 什么是寄存器 2 寄存器块 3 UVM寄存器模型 3 1 期望值 3 2 镜像值 3 3 创建寄存器类 3 4 定义寄存器块 3 5 寄存器env 4 完整例子 4 1设计 4 2 interface 4 3 寄存器 4 4 寄存
  • vscode不能选择python解释器

    command python select interpreter resulted in an error 解决方法 会看到左下角会有restricted mode这几个字 然后点这几个字 再选择Trust就可以了
  • 计算机网络(自顶向下)学习笔记——网络层

    第四章 网络层 4 1 概述 转发功能和路由选择功能的区别 转发涉及在单个的路由中从一条入链路到一条出链路的传送 路由选择涉及一个网络的所有路由器 他们经路由选择协议共同交互 决定分组从源到目地结点所采用的的路径 4 1 1 转发和路由选择
  • springmvc的常用注解

    1 RequestParam 1 作用在方法传递的参数前 用于接收所传参数 是springmvc中接受普通参数的注解 2 属性 value 请求参数中的名称 required 请求参数中是否提供此参数 默认为true defaultValu
  • HTTPS 安全原理 建立安全连接经过5次握手 SSL(Secure Socket Layer)/TLS(Transport Layer Security)

    文章目录 安全通信的几个方面 机密性 报文完整性 端点鉴别 SSL Secure Socket Layer TLS Transport Layer Security SSL的加密过程 握手 密钥导出 数据传输 SSL记录格式 HTTPS建立
  • vue+element 在table 中使用vue-qrcode动态生成二维码

    安装 npm install xkeshi vue qrcode save 在需要的页面中引入 import QRcode from xkeshi vue qrcode components qrcode QRcode 在el table中
  • strcmp(const char *s1,const char * s2)比较字符串s1和s2函数

    原型 extern int strcmp const char s1 const char s2 所在头文件 string h 功能 比较字符串s1和s2 一般形式 strcmp 字符串1 字符串2 说明 当s1
  • word2vec的词向量&&神经网络的embedding层的关系

    自己之前学习了一波word2vec的词向量 神经网络的embedding 关于这2者的原理和实践 可以参看我之前的博客 利用神经网络的embedding层处理类别特征 一 理解word2vec 原理篇 二 理解word2vec 实践篇 这篇
  • seaborn可视化统计关系/散点图/折线图

    While you should make use of the flexibility afforded by scatterplot and relplot always try to keep in mind that several
  • ubuntu16.04 安装ros kinetic(orbslam_semantic_nav_ros依赖库3)

    参考 https blog csdn net weixin 42623382 article details 106251330 使用中科大的源 sudo sh c etc lsb release echo deb https mirror
  • java小说目录提取_完整Java爬取起点小说网小说目录以及对应链接

    完整Java爬取起点小说网小说目录以及对应链接 完整Java爬取起点小说网小说目录以及对应链接 第一次使用markdown写 其中的排版很不好 望大家理解 因为最近有一个比赛的事情 故前期看了看黄大神的webmagic框架 无奈之时用时不会
  • windows cmd下用命令创建和删除文件、文件夹

    新建文件夹和文件 cd 返回上一级 md test 新建test文件夹 md d test my d盘下新建文件夹 cd test 进入test文件夹 cd gt cc txt 新建cc txt文件 dir 列出文件夹下所有文件及文件夹 删
  • Scratch2舞台各个部分及积木的介绍

    软件界面分为舞台区 背景角色区和工作区 其中 工作区包含脚本 造型和声音是哪个选项卡功能 积木部分需要着重介绍 这也是接下来 小朋友要格外关注的部分 积木区主要指 脚本选项卡下的内容 包括 1 运动类积木 2 外观类积木 3 声音类积木 4
  • XStream配置XML节点既有属性又有内容

    例如XML节点为这样的 如何通过XStream来映射JavaBean呢
  • 湖北文理学院工程能力实训开班!

    为深化校企合作 产教融合助力新工科建设 提升学生工程实践能力 电巢工程能力实训班按照不同岗位类别 匹配对应的企业岗位任职能力要求对学生开展分级培养 以产业需求为导向 培养创新型 应用型人才 7月3日中午12时 深圳电巢联合湖北文理学院物理与
  • 【pytorch入门】Anaconda安装+pytorch安装+pycharm安装教程

    前言 Anaconda是一个开源的Python发行版本 其包含了conda Python等180多个科学包及其依赖项 其中包括Conda Python以及一大堆安装好的工具包 比如 numpy pandas等 安上之后 基本就包括后面学习所
  • pm2入坑教程

    PM2入坑教程 一 使用场景 二 使用命令 2 1 安装pm2的命令 2 2 创建启动 2 3 查看命令 2 4 删除命令 2 5 停止命令 2 6 结束进程 一 使用场景 1 普通启动方式 node index js 关闭终端就结束进程
  • Windows下批处理管理Nginx应用程序

    每次更新完配置 通过命令行或者任务管理器来操作Nginx重启 操作起来 显得有点麻烦 下面脚本就是解决这个问题的 cls echo off set NGINX PATH d0 set NGINX DIR cd color 0a title
  • 微软:从“开源是毒瘤”到“我爱Linux”的20年

    整理 彭慧中 责编 屠敏 出品 CSDN ID CSDNnews 英国前首相帕麦斯顿曾说过 没有永远的朋友 也没有永远的敌人 只有永远的利益 这句话用来形容微软对于开源的态度正合适 在21世纪初 曾视开源为 毒瘤 并一度想将其毁灭的微软 现