GitHub 贡献第一的微软开源软件列表

  作者|木环

  编辑|小智

  在GitHub上贡献最多的公司,不是Facebook,也不是Google,而是微软。InfoQ对微软数个较受社区欢迎的项目进行了整理,以飨读者。希望开源的精神,能给技术社区带来更多的实惠!

  写在前面

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

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

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

  Type:开源编程语言,Java的超集

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

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

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

  CNTK: 深度学习开源工具包

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

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

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

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

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

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

.NET是微软研发的XML Web services平台,此框架支持多种语言(如C#、F#、VB.Net、C++、Python等)的开发。.NET框架历经亟待,最终于2014年开源。

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

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

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

  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

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

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

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

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

  DMTK:分布式机器学习框架

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

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

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

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

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平台)。微软设的最有价值专家奖(Microsoft MVP Award)也开始欢迎开源社区的活跃分子加入。

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

原文地址:http://mp.weixin.qq.com/s/ogdnrNHtRfMTqaGXMQc8VQ


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis入门(七)之日志

转载自 mybatis入门(七)之日志 Mybatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理: SLF4JApache Commons LoggingLog4j 2Log4jJDK logging MyBatis 内置日志工厂基于运行时自省机制选择合适…

Photoshop图像修饰工具

一、修饰工具: 1.准确来说是一个修饰工具组。 2.进行图像修饰时,没根据具体情况,进行针对性的选择相应的工具进行修饰。 二、仿制图章工具组: 1.仿制图章工具组 2.图案图章工具 三、修复工具组 1.污点修复画笔工具 2.修复画笔工具 3.修补工具…

android 画布控件,Android canvas画图操作之切割画布实现方法(clipRect)

本文实例讲述了Android canvas画图操作之切割画布实现方法。分享给大家供大家参考,具体如下:android切割画布的历程不算很难,可是理解起来也比较麻烦,这里写一下我的理解 但是不一定正确:canvas.clipRect(30,30,70,Reg…

MyBatis传入多个参数的问题

转载自 MyBatis传入多个参数的问题 一、单个参数&#xff1a; public List<XXBean> getXXBeanList(String xxCode); <select id"getXXXBeanList" parameterType"java.lang.String" resultType"XXBean">select t.* from tableN…

老司机实战Windows Server Docker:5 Windows Server Dockerfile葵花宝典

前面两篇&#xff08;简单运维1、简单运维2&#xff09;介绍了一些Windows Server Docker相关的基本运维知识。今天这一篇&#xff0c;Windows Server Dockerfile葵花宝典&#xff0c;涵盖了许多典型场景的Windows Server下的Dockerfile实例&#xff0c;并且每一个都包含可直接…

2020蓝桥杯省赛---java---B---2(寻找 2020)+测试txt

题目描述 text 0020000002202020002220002022002222202022020200022200020200222022002202202020020022200202000000002200222002022220222202220000222202200200202220200222200222202200000220220020202200022002200200200222000202220202002000000202200200220022020002022…

用一年的时间,依靠SEO创造一个成功的网站

以下内容是一位SEO前辈&#xff08;站长世界的创始人Brett Tabke&#xff09;写的&#xff0c;这篇文章在我最初学习SEO时&#xff0c;深刻得影响了我&#xff0c;给我了足够的自信。希望对你也有所帮助。 a)准备工作和建立内容。      在你注册域名之前&#xff0c;你就应…

Mybatis传入参数类型为Map

转载自 Mybatis传入参数类型为Map mybatis更新sql语句&#xff1a; <update id"publishT00_notice" parameterType"Map"> update test set createdate #{createdate}, creator #{creator} where id in <foreach collection"ids"…

android merge的作用,Android学习手记-merge

为什么用merge&#xff1a;标签的作用是合并UI布局&#xff0c;使用该标签能降低UI布局的嵌套层次。该标签的主要使用场景主要包括两个&#xff0c;第一是当xml文件的根布局是 FrameLayout时&#xff0c;可以用merge作为根节点。理由是因为Activity的内容布局中&#xff0c;默认…

新起点!新征程!

好久没有更新公众号了&#xff0c;其一是因为最近这段时间有点“忙”&#xff08;迫于其他原因&#xff0c;目前包括本公众号一共运营4个公众号&#xff0c;精力不充沛&#xff09;&#xff0c;其次就是犯了懒病不想动。其中博客中也没有更新比较有质量的博文了。感觉自己堕落颓…

2020蓝桥杯省赛---java---B---3(蛇形填数)

题目描述 思路分析 找规律 看对角线 1481216 代码实现 package TEST;public class Main {public static void main(String[] args) {int res 1, t 4;for(int i2; i<20; i) {res t;t 4;//1481216}System.out.println(res); //761}}答案 761

linux微信公众号报警,zabbix报警媒介,微信报警,邮件报警

微信报警首先要申请微信企业公众号&#xff0c;创建相应应用&#xff0c;然后进行配置微信企业公众号申请&#xff0c;目前可免费前往该地址进行申请注册过程很简单&#xff0c;不信你试然后进行企业公众号的基础设置服务端报警微信脚本[rootbogon alertscripts]# pwd/usr/loca…

Mybatis传多个参数(三种解决方案)

转载自 Mybatis传多个参数&#xff08;三种解决方案&#xff09; 据我目前接触到的传多个参数的方案有三种。 第一种方案 DAO层的函数方法 public User selectUser(String name,String area); 对应的Mapper.xml <select id"selectUser" resultMap&quo…

色彩调整与校正

一、Photoshop中所有关于色彩调整的功能都在 图像–》调整子菜单中。 二、色阶&#xff1a; 1.图像–》调整–》色阶 2.快捷键&#xff1a;ctrll 3.设置白场点黑色全变白&#xff0c;设置黑场点白色全变黑 4.设置红绿蓝通道&#xff1a; 1)红通道黑场滑块往右拖&#xff0c;蓝绿…

编写高效率的C#代码

周末空闲&#xff0c;选读了一下一本很不错的C#语言使用的书&#xff0c;特此记载下便于对项目代码进行重构和优化时查看。 Standing On Shoulders of Giants&#xff0c;附上思维导图&#xff0c;其中标记的颜色越深表示在实际中的实际意义越大。 名称内容和示例提供API时尽量…

2020蓝桥杯省赛---java---B---1(门牌制作)

题目描述 代码实现 package TEST;public class Main {public static void main(String[] args) {int sum0;for (int i 0; i < 2020; i) {int tempi;while (temp>0){if(temp%102){sum;}temp/10;}}System.out.println(sum);} }答案 624

图层与蒙版

一、图层&#xff1a; 1.图层可以比作是透明的像素薄片 2.除背景层之外&#xff0c;其他图层可以任意堆叠 3.图层通常分为背景图层、普通图层、文字图层、蒙版图层、矢量蒙版图层、形状图层、填充/调整图层。 4.视图–》窗口–》图层 5.快捷键&#xff1a;f7 6.图层的调整顺序&…

使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件

转载自 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件 Mybatis属于半自动ORM&#xff0c;在使用这个框架中&#xff0c;工作量最大的就是书写Mapping的映射文件&#xff0c;由于手动书写很容易出错&#xff0c;我们可以利用Mybatis-Generator来帮我们自动生成文…

android拦截短信获取短信内容,《英雄联盟手游》先锋测试招募说明:仅安卓用户...

招募时间&#xff1a;5月10日~5月17日测试开始时间&#xff1a;预计5月下旬或6月上旬招募(体验)要求&#xff1a;1、测试期间有较长时间可投入游戏体验&#xff1b;2、能够积极反馈和表达自己的游戏体验感受&#xff1b;3、需提前完成招募问卷(最终是否获取资格需筛选后确认)。…

ASP.NET Core MVC 源码学习:详解 Action 的匹配

前言 在 上一篇 文章中&#xff0c;我们已经学习了 ASP.NET Core MVC 的启动流程&#xff0c;那么 MVC 在启动了之后&#xff0c;当请求到达过来的时候&#xff0c;它是怎么样处理的呢&#xff1f; 又是怎么样把我们的请求准确的传达到我们的 Action 上呢&#xff1f; 那么&am…