OpenStack之殇
这篇文章很容易招人猜忌,尤其是在OpenStack已经成为“饭碗”的情况下,唱衰OpenStack是有砸饭碗的嫌疑。出于一个工程师的“率真”我觉得很有必要写出我自己的看法(无论你怎么看)。
我想谈论一本书《大教堂与集市》,被成为开源“圣经”作者是大名鼎鼎的Eric S. Raymond大叔。里面讨论了两种开源软件模式:
大教堂模式:由天才式专家或几个行家里手 精心打造,不成熟时绝不发布beta测试版,对代码睚眦必究。
集市模式:早发布、常发布、尽量把事情都交给社区、开放到几乎是混乱的程度。作者以Linux为例,它不像建筑大教堂那样的安静和虔诚,倒更像是一个乱糟糟的大集市,充满了 各种不同的计划和方法(Linux的文件服务器就是个很好的例子,这里可以接受任何人的代码和文档提交),而既稳定又一致的一个操作系统就这 么诞生了。
很显然,雷叔对集市模式啧啧称奇推崇备至。在本书发表之后的几年里,Linux成立了“Linux内核结构规划管理委员会”。没错,打脸的事情发生了——Linux成为了一个“大教堂式”开源项目。“打脸”不是因为雷叔不够聪明而是因为历史原因,早期的互联网用户基本上都是“专家级”的人物,所以用集市这种野蛮生长的模式不太会存在“质量”问题。而互联网的普及给项目带来两种“参与者”
妄想型码农(wannabe programmer),他们善于发表意见热衷于各种流行技术并且对他们“非黑即白”(one true path)的思考方式有着特殊的偏执,网上很多讨论是廉价的,所有邮件列表里面充斥着看似可笑的“问题讨论”。
闲杂人员(the masses),他们是一群善意的人,他们对系统一知半解——甚至都写不出Hello Wolrd。但是他们有很强的自我意识,可以花了几星期时间去争论并投票该使用什么编译器,甚至去争论项目应该采用xxx技术,遗憾的是他们对整个系统的设计一无所知。
“真正的程序员”和一些捣乱的家伙之间的区别要比“伟大”和“普通”之间的区别要大得多,研究表明生产效率是30:1。所以对于一个开源项目来说真正起作用的只是一些“核心”开发人员。
这就是“OpenStack之殇”的最根本原因,它的组成不仅仅包含“妄想症码农”、“闲杂人员”还包括各怀鬼胎的“厂商代表”。这是一个典型的“大集市”,鱼龙混杂,臭气熏天,每个人的“贡献”都是有自己的目的。OpenStack的质量也符合“大集市”的特点——有时候真的是bug满天飞,子项目非常多,部署安装、使用都极其复杂。
OpenStack的“老东家”rackspace也意识到[这一点][2],但是他们只是认为是因为项目规模越来越大造成的问题,他们希望社区可以聚焦在某些“核心项目”,甚至认为“简化安装部署”这件事情应该是由第三方商业公司支持。相比较而言[这篇文章][3]更加“真实”,安装、部署、使用复杂;步子很大每年两个版本,居然还不提供便捷的升级方式,每次升级都是各种折腾;每个厂商都在“塞”自己的东西。
但是两篇文章其实都没有真正注意到OpenStack真正的症结所在,他们看到的问题只是“形式”上的问题,看似经过努力就可以解决问题其实不然。OpenStack的问题是“代码质量”的问题,它拥有“核心项目”,但是依旧是“集市模式”所以它无法提供一个稳定、可靠、坚固的“基石”。这也就意味着“商业公司”基本上能做的事情是“测试”->“找到靠谱的配置”->“打包成自己的产品”,但是测试是发现错误而不是提高“质量”,在没有个稳定的“内核”的情况下“商业公司”能做的事情非常有限,也非常艰难。(商业公司就是在帮尽可能的OpenStack填坑,无奈这是一个“天坑”。。。。)
OpenStack是一个超大规模开源社区,这样的开源活动其实是史无前例的。它的参与人数,参与的厂商已经超过了任何一个我们熟知的开源项目,管理这样的一个社区也是没有任何“经验”可以借鉴的。但是有一点我们必须牢记:开源是一场黑客运动,而不是时装秀。它应该关注质量,任何开源项目都应该应该在适当的时候建立自己的——“管理委员会”,这个委员会应该是纯粹的技术导向不包含任何商业成分,它的成员应该是“核心”项目的“核心成员”而不是演讲家和商人。