作为一个技术的外行,我对开源软件的了解非常有限,只知道LAMP和Mozilla,在看韩磊翻译的《Dreaming in Code,梦断代码》之前,我并不知道Chandler这个开源软件项目。Chandler的目标是做一个完美的PIM(Personal Information Manager,个人信息管理器)软件,挑战微软的Outlook(以及其背后的Microsoft Exchange),就像Mozilla的Firefox挑战微软的IE浏览器一样,但与Firefox的成功不同,Chandler是一个开源软件的失败标本。几十名顶尖软件高手,拥有足够的资金,用了6年半的时间,试图开发一款梦幻软件,却无疾而终,一个雄心勃勃的梦想是如何在漫长而混乱的开发过程中逐渐消耗殆尽的?
Mitchell Kapor是这个故事的核心人物,1995年,Lotus公司以35亿美元的价格出售给了IBM,作为创始人,Kapor获利1亿美元,Kapor随后做过VC,但不久又回到技术领域,2001年开始做Chandler(这个名字是因为Kapor喜欢推理小说家Raymond Chandler的小说),这个项目源于Lotus于1988年发布的一个名为Agenda的PIM软件,但目标更大。在计划开始之初,Kapor唯一确定的是要以开源的方式进行——虽然缔造了微软之前最大的软件公司,但拥有心理咨询硕士学位的Kapor认为自己只是偶然进入软件行业,并且当Lotus成长为几千个人的大型公司、拥有数亿美元的收入时,他并不感到快乐,反而只有郁闷。
软件开发的方式大致分为两类,集中式和分散式,或者如老牌黑客Eric S. Raymond在一篇名为《The Cathedral and the Bazaar》提到的,大教堂与集市的方式,前者的代表如微软这样的商业软件公司,后者的代表是开源软件。在很长的一段时间内,大教堂方式被认为是大型的、复杂的、重要的项目所必须采用的方式,在Windows Vista发布前夕, 微软中国的某位人士曾经把Windows Vista的研发过程与NASA的太空计划相提并论:几千名工程师用几年的时间共同制造一个极端复杂、强大的软件。但开源软件则证明了早发布、多发布、全委托、尽开放的方式同样可以实现复杂的大项目,无论是在Linux还是Apache、MySQL等项目中,这样的方式都实现了令人瞩目的成功。
Kapor则采取了一种折中的方式,成立了OSAF(Open Source Applications Foundation,开源应用基金会),开始进行Chandler项目,Kapor拥有足够资金租办公地点,招募一群明星程序员(其中包括Netscape核心程序、Macintosh系统核心程序员、制定XML标准的核心成员、微软资深开发工程师等),但此时,如果说Chandler是一个梦想,似乎还没有人清晰地描绘这个梦想,包括Kapor。在很长的时间内,Chandler项目的人员不是在开发,而是在让这个梦想清晰。到底是做一个开放的平台,还是只做一个可用的软件?Chandler计划中的功能一删再删,到2003年9月,经过2年,才发布0.2版,功能少于1年前发布的0.1版还少,且基本上不可用,至今,接近7年的时间过去了,Chandler还只是0.76版,而Kapor已经从今年开始,不再继续投资了,虽然现在就宣布Chandler寿终正寝还为时过早,但成功的机会已经十分渺茫。
对比Mozilla、Apache等成功的开源项目,Chandler并不缺乏优秀的程序员,但这些程序员似乎从来没有被有效地组织起来过,如果说混乱是开源项目的常态的话,Chandler可能缺乏在嘈杂之中始终清楚目标和道路的核心人员,太多的计划、太大的梦想在不停地变动之中被一点点消耗,激情被一点点磨灭。
Chandler是一个案例,揭示了软件开发过程中可能遇到的无数困难,但作者Scott Rosenberg的疑问不止于此,为什么做软件那么难?如果说软件是虽不可见但构筑于物理世界之上的人造物,那么人类为什么不能像造桥筑房那样精确地制造软件?软件能像乐高积木一样随意组合吗?软件是一种工程还是一种艺术?人工智能能否超越人类智慧等等。这些问题显然都很难找到标准、明确的答案。
《梦断代码》最适合的读者当然是程序员,很多的问题肯定让他们心有戚戚焉,但对于多数普通读者,也是了解软件世界的一个不错的故事书,只是如果完全不了解技术的话,理解起来可能稍有困难。