来源:机器之心、快科技、infoQ,有删改
昨天,微软在 MIT License 下开源了一个 GitHub 项目——Windows 计算器,短短 24 小时内就获得了接近 5000 颗星,并引发大量讨论。这个项目爆红的速度可能连微软自己都始料未及。科技媒体 The Verge 评价道,「虽然计算器只是 Windows 的一个很小的部分,但开源计算器这一事件延续了微软近年来拥抱开源的作风。」
据美国科技媒体The Verge报道称,微软此举的目的是希望“与社区合作打造更好的用户体验。”开放“计算器”源代码意味着,任何人都可以贡献代码来改进这款应用。但微软希望在开始部署或审查代码之前,先评估这些新功能的原型或用户界面的变化。
目前,“计算器”的源代码已经上传到GitHub上,包括构建系统、单元测试,甚至还有Windows中“计算器”功能的产品路线图。虽然“计算器”是Windows的一个相对较小的部分,但此举代表着微软拥抱开源计划的重要一步。
另外,微软的“计算器”源代码将帮助Windows开发人员更轻松地将“计算器”集成到自己的应用程序中。
微软去年6月宣布,将以价值75亿美元的股票收购GitHub,开启“开源的敌人”这一称号的洗白之路。GitHub是全球领先的软件开发平台,拥有2800多万开发者用户。
开源地址:https://github.com/Microsoft/calculator
此次开源的目的是想要「与社区一道打造更好的用户体验」。开源计算器意味着任何人都可以为改善这一 app 贡献代码,但微软会在实现新的功能原型、用户界面变动之前对它们进行评估或者审核代码。
这次开源的代码包括构建系统、单元测试,甚至 Windows 计算器功能的产品路线图。近年来,微软一改保守的作风,拥抱开源。此前,微软甚至开源了 90 年代原始文件管理器的源代码,允许它在 Windows 10 上运行。去年 10 月,微软宣布正式加入开放创新网络(OIN),向所有开源专利联盟的成员开放其专利组合。这意味着微软旗下的 60000 多项专利免费开放给 Linux 系统,帮助 Linux 的发展。
此次开源有助于 Windows 开发者更轻松地将计算器 logic 或 UI 整合到自己的 app 中,开发者还能报告并修复 bug,参与和 Windows 计算器未来有关的讨论,并帮助微软的工程师设计、构建该 app。微软表示 review Windows 计算器的代码将有助于开发者了解微软的最新技术,如 Universal Windows Platform、XAML 和 Azure Pipelines;了解微软的完整开发生命周期;重用这些代码来构建自己的项目。
以下为该开源项目的详细信息。
关于 Windows 计算器
Windows Calculator app 是使用 C++ 写成的现代 Windows app,预安装在 Windows 中。这款 app 提供标准型、科学型和程序员计算器功能,以及不同度量单位和货币之间的转换。
该计算器定期更新功能、修复 bug。用户可在 Microsoft Store 下载最新版本。
功能
具体来讲,Windows 计算器具备以下功能:
标准计算器功能:提供基础运算,评估用户输入的命令。
科学计算器功能:提供扩展运算,使用运算顺序评估命令。
程序员计算器功能:为开发者提供常见的数学运算,如进制转换。
计算历史和记忆能力。
不同度量单位之间的转换功能。
基于从 Bing 检索到的数据进行货币转换。
启动项目
Windows 计算器的 GitHub 页面介绍了启动该项目的大概流程。
依赖项
计算机必须运行 Windows 10 1803 版本或更新版本。
安装 Visual Studio 最新版
安装「Universal Windows Platform Development」workload
安装可选组件「C++ Universal Windows Platform tools」
安装最新版 Windows 10 SDK
安装 Visual Studio 扩展 XAML Styler
获取项目代码:
git clone https://github.com/Microsoft/calculator.git
在 Visual Studio 中打开 src\Calculator.sln,以构建和运行 Windows 计算器 app
Windows 计算器项目架构的通用描述,参见 ApplicationArchitecture.md
此外,微软开源了 Windows 计算器的路线图,详见:https://github.com/Microsoft/calculator/blob/master/docs/Roadmap.md
沸腾的群众
Windows 开源计算器的事件很快就在社交网络上引发了一股风潮,人们纷纷登陆 GitHub 开始尝试。查看计算器代码显然是了解最新微软技术(如通用 Windows 平台、XAML 和 Azure)的好主意。也有人呼吁微软开源更多程序的代码,目前呼声最高的是「纸牌」程序。
开源一个软件可以帮助微软通过社区的力量解决一些问题。在 Reddit 上,有眼尖的网友发现了 Windows 10 上计算器的一个 Bug:
一个像素没有对齐。看起来 Issue 提交了之后,这个问题就会在 2019 年第一季度的 Windows 10 四月更新中解决了
GitHub上那些爆火的微软开源软件
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
TypeScript:开源编程语言,JavaScript的超集
TypeScript是JavaScript强类型的超集,可以编译成纯JavaScript。由微软开发的自由和开源的编程语言,可以运行在各类浏览器和操作系统之上。
Star数量: 19.8k ;Fork数量:2.8k
GitHub主页:https://github.com/Microsoft/TypeScript/
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
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
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):实现的词嵌入的分布式算法。
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/
参考内容:
https://www.theverge.com/2019/3/6/18253474/microsoft-windows-calculator-open-source-github
微软已然成为GitHub贡献最大公司之一▼