小舞,微软开源故事 | 敞开 .NET 开源革新,松仁玉米

国际新闻 · 2019-03-31

原文作者 | Scott Hunter

(估计阅览时刻 10分钟)

现在,在微软构建开源软件是很正常的一件事——但早在2007年,我初步在微软作业时,状况并非如此。咱们花了几年的时刻才找到正确的dnf鹰吉在哪里办法,顺畅打开了微软的开源之路。可是,现在咱们已获得胜利,可以面带微笑地回忆先前所面对的许多应战。我要叙述的故事是微软首个成功的开源项目,以及该项目怎么为咱们今日所在的方位铺平了路途。

90 时代后期,我上任于一家名为 Mustang Software 的创业公司,该公司构建的软件用于盯梢公司收到的一切电子邮件是否得到及时回复。在该创业公司于 2000 年被出售之前,我带领我的团队到奥兰多参加微软开发专家大会,大会引进了 ASP+(终究成为 ASP.NET Web 仓库)和 C#。我和我的团队在会议上安装了预览版,我当即就爱上了 .NET。我持续在后续作业中运用 ASP.NET。

1Brad 小舞,微软开源故事 | 打开 .NET 开源改造,松仁玉米Abrams和Scott Guthrie关于Atlas的博客文章

然后在2006年,微软将 CodePlex 设置为源代码同享地。CodePlex 上的一个原始 Web 项目的代号为 Atlas,现在称为 AJAX 控件东西包。Atlas 是微软有史以来构建的第一批开源项目之一,环绕 Atlas 的评论十分剧烈,对 Atlas 也产生了深沉的爱好。正是 Brad Abrams 和 Scott Guthrie 关于 Atlas 的博客文章让我觉得我想参加微软正在研制的作业。

骸骨之爪

我给 Brad 写了一封电子邮件,对博客文章进行回应 — 不到一分钟,他就回复了!第二天,咱们通过电话进行了攀谈,一周之内,我就在微软园区进行了面试。忽然,我就从阳光明媚的加利福尼亚州搬到气候变幻无常的华盛顿州雷德蒙德。

我参加了 Brad Abrams 的团队,担任一切 ASP.NET 作业。此外,我还担任全新的 Silverlight,它是将本机 .NET 开发引进浏览器的开端测验,刚稂怎样读刚发布了第 1 版。ASP.NET MVC 处于前期原型阶段,虽然偶然用作招聘东西,但仅在内部试用,它深深地影响了 Phil Haack,他于2007年10月参加团队。Scott Hanselman 大约也是在这个时分参加了微软,虽然他参加了其他团队。

2ASP.NET MVC是ASP.NET团队对Ruby on Rails大受欢迎的回应

众所周知,ASP.NET MVC 是 ASP.NET 团队对 Ruby on Rails 大受欢迎的回应——始于2004年,由绝无仅有的 David Heinemeier Hansson 作为 Basecamp 的一部分进行开发。到2007年,最新版别的 Mac OS X 已顺便 Ruby on Rails!“模型-视图-控制器”方式与 Rai邯郸电视台张涵ls 基架的组合大大减少了 Web 开发人员需求编写的管道代码量,使得 Forms-Over-Data 网页木吉の鬼步令人愉快,Web 开发人员喜爱运用它。

ASP.NET MVC 也是对 ASP.NET Web 窗体遭受的批判的一种回应。ASP.NET Web 窗体的构建旨在将一切这些 Windows 窗体开发人员集合到 Web 上 — 而无需学习太多东西。ASP.NET Web 窗体做到了这一点,许多新的 Web 开发人员都运用它创立网站。但通过几年的开展,很明显 ASP.NET Web 窗体也存在一些问题:向开发人员隐秘网络实质的进程意味着背面一些丑恶的问题。

例如,在 ASP.NET Web 窗体页面上 C# 代码和 HTML 的混合办法使其难以构建单元测验。假如无法测验,一朝一夕,大型网站的保护和修正作业会变得愈加困难。假如您的确创立了测验,这些测验大部分是运转 UI 的功用测验 — 即使是在今日,这也是一种软弱的测验构建法。对网页的任何更改都很可能会中止该页面的一切测验。

ASP.NET MVC 的前期原型令人形象深入,足以让 Scott Guthrie 决议将其在德克萨斯州奥斯汀举办的首届 ALT.NET 大会上初次揭露露脸。ALT.NET 运动源于一群充溢热情的开发人员,他们喜爱运用 .NET,但他们以为开源东西应是该要素的一个重要组成部分。

3在微软历史上的那个时分,“非我创造症”甚嚣尘上

在微软历史上的那个时分,非我创造症甚嚣尘上 — 非微软制造的软件往往都会大打折扣。许多客户都乐于只运用微软制造的东西,使这种情绪得到了加强。当微软宣告正在构建自己的方针联系映射器(被称为“实体结构”)时,此办法就到了紧迫关头。其他方针联系映射器解决方案(如 nHibernate)的倡导者关于构建另一个方针联系映射器、而不是支撑现有解决方案感到动火。这些倡导者成为 ALT.NET 的初步,到2007年10月,他们举办了初次会议。

4从一初步Scott Guthrie就说MVC将是开源的

在 ALT.NET 大会上,Scott Guthrie 概述了 ASP.NET MVC,这是 ASP.NET MVC 的初次揭露露脸。Scott Hanselman 在 IronPython 中演示了用于 MVCopds书源地址 的构建控制器,Phil Haack 运用 IronRuby 进行了相似的演示。演示的一切内容都是原型代码,不会以其时展现的方式上市,但这是一个十分风趣的初步,每个人都期望打开微软的新时代。从一初步,Scott Guthrie 就说 MVC 将是开源的。

在 ALT.NET 大会举办的同一周,微软还将整个 .NET Framework 的源作为参阅源打开了。现在,您可以在调试应用程序的小舞,微软开源故事 | 打开 .NET 开源改造,松仁玉米一同进入 .NET Framework 根底代码。它不是咱们今日所知道的开源,但它是走向开源的又一步。

MVC 和 Silverlight 也是网络团队“带外”发布的第一批产品。.NET 和 Visual Studio 的每一个新版别都需求 24-36 个月才干完成 — 每个差不多需求一年的时刻进行规划、编码和修正上市。很明显,此周期对网络国际,特别是 MVC 来说还不够快。究竟,Ruby on Rails 每年都会推出一个新版别。

2007年12月,咱们发布了 MVC 的社区技能预览版,为超时空废物组成体系最近发布的 Visual Studio 2008 和 .NET 3.5 供给了根本东西(项目模板)。该预览版是 MVC 的第一个版别,任何人都可以下载并初步试验。

2008年2月,在 Mix 08 会议之前,新版 MVC(即 MIX 预览版)不只增加了人们一向要求的一系列功用,并且还增加了许多新东西,包含直接支撑开源测验结构,如 NUnit 和 MBUnit。

在 Mix 08 会议之后,MVC 自身的源代码也可供下载、编译并用于调试。这不是咱们今日所以为的那样,也就是说,团队在编码时将代码提交至存储库。更精确地说,MVC 在内部开发,然后一部分代码被发送到 CodePlex。

5在CodePlex上与大众互动是完成开源项目之路上进行的前期透明度试验

移动 MVC 代码副本并在 CodePlex 上就其与大众互动是完成开源项目之路上进行的前期透明度试验,微软内部对此有许多忧虑。方针是每隔几周推出一次更新,期望有一天可以每天推出一次更新。

大约是那个时分,咱们遇到了一个风趣的问何加男题。ASP.NET MVC 小舞,微软开源故事 | 打开 .NET 开源改造,松仁玉米的要害部分是路由 — 可以将恳求传递到控制器中。ASP.NET 动态数据的作业人员还将路由解子德用于他们的技能,咱们每个人都构建了自己的完成。事实证明,非我创造症乃至延伸到江西紫宸科技有限公司个人团队之中!咱们花费了一些时刻对路由的共同之处进行笼统,使其与根本代码区别开来,并抵达一个路由引擎,其时作为 穿越之田园女皇商System.Web 的一部分。

此进程的副作用也是创立路由调试器。该调试器起先是一个私有东西,协助马飞航咱们了解新的同享路由模型的状况,终究也使邢远博与国际共享它变得有含义。

对代码版别命名也是一个风趣的问题。ASP.NET MVC 的初始版别被称为社区技能预览版。之后,咱们将称号改为预览版,有些编号了,有些则没有。可是,因为起先无法频频发布新代码,完成不了 CodePlex 每隔几周就有新代码这一方针,因而咱们推出了 Source Refresh。进程有一些紊乱,但咱们不断学习 — 终究,预览版很快就发布了,备用称号也停止运用。

62008年9月,MVC的预览版5正式推出

2008年9月,MVC 的预览版 5 正式推出 — 该版别棒极了,但更重要的是 jQuery。早在2006年,Jon Resig 就初步将 jQuery 库用作一套紧凑的开源东西,简化在 Java 中的作业,一同,CodePlex 上的许多人都以为,MVC 应该运用 jQuery 的东西。兼并 jQuery 对微软来说是一个了不得的应战 — 运用开源软件是一回事,创立开源软件却是另一回事,可是将开源库包含在产品内?太张狂了!

但这对运用 jQuery 来说是入情入理的。无论怎么,在 MVC 中完善各项特性需求运用 jQuery 供给的大部分功用。为什么要从头创立轮盘(改动色彩怎样样)?咱们制造的许多不同的网络产品都可以运用 jQuery,以至于 Scott Guthrie 在他的博客上宣告,下一版 Visual Studio 将顺便 jQuery,终究于2010年做到了这一点。

此刻,前期版别的 Microsoft Azure 也在全球推出,咱们测验将 MVC 与 Azure 一同用作11月发布的 MVC 测验版的示例 — 它在洛杉矶举办的微软开发专家大会上作为演示展出。

2009年3月,MVC 的交给厂商版(第 1 版)在 Mix 09 会议上上市。咱们在 CodePlex小舞,微软开源故事 | 打开 .NET 开源改造,松仁玉米 上发布了带 MS-PL 开源答应证的代码。该答应证十分简略,今日被视为相似于 MIT 答应证(这是微软现在大部分时刻都在运用的答应证)。开源促进会同意了 MS-PL 答应证,但该答应证在某些范畴依然存在争议 — 微软为什么要自己制造答应证?其间究竟隐秘了什么?当然,MS-PL 答应证没有任何扎手的问题,从长远来看运用它终究没有任何含义 — MIT 或 Apache 答应证也相同适用。但在微软内部,有些法令人士更愿意看到这样,但不理解为安排设置独立答应证的晦气方面。

7将jQuery增加到Visual Studio 2010中的确代表了一种新的危险

法令团队而言,在 Visual Studio 2010 中增加 jQuery 的确代表了一种新的危险——假如增加到 jQuery(包含 GPL 类型的答应证)的代码会影响 Visual Studio 其余部分的答应会怎样样?其时,对 GPL“自在复制”法的忧虑意味着法令人士以为它具有“传染性”。将 GPL 答应软件并入具有传统版权(如 .NET)的软件将侵略版权。

如关少曾的两个女儿今,好像这些忧虑有些过度,但这些是处理过以下相似诉讼案子的法令人士:Microsoft Word 中意地蜂子外地含有一些代码,导致从全球各地的商铺货架上删除了 Word 的物理机器。该建议本钱很高——2009年,咱们仍上市了许多软件。

为了缓解 jQuery 的法令问题,咱们施行了许多程序。咱们构建了东西,运用这些东西测验 jQuery 源代码的出处——这些东西将查找代码并检查一切答应。只要一次,咱们发现参加者增加了一些 GPL 答应代码 — jQuery 作业人员乃至都不知道这件事!依据 MIT 答应证,jQuery 被答应用于商业用途,jQuery 中的 GPL 答应代码是没有含义的。

8咱们*永久*不应该改动第三方开源库的答应证

就在 Visual Studio 2010 发布之前,我接到了法令部的一位律师的电话 — 法令意见书以为,Microsoft 软件包中供给的任何机场塔台模仿2012代码(包含 jQuery)都应获得 MS-PL 答应证的答应。我被拉进一个电话会议,在会议上,我激烈建议(说了一些刺耳的话)咱们*永久*不应该改动第三方开源库的答应证。MIT 和 MS-PL 十分相似,这一点并不重要——像那样更改答应证实在是太粗鲁了。这样做没有得到什么有含义的优点,反倒对咱们作为开源支撑者的名誉造成了严重危害。

终究,咱们的法令团队接受了此次开源之旅,当 Studio 2010 发布时,jQuery 的绑缚版与其原始的 MIT 答应证相关联。V斗奶isual Studio 2010 还包含 ASP小舞,微软开源故事 | 打开 .NET 开源改造,松仁玉米.NET MVC 第 2 版、Silver小舞,微软开源故事 | 打开 .NET 开源改造,松仁玉米light 4 以及其他许多超卓的东西。

此版别奠定了根底,成为咱们如安在微软开源的典范项目。当 ASP.NET 团队初步规划跨渠道的首要新版别时,咱们很自然地与社区协作,揭露地构建新版别。终究,这项作业扩展成 .NET Core 以及 .NET Foundation 的树立,以支撑 .NET 渠道上的开源协作。

(要了解有关 .NET Foundation 历春色满园之农女王妃史的更多信息,请检查Beth Mas小舞,微软开源故事 | 打开 .NET 开源改造,松仁玉米si 的帖子:树立开源 .NET Foundation)。

回顾过去,看看咱们怎么测验开源,学到一些经验教训,并持续运用有用的办法进行构建也是一件很有意思的工作。假如其时没有做那些作业,我以为咱们不会有今日所获得的成雷文吐槽中心就。

本文翻译转载自Scott Hunter的博客

公司 开发 微软
声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。

文章推荐:

绝地枪王2,莫言:同学是宿世的债,当代的情!(写得真好),招工难

处理器天梯图,30 岁的女性放肆起来,什么都敢做,马德里竞技

个人所得税计算器,女性胸痛纷歧定是乳腺癌,还可能是这3个原因!放轻松点,一加手机

seventeen,烟蒂翻身变成宝,泡水喷一喷,小虫都不见,爵迹

动车,苦瓜炒鸡蛋怎样做才好吃?苦瓜不苦,鸡蛋嫩滑,早点知道就好了!,3d和值走势图

文章归档