.NET的一点历史故事:Novell的崩溃和Xamarin的重生

Novell 是一家神奇的技术公司,它自行开发和收购了很多不错的软件和标准,涵盖 NetWare、IPX、WordPerfect、Quattro Pro,Unix,SUSE和Mono。它曾有心挑战微软的霸权,最后不免以失败收场,但在开源运动的发展历程中,它所扮演的角色无可取代:

  • 1993年它收购 Unix System Laboratories 并由此获得 UNIX 版权,并在 SCO 诉 Linux 社区这个世纪大案中保卫了 Linux。

  • 收购 Ximian 和 SUSE,使得 GNOME 和 Mono 等开源项目得到了一个相对宽松的发展环境并进入企业市场。

  • 与微软达成了专利合作协议,并且增进产品互操作性,也促成了 Moonlight 项目开发过程中 Mono 团队和微软公司 .NET 团队之间的初次合作。

可是和 Sun 公司类似,因为运营状况不佳,2010年11月 Novell 被 Attachmate 财团以22亿美金价格收购。这家专业收购公司的财团很快开始重新组合各种资产,在大约半年后开始对 Novell 公司进行大规模裁员。各个产品组中 Mono 团队受到的影响最大,全部成员失去了饭碗。

裁员目标的选择当然体现了 Attachmate 管理层的市场判断。他们知道 SUSE 是个优质资产,必须加以保护。但他们没看好当时正值发布初期的 MonoTouch,和尚在全力研发中的 Mono for Android 这个极有市场潜力的产品。这种短视不仅给两个极有价值的项目带去不确定的未来,也直接导致原有用户连已经购买的产品都不能激活。

Miguel de Icaza 在这个关键时间做出了一个重要的选择,体现出了做事的腔调。首先他安抚人心,团结团队中各位成员,然后立即给正在外地休假的 Nat Friedman 打了个电话。两个从1999年就合作的老朋友一拍即合,准备自己投资创建新的公司来继续 Mono 系列产品的开发。和给 Mono 项目起名一样,他们再次选择了猴子这个机灵的家族,把公司命名为 Xamarin(来自 Tamarin 这个猴子的分类)。

虽然 Mono 依然是一个开源项目,Xamarin 员工参与其中并没有障碍,但是 Attachmate 当时仍然掌握着 MonoTouch 等收费产品的代码版权,怎样通过合适的渠道拿到这个版权对于初生的 Xamarin 来说。

这里 Miguel 采用了一个神奇的方法,一面保留和 Attachmate 接洽的可能,一面利用 Mono 开源项目的源代码来从头开发 MonoTouch 和 Mono for Android 的模仿产品。为了避嫌,这次原来开发 MonoTouch 的几个工程师转去做 Mono for Android,而预研 Mono for Android 的几个工程师开始从头重写 MonoTouch。

大概是因为技术方面已经没有特别挑战,Xamarin 很快开始了产品封闭测试,准备在最短时间内将它们推向市场。很多老用户也开始给 Attachmate 压力,而潜在新用户更是焦急地等待新产品的发布。

2011年7月事情峰回路转,Attachmate 资源整合后刚刚建立的 SUSE 主动找到 Xamarin 来谈合作,并在一揽子协议签字后将 MonoTouch 和 Mono for Android的版权拱手相让。当然作为交换,Xamarin 公司继续为 SUSE 客户提供 Mono 相关产品的技术支持服务。Mono开源项目的主导权也正式由 SUSE 转交到 Xamarin 手中。

经过这次合作,Xamarin 终于卸下一直担心的专利包袱,全力投入到新产品的开发之中。有趣的是,之前交叉开发的过程中据说团队里诞生了很多全新的想法。在拿回 MonoTouch 等产品版权后,这些新想法也逐步在产品之中一一实现,总算没有白费气力。

值得注意的是和 Novell 时代的 Mono 团队相比,Xamarin 是一家更为纯粹的移动平台开发工具公司。很多带有 Novell 时代印记的老技术明显不再大幅改进,失去了活力,包括:

  • libgdiplus 和 Mono 的 Windows Forms 实现

  • Mono for Visual Studio,一个在 Visual Stdio 中开发和远程部署调试 Mono 程序的插件

  • Moonlight,开源的 Silverlight 实现

同时也有部分 Mono 核心团队的成员因为个人原因加入其它公司或者创建了自己的公司。不过他们其实从来没离开过 Mono 这个业已庞大和有生命力的生态系统,各自又在新的岗位上推动了 Mono 的发展。后面将会详细介绍其中的两位代表。

附带提一个2014年9月发生的趣事。MicroFocus 公司宣布收购 Attachmate 集团,就此获得了 Novell 这个厂牌。而几年之前 MicroFocus 同样收购了 Borland 公司。这两个古老的著名品牌最后以这种方式聚到一起,令人唏嘘。

本来前面已经讲过连载结束了,不过今天整理的时候发现其实自己的博客上面已经发布过一个接近完整的章节了,所以就随手贴过来,以饲读者。原稿地址是,

https://blog.lextudio.com/mono历史片段-novell的崩溃和xamarin的浴火重生-bf1dd7b8621b

另外关于剩余多数章节的阅读方式,我现在还没有找到合适的渠道。所以有兴趣提前购买阅读的朋友,现在可以直接联系我(邮件至 support@lextm.com)获取相关信息。感谢支持。

相关文章:

  • .NET 的一点历史往事:和 Java 的恩怨

  • .NET的一点历史故事:招兵买马和聚义山林

  • .NET的一点历史故事:擦肩而过的机遇

  • .NET的一点历史故事:误入歧途,越陷越深

  • .NET的一点历史故事:石猴出世,腾云驾雾

  • .NET的一点历史故事:作者的一些感想

原文地址:http://weibo.com/ttarticle/p/show?id=2309404104291332827636


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

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

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

相关文章

两步验证杀手锏:Java 接入 Google 身份验证器实战

转载自 两步验证杀手锏:Java 接入 Google 身份验证器实战 什么是两步验证? 大家应该对两步验证都熟悉吧?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见不鲜,所以苹…

JS删除之前弹出一个带有确认和取消按钮的提示框confirm()

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>添加删除记录…

剑英的区块链学习手记(一)

开篇布拉拉 因为参与了小蚁的c#智能合约编译器的开发&#xff0c;让我第一次近距离接触到区块链技术。 以前我对区块链技术的了解&#xff0c;只知道有一种叫做比特币的玩意儿&#xff0c;以前有同事在几百块一个比特币的时候屯了一批&#xff0c;后来价格炒高了&#xff0c;…

.NET Core 2.0体验

.NET Core 2.0预览版及.NET Standard 2.0 Preview 这个月也就要发布了。具体相关信息可以查看之前的文章.NET Core 2.0及.NET Standard 2.0。 今天来实际体验.NET Core 2.0&#xff0c;正式版发布还需要一段时间。 .NET Core 2.0 本文使用的是 nightly .NET Core 2.0 runtim…

统一的.NET文档体验发布

Microsoft发布了新的.NET API阅读器。该阅读器可以查找所有相关的.NET文档。第一版中包括了.NET Framework、.NET Core、.NET Standard、Xamarin和Azure NuGet软件包的参考文档&#xff0c;并可根据用户反馈添加其它领域的文档。 该阅读器提供了在同一处搜索、展示、发现和浏览…

使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用

最近我为我自己的应用开发框架Apworks设计了一套案例应用程序&#xff0c;并以Apache 2.0开源&#xff0c;开源地址是&#xff1a;https://github.com/daxnet/apworks-examples&#xff0c;目的是为了让大家更为方便地学习和使用.NET Core、最新的前端开发框架Angular&#xff…

IntelliJ IDEA 最常用配置详细图解,新手入门必看

转载自 IntelliJ IDEA 最常用配置详细图解&#xff0c;新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候&#xff0c;会有很多设置&#xff0c;会方便以后的开发&#xff0c;磨刀不误砍柴工。 比如&#xff1a;设置文件字体大小&#xff0c;代码自动完成提示&#xff0c;版…

MyBatis(延迟加载 缓存)

mybatis目录 一对一延迟加载 1.在SqlMapConfig.xml中配置setting标签 2.在IAccoutDao.xml中配置association标签 3.测试类 4.成功运行 一对多延迟加载 2.在IUserDao.xml中配置collection标签 缓存 一级缓存 二级缓存 1.SqlMaoConfig.xml中 2.在需要使用二级缓存的实体类的mapp…

剑英的区块链学习手记(二)

孙子说&#xff0c;知己知彼&#xff0c;百战不殆。 咱是通过小蚁学习区块链技术的。 开工之前&#xff0c;先了解一下小蚁的资料家族。 小蚁网站 https://www.antshares.org/ 小蚁源码 https://github.com/AntShares 小蚁SDK源码 https://github.com/ANTSHARESSdk 比较集…

跟我学 Java 8 新特性之 Stream 流(二)关键知识点

转载自 跟我学 Java 8 新特性之 Stream 流&#xff08;二&#xff09;关键知识点 我们的第一篇文章&#xff0c;主要是通过一个Demo&#xff0c;让大家体验了一下使用流API的那种酣畅淋漓的感觉。如果你没有实践&#xff0c;我还是再次呼吁你动手敲一敲&#xff0c;自己实实…

Build 2017 | 微软开发者大会临近,今年的主题是边缘计算

200 多家明星企业&#xff0c;20 位著名投资机构顶级投资人共同参与&#xff01;「新智造成长榜」致力于发掘 AI 领域有 “三年十倍” 成长潜力的创新公司&#xff0c;下一波 AI 独角兽&#xff0c;会有你么&#xff1f;点击加入&#xff01; 雷锋网按&#xff1a;微软首席执行…

王者齐聚!Unite 2017 Shanghai 日程讲师全揭晓

汇聚了来自全球的 Unity开发者、发行商、培训家及爱好者的 Unite 2017 Shanghai 即将于于 5 月 11 日&#xff0d;13日在上海国际会议中心隆重举行。Unite 大会是由 Unity 举办的全球开发者大会&#xff0c;至今已有 10 年历史&#xff0c;并已成为游戏行业、VR/AR 行业最具权威…

批评?惩罚?

批评&#xff1f;惩罚&#xff1f;最近一直在听王晓春老师的《做一个专业的班主任》&#xff0c;并且上次在校内分享教学经验和技巧的时候&#xff0c;也推荐给其他的老师看了。我一般都是在上班的路上听&#xff0c;王老师的很多观点确实值得我们深思&#xff0c;但是&#xf…

屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python

转载自 屌炸天&#xff0c;Oracle 发布了一个全栈虚拟机 GraalVM&#xff0c;支持 Python 前阵子&#xff0c;Oracle 发布了一个黑科技 "GraalVM"&#xff0c;号称是一个全新的通用全栈虚拟机&#xff0c;并具有高性能、跨语言交互等逆天特性&#xff0c;真有这么…

就业形势如此的严峻,你为何不努力?

就业形势如此的严峻&#xff0c;你们有何理由不努力&#xff1f;今天&#xff0c;围绕就业的问题展开个话题吧。马上&#xff0c;18级1班就要出去就业了&#xff0c;以前带的17级3班三期的时候学生的状态都比较积极&#xff0c;自己知道自己的实力&#xff0c;我和就业老师、班…

涨姿势,图文带你了解 8 大排序算法

转载自 涨姿势&#xff0c;图文带你了解 8 大排序算法 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存。 常见…

React中分页错误

因为save是异步方法 直接从model中取最新的数据

班级第一次问卷调查

135编辑器调差问卷终于&#xff0c;在班内做了一次问卷调查了&#xff0c;这是自同学们入学以来做的第一次调查&#xff0c;主要是从学生的对所学课程、班主任以及教员老师的角度出发的&#xff0c;所有的调查均采取匿名方式&#xff0c;以保证调查的民主性&#xff1a;调查的问…

OAuth 2.0: Bearer Token Usage

Bearer Token (RFC 6750) 用于OAuth 2.0授权访问资源&#xff0c;任何Bearer持有者都可以无差别地用它来访问相关的资源&#xff0c;而无需证明持有加密key。一个Bearer代表授权范围、有效期&#xff0c;以及其他授权事项&#xff1b;一个Bearer在存储和传输过程中应当防止泄露…

Spring Boot 核心配置文件详解

转载自 Spring Boot 核心配置文件详解 用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .properties) 为什么会有这两种配置文件呢&#xff1f;大家都清楚它们的区别和具体使用场景吗&#xff1…