Tag Archives: OpenSolaris

从 Solaris 到 illumos – 关于技术权力抗争、开源以及梦想的故事

今天看了现任 Joyent 工程副总裁 Bryan Cantrill 的演讲:Fork Yeah! The Rise and Development of illumos,讲述 illumos 项目的来龙去脉,披露了不少关于 Sun 、 Oracle 以及开源社区的信息,据说 Cantrill 在做这个演讲的时候,与会者很「动容」。而其中的陈年往事咀嚼起来很是值得思考。

首先说说这位 Bryan Cantrill ,「他曾荣登 MIT 《科技创业》35位35周岁以下顶尖技术专家榜,并被 InfoWorld 评为年度杰出创新家。在加盟 Joyent 团队之前,Cantrill 是Sun公司的杰出工程师。他在Sun公司花了十多年的时间研究了系统软件,包括从内核到浏览器客户端代码,以及和内核相关的多种组件。最有名的便是 Cantrill 联合设计并实现了DTrace。」(refer) 在 Oracle 收购 Sun 之后,Cantrill 于 2010 年 7 月离开的 Oracle,加入了 Joyent 。

在 Bryan Cantrill 的演讲中,他先是从个人的角度回顾了一下「历史」:从 SunOS 4.x 到 Solaris 的转换过程中,有很多优秀的工程师离开,导致这个问题的主要原因是引入了不成熟的 SCM 工具,Network Software Environment (NSE) — 可见,技术官僚的错误决定在哪里都是极有破坏性的。NSE 的糟糕引来了工程师的「逆袭」,Larry McVoy 干脆开发了一套 NSE 轻量级的变种,NSElite。通过 NSElite 以及后来的 Teamware , Roger Faulkner、Tim Marsland、Joe Kowalski 以及 Jeff Bonwick 等人领导的 Solaris 2.3 项目基本达到了还可以的并行开发的效率,不过到了 Solaris 2.4 就无能为力了,质量再次滑坡。

Solaris 2.5 的开发则是背水一战,只许成功,不许失败。这个时候,Sun 有了新的硬件 UltraSPARC-I 。为确保开发质量,工程师们进行了「接管」: Jeff Bonwick 担当起代码看门人的角色,坚持「if it’s broken, rip it out」的原则,确保了 Solaris 2.5 按时发布,并且确保了软件质量。经此一役,工程师们再也不愿意失去对操作系统开发上的控制。

到了 1990 年代中期,一个无法回避的论断是 Unix 必将死于 Windows NT 之手,而令人无法相信的是,Sun 居然是唯一一家意图对抗 Windows NT 的操作系统开发商。新一代「Bonwick Youth」的加入,天才们互相吸引,期待给操作系统带来革新,就像当年的 Xerox PARC 实验室那样。到了 2001 年年中,新的激进的开发开始了,这些新的操作系统功能包括:DTrace、ZFS、Zones、FMA、SMF 等。这些激动人心的特性并非由市场或是管理层驱动,而完全是工程师的想法。

ZFS,号称「终极文件系统」,首席设计师即为 Jeff Bonwick。

而这个时候,Linux 以及开源运动已经兴起,对 Sun 不可能没有冲击,内部也在反思。但是出于知识产权方面的限制,讨论了未有定论。2005 年,时任 CEO 的 Jonathan Schwartz 做出决定将操作系统开源,先是 Dtrace 开源,然后是 OpenSolaris ,时间是 2005 年 6 月。遗憾的是,有些小的但是至关重要的软件则无法开源(比如有些驱动程序含有第三方知识产权),为此 Sun 制定了 CDDL 许可协议,不过与 GPL 不兼容。

2007 年开始,Sun 决定创建一个全新的基于 OpenSolaris 的发布,名字仍然叫做 OpenSolaris,接下来的几年,Sun 与 OpenSolaris 管理委员会(OGB) 陷入了诸多摩擦,相互牵制。OpenSolaris 发展缓慢。

随着 2009 年 Oracle 宣布收购 Sun,到 2010 年收购完成收购。OpenSolaris 的命运已经很清楚了:Oracle 对此毫无兴趣。

Illumos Logo

2010 年的夏天,存储厂商 Nexenta 的 Garrett D’Amore 在 Rich Lowe、Jason King 等人的帮助下,发起了 illumos 项目, D’Amore 等人针对版权限制的软件,或是从头写代码,或是从 BSD 系统移植,2010 年 8 月 3 日,illumos 正式可用。「Illumos」这个词来自 Illuminare,也即拉丁语的 Illuminate,「照明、照亮」的意思,可谓深有用意。

illumos 项目的最终目标有两个:一是使用开源代码取代所有仍在 OpenSolaris 使用的专有代码,二是围绕之前的OpenSolaris 代码库建立一个独立的社区。严格来说,并非 OpenSolaris 的分支项目。

2010 年 8 月 13 日,星期五,Oracle 内部泄露出来的邮件写到「在企业版Solaris系统完整发布后,我们将会向得到许可的 CDDL 或其他开源授权发布更新。通过这种方式,技术创新将会首先出现在我们发布的版本中。我们将不再实时发布整个Solaris系统的源代码。」

Oracle 的对待 OpenSolaris 的冷漠乃至不作为导致了 Solaris 团队的大范围流失,比如前文提到的 Jeff Bonwick 也在 2010年 9 月 30号 离职。在不到 90 天内,DTrace 团队全部成员离开 Oracle,其他关键特性的开发人员亦纷纷离职。好消息是,这些离开的工程师全部加入了支持 illumos 项目的公司,比如 Nexenta、Joyent 、Delphix 等。关于 DTrace、ZFS 、Zones 等操作系统特性的创新将由 illumos 传承,但不会再次出现在 Solaris 上。illumos 软件库将成为记录操作系统技术危机的一个活标本。

从 Oracle 离开的 OpenSolaris 工程师们绝大多数活跃于 illumos 社区,给 ZFS 、DTrace、Zones 等带来了更多激动人心的特性。基于 illumos 的发布包括 OpenIndian、SmartOS、illumian 等,这些发布版面向不同用户群,互为补充,发展势头不错。

但是,发展中的 illumos 项目依然矛盾重重,去年 LWN 杂志的一篇题为 Illumos: the successor to the OpenSolaris community 的文章揭示了开源社区的一些明争暗斗。开发者 Stamos Tolias 抨击 illumos 项目的「思维狭隘,ZFS中心独裁以及大教堂式的开发模式」,并且企图另建分支。Illumos 的发展被认为不够开放,缺乏独立性,而 Oracle 的潜在诉讼也正在威胁 illumos 的命运。谁都知道 Oracle 公司打官司的「威力」。

也正是因为 illumos 项目由几家商业公司支持,暂时来看,怕是很难摆脱「大教堂」模式的开发弊病,而这引起了技术社区的批评。在这里,只能期待这些支持 illumos 项目的商业公司不要短视。祝愿 illumos 在将来能有更好的发展吧。

如诸君所见,illumos 项目寄托了一代技术精英的梦想。从 SunOS 到 Solaris ,从 OpenSolaris 再到 illumos ,期间发生的故事不知道有多少,关于 Sun 跌宕起伏的命运,关于技术权力抗争、开源以及梦想的故事,或许将来能有人详细如实的记录下来,一定非常有借鉴意义。

「Code over discussion; Innovation over democracy」
参考信息:

PS. 一时仓促,应有谬误,欢迎指出。

EOF

Smugmug 使用 MySQL on ZFS 的成功经验

看到 Smugmug 的 CEO
Don MacAskill
写的一篇关于使用 Sun 软件栈的经验。Web 2.0 公司用 Sun 这套东西的真的不多见。

Smugmug 解决方案前后对比
旧方案 新方案
Linux OpenSolaris
MySQL 5.0 MySQL 5.1
LVM2 + EXT3 ZFS
RAID RAID
非压缩 GZip9 卷压缩

其实从一个技术体系迁移到另一个技术体系,最合理的理由就是能得到哪些收益。整个项目看下来,ZFS 是其中最大的亮点。管理简单,功能丰富,足够稳定。此外,ZFS 的备份、压缩功能也是非常值得称赞之处。

至于 OpenSolaris 的启用,倒是有一些潜在的隐患,比如 GNU 工具的集成使用上,缺少经验可能会给用户带来不少麻烦。其实 Sun 也是的,干脆把 ZFS 和 Dtrace 移植到 Linux 上算了。何必抱残守缺呢? 说起 Dtrace ,这可是好东西,性能 Tuning ,那可是屠龙刀。值得一提的是,以 OpenSolaris 衍生的Nexenta 项目似乎很有趣。

EOF

活动:Solaris网络虚拟机构架和Grails框架分析

杭州 OpenSolaris/OpenSource User Group(OSUG) 活动
Open_Solaris_logo_200.gif

Solaris系统中网络虚拟机构架分析

分享嘉宾会就虚拟化技术的逻辑结构及其层次,具体部署一个Solaris虚拟化环境,初步实现数据迁移、容器设置、容器管理等一系列虚拟化技术进行了充分的探讨。

基于Groovy的Grails开源框架分析

动态语言已经迎来它的春天,我们感受过PHP的便捷,Python的简约,以及Ruby的强大直观,现在一个被称为”第二代Java语言”的晚辈—-Groovy试图跳出来唱主角。它是怎样地优秀和特殊,又和Java有着如何密切的亲戚关系,在这个讲座里,大家将听到关于动态语言形象和深入的诠释,看到Groovy on Grails的方方面面。共分为动态语言、Groovy介绍和Grails框架分析等三个部分。

感兴趣的朋友请先去活动页面查看信息。周六下午,我在支付宝恭候各位。也可以来找我进行技术聊天 :)

EOF

看片会与 Sun 用户组活动归来

上午先在公司解决了一下 Nginx 上跑 Awststs 的问题。然后出门了。计划中我的分享从 3 点开始,先绕道去看一下王晓峰导的 DV 看片会。赶到凡人咖啡馆,都已经没位置了,只好在前面水管上坐着。不得不说,这个咖啡馆在这个下午成了全杭州小资的密集聚集地。

王小峰导演(在字幕上用”小”而不是”晓”)简单的做了致辞,告诉大家做字幕的小伙子很辛苦,同时现在的这个版本配音效果有点问题。然后就开演啦。片名《你丫真狠》,讲的是狗仔队的事儿。编剧很见功力,导演水平也明显比前面的《小强历险记》和《十面埋妇》有进步。可惜因为时间关系,我只看了一半就走了,还不知道后半部剧情如何发展的。

在预定的时间前赶到了青藤茶馆,参加活动的人来得不少,大家对技术的热情可见一斑,只是杭州的技术活动相对比较少。今天美中不足的是场地有点小,多少有点局限。中场休息了一会儿,开始我的分享,基本上讲一小段会回答一到两次提问,这种交互式的交流我还是比较喜欢的。如果完全对着 PPT 对很多人讲,其实效果不那么好的。整个 PPT 主要部分在这几个实践点:

  • 建立基准测试(IO层、网络、Cache、App 等)
  • 持久性 Connection(“连接风暴”问题)
  • 选取合适的数据类型
  • 非关系型数据的存储选择
  • 分区与 Sharding
  • 反范式(Denormalization)
  • 抛弃存储过程封装业务逻辑的思路

没有内容只有骨架,在这里看起来好像干巴巴的。希望有时间能就这个话题写一篇文稿出来。今天同行的还有同事简朝阳,他最近在 MySQL 方面做了不少研究。

这次活动的视频

EOF