【转帖】.NET的一点历史故事:Novell的崩溃和Xamarin的重生
.NET的一点历史故事:Novell的崩溃和Xamarin的重生
https://blog.csdn.net/sD7O95O/article/details/78096502 学习安装 mono 时了解到的。
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的重生的更多相关文章
- 【转帖】.NET的一点历史故事:作者的一些感想
.NET的一点历史故事:作者的一些感想 https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654068684&idx=2&a ...
- 【转帖】NET 的一点历史往事:和 Java 的恩怨
NET 的一点历史往事:和 Java 的恩怨 https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654068672&idx= ...
- 浏览器User-agent String里的历史故事
你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ...
- 为什么浏览器User-agent总是有Mozilla字样(User-agent String里的历史故事)【搜藏】
你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ...
- 【转帖】Linux的历史----Linux内核剖析(一)
Linux的历史----Linux内核剖析(一) 2015年04月09日 10:51:09 JeanCheng 阅读数:11351更多 所属专栏: Linux内核剖析 版权声明:本文为博主原创文 ...
- [转帖] JVM虚拟机的历史
Java虚拟机发展史 https://blog.csdn.net/tinyDolphin/article/details/72809018 如何查看自己的虚拟机版本?Sun Classic / Exa ...
- Mac OS 的一点历史: Mac OS, Mac OSX 与Darwin
作为收购 NeXT 公司的结果,苹果公司获得了 NeXTSTEP 架构中的 Mach 和 Objective-C 等设计.尽管 NeXTSTEP 本身已经不再发展了,但是其中的组件在 OS X 中获得 ...
- 谈谈 StringBuffer 和 StringBuilder 的历史故事
1.前言 众所周知,StringBuffer 是线程安全的 ,而StringBuilder 不是线程安全的 ,但是 StringBuilder 速度会更快. 事实上 作为一个字符串拼接 方法 ,在线 ...
- Blazor 002 : 一种开历史倒车的UI描述语言 -- Razor
Razor是一门相当怪异丑陋的标记语言,但在实际使用中却十分高效灵活.本文主要介绍了Razor是什么,以及Razor引擎的一些浅薄的背后机理. 写文章前我本想一口气把Razor的基本语法,以及Blaz ...
随机推荐
- Spring@PostConstruct和@PreDestroy注解详解
@PostConstruct注解使用 @PostConstructApi使用说明 The PostConstruct annotation is used on a method that needs ...
- struts2 404错误
action类必须放在xxxx.xxx.xxx.xxx.action 包下才可以.
- Syn Flood 攻击
什么是SYN Flood攻击? SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击.效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接 ...
- Educational Codeforces Round 13 D. Iterated Linear Function 逆元+公式+费马小定理
D. Iterated Linear Function time limit per test 1 second memory limit per test 256 megabytes input s ...
- [Luogu] 宝藏
https://www.luogu.org/problemnew/show/P3959 模拟退火解法 发现prim求最小生成树是明显错误的 因为prim每次要取出边权最小的点 然而在这道T中这样做不一 ...
- 【线性代数】1-2:点乘和长度(Dot Products and Length)
title: [线性代数]1-2:点乘和长度(Dot Products and Length) toc: true categories: Mathematic Linear Algebra date ...
- Python 爬取喜马拉雅音频
一.分析音频下载相关链接地址 1. 分析专辑音频列表页面 在 PC端用 Chrome 浏览器中打开 喜马拉雅 网站,打开 Chrome开发者工具,随意打开一个音频专辑页面,Chrome开发者工具中 ...
- vue 循环Redio
标准用法,做个笔记.(图示是elementUI,其他框架大同小异) <el-radio-group @change="changePayHandler" v-model=&q ...
- 预处理、const、static与sizeof-使用宏定义得到一个数组所含的元素个数
1:代码如下: #define ARR_SIZE(a) (sizeof((a)) / sizeof((a[0])))
- CodeIgniter启用缓存和清除缓存的方法
Codeigniter支持缓存技术,以达到最快的速度.尽管CI已经相当高效了,但是网页中的动态内容.主机的内存CPU和数据库读取速度等因素直接影响了网页的加载速度.依靠网页缓存,你的网页可以达到近乎静 ...