GitHub 贡献第一的公司是谁?微软开源软件列表

阅读数:4515 2017 年 3 月 30 日 19:00

提起微软公司,不少人第一反应是老牌巨头专注于私有化软件盈利模式,这大抵是源于微软前 CEO Steve Ballmer 曾经宣称“Linux 是颗毒瘤(Linux is a cancer)”,并曾经偏执地认为所有开源软件都不值一提。但是,这是 2001 年的事情了,是时候更新大家对微软的刻板印象。

这里,不提继任者 Satya Nadella 的微软拥抱开源进行新式转型的决策,也不提微软去年加入 Linux 基金会等开源组织的举动。单单而言,只问一个问题:哪家公司在 GitHub 上贡献最多?不是 Facebook,也不是 Google,而是微软公司,这个第一名还是多少有些出人意料。

GitHub贡献第一的公司是谁?微软开源软件列表

2014 年 10 月,出任微软首席执行官的萨提亚∙ 纳德拉,第一次公开宣布“微软爱 Linux”。同年,微软首次发布.NET Core 并将其开源;众所周知,微软核心的技术栈长期以来基于.NET 和 Windows 绑定。在重写标准库之后,2016 年 6 月.NET Core 1.0 实现跨平台(Windows、Linux 和 Mac),这意味着开发者可以使用 Windows 开发而 Linux 部署。

2016 年 3 月,Windows 原生支持 Ubuntu Linux Bash, 这意味着 Windows 操作系统级别的开放,Win10 可以当作一台 Ubuntu 开发机来使用。

此外,微软称 Azure 全面支持所有开源技术栈,并且从 IaaS(VM),PaaS 和 SaaS(CRM、PowerBI、Office365)全面支持用户的灵活选择。

InfoQ 对数个较受社区欢迎的项目进行了整理如下:

Visual Studio Code:跨平台源代码编辑器

Visual Studio Code 是微软于 2015 年正式发布的项目,可以运行在 Mac OS X、Windows 和 Linux 之上,面向 Web 和云应用的一款跨平台源代码编辑器。

虽然它的名字与 Visual Studio 相近,但前者是代码编辑器,后者是集成开发环境(IDE)并且目前只运行在 Windows 上。

Star 数量: 24.3k;  Fork 数量:3.3k

GitHub 主页: https://github.com/Microsoft/vscode

GitHub贡献第一的公司是谁?微软开源软件列表

TypeScript:开源编程语言,JavaScript 的超集

TypeScript 是 JavaScript 强类型的超集,可以编译成纯 JavaScript。由微软开发的自由和开源的编程语言,可以运行在各类浏览器和操作系统之上。

Star 数量: 19.8k ;Fork 数量:2.8k

GitHub 主页: https://github.com/Microsoft/TypeScript/

GitHub贡献第一的公司是谁?微软开源软件列表

GitHub贡献第一的公司是谁?微软开源软件列表

GitHub贡献第一的公司是谁?微软开源软件列表

CNTK: 深度学习开源工具包

CNTK 全称为 The Microsoft Cognitive Toolkit, 将神经网络描述为计算机可处理的有向图,有向图的叶节点表示输入值或网络参数,其他节点表示输入对应的矩阵运算。CNTK 便于实现并且也结合了很多深度神经网络(DNN),神经网络(CNN)和循环神经网络 / 长短时记忆神经网络(RNN / LSTM)。它可以跨多个 GPU 和服务器实现随机梯度下降(SGD,误差反向传播)学习与自动微分和并行化。

可以在 Python 或者 C++ 语言中如同库版应用,也可以使用其自有的描述语言 BrainScript 单机化使用。CNTK 可适用于 64 位的 Linux 和 Window,于 2015 年 4 月开源。

下图比较 CNTK 的处理速度(每秒处理的帧数)与四个其他众所周知的工具包的处理速度。 配置使用完全连接的 4 层神经网络(参见微软的基准脚本)和有效的迷你批量大小(8192)。在相同硬件上获得的结果。

Star 数量:9.9k;Fork 数量:2.4k

GitHub 地址: https://github.com/Microsoft/CNTK

GitHub贡献第一的公司是谁?微软开源软件列表

Donnet:采用系统虚拟机运行的编程平台

.NET 最早是微软研发的 XML Web services 平台,C#是.NET 框架上最常用的编程语言之一,通常被认为是微软专属, 其著名竞争对手是 Java。

.NET 框架历经数代更迭,现已演变成通用的开发平台,支持多种语言(如 C#、F#、VB.Net、C++、Python 等)、异步和同步编程模型,具有本地互操作性,可跨平台实现多种场景,最终于 2014 年开源。

Star 数量: 7.8k ;Fork 数量:1.2k

GitHub 主页: https://github.com/Microsoft/dotnet/network

GitHub贡献第一的公司是谁?微软开源软件列表

PowerShell :为任何系统提供 Windows 的命令行工具

一个跨平台(Windows、Linux 和 macOS)自动化和配置工具 / 框架,可与现有工具完美配合,并优化用于处理结构化数据(例如 JSON,CSV,XML 等)、REST API 和对象模型。 它包括命令行 shell,相关的脚本语言和用于处理 cmdlet 的框架。

Star 数量:6.4k;Fork 数量:800

GitHub 地址: https://github.com/PowerShell/PowerShell

MSOpenTech/redis: 在 Windows 使用 Redis

官方只支持 64 位,可自行构建 32 位版。

该开源项目,在 2.8 版本中,替代 UNIX fork()API 中的内存映射文件模拟写时复制行为。 版本 3.0 类似,为了便于系统文件分页,删除了内存映射文件,在管理堆碎片方面进行了改进。

Redis 对文件描述符的值做了一些假设,微软构建了一个虚拟文件描述符映射层。

Star 数量:5.8k;Fork 数量:8.7k

GitHub 地址: https://github.com/MSOpenTech/redis

WinObjc:Windows 下的 Objective-C

为 Visual Studio 提供了一个 Objective-C 开发环境并支持 iOS API。通过重新使用 Objective-C 代码和 iOS API,配以 Windows 自有 Cortana(中文名:微软小娜,微软发布的全球第一款个人智能助理)和通知等功能,用户可以创建通用 Windows 平台(UWP)应用程序并运行在 Windows 设备上。

Star 数量:5.8k;Fork 数量:745

GitHub 地址: https://github.com/Microsoft/WinObjC

GitHub 地址: https://github.com/Microsoft/api-guidelines

ASP.NET 之 MVC 核:模型 (model)-视图 (view)-控制器 (controller) 框架

旨在 TDD 友好,用于创建符合最新 Web 标准的复杂应用程序、构建动态网站,可以在 IIS 中托管或自我托管。

Star 数量:4.4k;Fork 数量:1.6k

GitHub 地址: https://github.com/aspnet/Mvc

BashOnWindows:解决 Ubuntu Bash 在 Windows 的使用问题

微软在 Build 2016 大会上宣布了一条振奋人心的消息,大家惊呼 Ubuntu on Windows。Bash on Windows 为开发者们提供了 Bash shell、Linux 类似环境,在不需要 Linux 虚拟机的情况下,大部分的 Linux 命令行工具基本上可以不经修改地运行在 Windows 上。

Star 数量:3.7k;Fork 数量: 129

GitHub 地址: https://github.com/Microsoft/BashOnWindows

GitHub贡献第一的公司是谁?微软开源软件列表

monaco-editor:基于浏览器的代码编辑器

与 Visual Studio Code 类似,Monaco Editor 提供代码提示、智能建议等代码编辑器的功能,它运行在浏览器环境中,旨在开发人员们可以远程更方便地编写代码。与 Visual Studio Code 版本相比,Monaco 是一个直接映射源代码的库。            

Star 数量: 4k;Fork 数量:265

GitHub 地址: https://github.com/Microsoft/monaco-editor

GitHub贡献第一的公司是谁?微软开源软件列表

DMTK:分布式机器学习框架

微软的 DMTK(Distributed Machine Learning Toolkit)参数服务器框架有很多版本:

LightLDA:用于大规模主题建模的可扩展、快速和轻量级系统。

LightGBM:基于决策树算法的快速、分布式、高性能梯度提升(GBDT,GBRT,GBM 或 MART)框架,用于排名、分类和许多其他机器学习任务。

分布式词嵌入(word embedding):实现的词嵌入的分布式算法。

DMTK framework(Multiverso): 参数服务器架构的机器学习。

Star 数量: 2k;Fork 数量:487

GitHub 地址: https://github.com/Microsoft/DMTK

Azure 相关:文档、SDK 和代码示例

微软支持开发者们将各种开源软件工具和技术带入 Azure。Azure 应用市场支持很多 Linux 分发,包括 Ubuntu、Debian 和 SUSE;也支持借助支持 Node.js、PHP、Python 和 Java 的 Azure 应用服务,生成 Web 和移动应用。

在 GitHub 上 Azure 相关的存储库有 1700+ 个。

Star 数量(共计):149k;Fork 数量(共计):291k

地址: https://azure.microsoft.com/zh-cn/overview/open-source/

写在后面

开源已经形成潮流,一家软件公司的竞争对手可能是同行企业,还可能是开源项目。

不过开源可不是公益,公司还是以赢利为导向的,那么开源对公司而言利益是什么呢?首先,企业级版本的使用往往并不免费,并且相关的技术支持、安装、系统整合、认证和培训等服务也是收取费用的。 其次,项目开源之后,可以吸引社区中对此热情的开发者们。传统模式下,软件巨头公司需要雇佣大量工程师进行开发、测试和本地化等。但是,开源相当于把一部分工作“外包”给社区。此外,如果开源项目代码优质,则会很好地塑造技术形象并在开源圈产生影响力,从而起到推广公司品牌的作用。更重要的是,公司可以接触到社区中的高尖专家程序员,增加了对他们的吸引力也就增加了更多招纳贤士的可能性,他们有可能会以兼职或者全职的形式加入公司。单纯对项目本身而言,如果被其他公司采用、再回馈到社区,这是优化项目和丰富使用场景的良性循环。

其实微软很早开始关注社区开发者并有了开源的举措:MSDN 实现创立于 1992 年是使用层级的技术文件开放;CodePlex 创立于 2006 年先后托管了很多开源项目;CodePlex Foundation 开放源码基金会成立于 2009 年。

那么微软之外世界的时间发展线是怎样的呢?虽然其他几家开源软件基金会更早成立(自由软件基金会 1985 年、OSI 开发源代码促进会 1998 年、Apache 软件基金会 1999 年、Eclipse 基金会 2004 年、软件自由管理委员会 2006 年);但是程序界的大规模化关注并参与开源并不比微软的步伐早:1991 年 Linux 源代码开源;2007 年 Linux 基金会成立,而 GitHub 也开始提供软件源代码托管服务;2008 年 StackOverflow 问答讨论网站建立。

如此看来,其实微软并没有一直盲目赶路,并且也有着不算落后的开源和社区意识。不过,缘何留下了保守不开源的刻板印象?是因为 2001 年时前 CEO 的武断宣言?还是开源之路态度不够坚决、宣传力度不够?亦或是社区更欢迎独立的第三方开源平台而非某家企业的托管平台?不过,可以确定的一点是,如所宣称那样“Microsoft Loves Linux”,微软拥抱开源并且同样拥抱社区选择的平台(如 GitHub、StackOverflow)。

有人认为微软这些开源举动晚了,错失了很多机会。不过,“种一棵树最好的时间是十年前,其次是现在”。业界接下来应该更关注的是,微软究竟会将开源做到什么程度,并因此对社区产生多么深刻影响。

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论