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

https://blog.csdn.net/sD7O95O/article/details/78096502

学习安装 mono 时了解到的。 
2017年05月07日 08:34:30 dotNET跨平台 阅读数 144
 
 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sD7O95O/article/details/78096502

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)获取相关信息。感谢支持。

相关文章:

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

【转帖】.NET的一点历史故事:Novell的崩溃和Xamarin的重生的更多相关文章

  1. 【转帖】.NET的一点历史故事:作者的一些感想

    .NET的一点历史故事:作者的一些感想 https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654068684&idx=2&a ...

  2. 【转帖】NET 的一点历史往事:和 Java 的恩怨

    NET 的一点历史往事:和 Java 的恩怨 https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654068672&idx= ...

  3. 浏览器User-agent String里的历史故事

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ...

  4. 为什么浏览器User-agent总是有Mozilla字样(User-agent String里的历史故事)【搜藏】

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ...

  5. 【转帖】Linux的历史----Linux内核剖析(一)

    Linux的历史----Linux内核剖析(一) 2015年04月09日 10:51:09 JeanCheng 阅读数:11351更多 所属专栏: Linux内核剖析    版权声明:本文为博主原创文 ...

  6. [转帖] JVM虚拟机的历史

    Java虚拟机发展史 https://blog.csdn.net/tinyDolphin/article/details/72809018 如何查看自己的虚拟机版本?Sun Classic / Exa ...

  7. Mac OS 的一点历史: Mac OS, Mac OSX 与Darwin

    作为收购 NeXT 公司的结果,苹果公司获得了 NeXTSTEP 架构中的 Mach 和 Objective-C 等设计.尽管 NeXTSTEP 本身已经不再发展了,但是其中的组件在 OS X 中获得 ...

  8. 谈谈 StringBuffer 和 StringBuilder 的历史故事

    1.前言 众所周知,StringBuffer 是线程安全的 ,而StringBuilder 不是线程安全的  ,但是 StringBuilder 速度会更快. 事实上 作为一个字符串拼接 方法 ,在线 ...

  9. Blazor 002 : 一种开历史倒车的UI描述语言 -- Razor

    Razor是一门相当怪异丑陋的标记语言,但在实际使用中却十分高效灵活.本文主要介绍了Razor是什么,以及Razor引擎的一些浅薄的背后机理. 写文章前我本想一口气把Razor的基本语法,以及Blaz ...

随机推荐

  1. 近期将要学习的内容(flag)

    块状链表 左偏树 最大流,最小割 费用流 数位DP 计算几何 主席树 树套树(弃疗) 斜率优化 manacher kmp,exkmp 树链剖分 splay树(只看了理论) Trie树 线段树操作及应用 ...

  2. POJ - 3376 Finding Palindromes manacher+字典树

    题意 给n个字符串,两两拼接,问拼接后的\(n\times n\)个字符串中有多少个回文串. 分析 将所有正串插入字典树中,马拉车跑出所有串哪些前缀和后缀为回文串,记录位置,用反串去字典树中查询,两字 ...

  3. CF985C

    CF985C 题意: 你要组成N个木桶,组成每个木桶需要K个木块,(第二行给你N*K个木块),使得任意两个木桶之间的差值不超过L的情况,使得所有木桶可以装的水的和最大,输出这个最大和,如果无法满足要求 ...

  4. 剑指offer21----数组中奇数偶数

    题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 基本实现 如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每 ...

  5. Kafka 实践

    问题描述 配置 Kafka-client 2.x, Spring-Kafka 默认配置 Kafka 三个partition, 使用KafkaListener按group消费. 现象 某天突然发现两个p ...

  6. linux(redhat)安装jdk1.8

    第一步:下载Linux环境下的jdk1.8文件 我的Linux是32位的,因此我下载jdk-8u144-linux-i586.tar.gz文件. 下载链接地址:http://www.oracle.co ...

  7. Rsync数据同步工具及sersync同步工具

    Rsync简介 Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似s ...

  8. easyUI之validatebox验证框

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  9. 注解方式实现AOP编程

    步骤: 1) 先引入aop相关jar文件           (aspectj  aop优秀组件) spring-aop-3.2.5.RELEASE.jar   [spring3.2源码] aopal ...

  10. 用es6实现一个promsie

    Promise 使用方法:https://www.runoob.com/w3cnote/javascript-promise-object.html 直接上代码,相关的解释都在代码的注释里面,这里以m ...