【eNet硅谷动力专稿】虽然由于目前开源项目管理方法存在一些问题,使得企业不能认识到开源技术的全部潜在好处,但是,这并不意味着利用开源技术进行开发不存在任何优点。一旦你经历过“自由开发者”的阶段,然后回过头来仔细审视这个过程,你会发现开源技术,即使目前共享的方式是有限的,确实带来了真正的价值。在这篇文章文章中,我将根据自己在Eclipse数据工具平台项目(Data Tools Platform Project,DTP)的经验,简要地总结一下使用开源技术开发的好处。
广泛而深入的测试
一旦一个开源项目建立了强大的社区(比如2006年年底DTP所做的那样),用户的数目就会增长并且用户反馈也会随之增加。有些用户可能只评估软件,不会在相当长的一段时间使用它。许多用户将会通过网络群组、电子邮件、bug入口等表达自己的喜怒哀乐。
我们不能假设用户所做的测试是系统的或者完整的,但是,这些测试仍然存在一些令人感兴趣的特征。首先,开源技术看似对于那些运行多种平台的用户是非常有吸引力的。因此,你(至少)可以对各种各样的部署配置进行冒烟测试(smoke testing,冒烟测试不是一种彻底详细的软件测试,它只是确定程序中大部分的关键功能能够起作用,但是不涉及更加详细的细节)。这不仅包括操作系统,而且还包括语境、硬件及各种外围设备。此外,当发现具体平台的Bug以后,这些用户往往会愿意与开发人员一起查明原因并验证补丁(似乎不少用户甚至引以为豪运行过不同的配置)。对于单个公司来来说,部署各种各样环境将花费大量时间和金钱。通过开源技术将软件暴露给用户,你可以利用不同的社区来测试你的软件。
定义和设计建议
如前所述,对于需求和设计开源社区乐意提供自己的看法。开源开发的新手常常觉得这是一项艰巨的任务,企业他们大可不必这么认为。开源社区的一个默认的规定就是你可以询问任何问题,但是,你还要考虑社区项目技术人员愿意做哪些事情。因此,提出数量众多的特点与设计要求是不会有任何危害的。最终,社区人员会自己选择做什么工作---在商业环境下,这主要是由发起公司的需求所驱动的---用户都足够聪明,他们明白这一点。
当然,过分的忽视社区需求,特别是那些具有广泛支持的,也是一个错误。这样做除了会损害社区的信誉外,也将会引起人们对于社区集体智慧的怀疑。
下游活动(Downstream Activities)比如可用性评估,也是如此。开源用户不要羞于表达可用性意见。让我们沿着这条线的推理一下,看看将会得到什么。如果你正在开发开源软件,并打算将它用在一个商业产品上,那么,开源软件用户对于你商业产品的一部分是可以发表可用性评价的,这是有道理的(注:在这里我们所谈论的用户工具,而不是框架)。实际上,你从这些用户那里获得了免费的可用性评价,他们大概至少可以合理逼近你的商业最终用户。鉴于开源技术反复的特性和公开开发这样一个事实,那就是发达国家在公众视野,这些早期的反馈意见是很有益的,可以避免通常在测试周期才能发现的代价昂贵的设计缺陷。
开发平台
虽然并非所有(或者甚至大多数)的开源技术都是有差别的,Eclipse项目,尤其是DTP很自觉既包含平台也包含工具组件。用比较贴切的一句话形容Eclipse基金会项目就是“可扩展的框架和示范工具”。根据Eclipse基金会标准,开发框架(或平台)必须是供应商中立(vendor- neutral)的、开放的、易于推广的,既使用标准的Java (面向对象)机制和Eclipse具体机制,比如扩展点(Extension Point)。因此,一个Eclipse项目有两个主人:其一就是那些想要对它进行扩展的人(就是通常所说的“扩展者”),另一个就是那些希望利用这些工具完成标准任务的人(就是通常所说的“最终用户”)。
最终用户互动的动态性是大家都熟悉的,因为对于Eclipse做出贡献的公司通常也向他们的用户提供商业软件。公司和参与这些项目的员工都很熟悉这些情况,仅仅只是在考虑需要在开源项目上进行多少“加工”时,才会感到有些疑惑---最终用户想要得到更多,而公司想根据产品进行收费。
在平台方面,情况并非这样。平台生态系统的动态性较之工具相比更为复杂。单面(single-sided)业务和双面(two-sided) 业务或多重(multi-sided)业务是有本质不同的。单面业务仅仅是为了迎合产品开发中的一个客户类型,而双面业务则是为了迎合产品开发中两种客户类型。
最重要的是,在一个双面业务中,双方会有一个系统的相互依存关系,因而需要两方都取得成功,但系统中也存在一种微妙的相互作用的因果关系。一个很好的双面业务例子就是报纸业:
报纸业,一方面,就单面业务那样,它有一个供应链---卖报纸必须要有零售商。但与线性业务不同的是,它有两类性质完全不同的客户。一方面,它面临着广告客户,这些人所关心的是看他们广告的读者数量和类型。在另一边,它面临着读者,读者主要关心报纸上刊登的文章、新闻、体育、艺术、以及其它的功能。报纸为这两种类型的客户提供服务,并收取费用。
报纸业的成功不在于尽可能的“榨取”供应链的钱,而在于发展广告商和读者社区。它必须考虑这两种客户的到相互依存关系。
同样,一个软件平台,比如那些在Eclipse基金会项目上发布的平台,是一个双面业务。该平台需要吸引和平衡两种用户---对平台扩展的用户以及使用平台的最终用户。如果某一特定平台没有一定数量的扩展开发者,最终用户社区将不会发展。反过来,如果没有具有足够吸引力的最终用户社区,潜在的扩展开发者也不会采用该平台。因此,这两类客户群体具有很深的并且重要的相互依存关系。虽然这种关系是闭合的,但是,建立和发展平台生态系统是有可能的。很多文献对此都加以了论证。
有两个关键点。首先,平台可以是一个推动业务发展的非常有效的方式。第二,与工具不同,建立和发展平台需要一个非常不同的理解和战略。对于单面业务和双面业务的区分,大多数人还不是很理解,因此,对于那些已经理解并且利用这些概念的企业在平台开发上具有很大的优势。
开源创新?
最近,很多人对于发挥用户社区的作用以及早发展创新机会很感兴趣。从理论的角度来看,Von Hippel最近的作品“创新的民主化”已被广泛引用。Von Hippel建议对于那些愿意愿意测试和扩展产品的“领导用户”(Lead users)组成一个组。他还详细介绍了一些关于某些公司已经利用这些领导用户的工作成果用于及早发现创新机会和市场方向的例子。在应用方面, Seybold提出了公司和客户之间协同设计的(Co-Design)概念。
虽然Von Hippel和Seybold的方法又不少相似之处,前者更关注创新,而后者主要侧重于更根本性的公司/客户关系的转变。这一领域更早的一些工作是由 Prahalad 和Ramaswamy做的,他们主要侧重于研究协同设计的组织原则:“体验网络(xperience Network)”。“体验网络”是对Brandenburger 和Nalebuff提出的“价值网络(Value Network)”的概念延伸,它与开源技术联系的尤其紧密,因为成功的项目建立了一个生态系统,往往围绕问题域含有各种各样的(往往是巨大的)经验。那些能够找到方法将这些经验转化成自身扩展的公司将会从中获得非常大的收益。当然,这样做是需要花费一些成本的,但精心安排得到的好处要远远超过这些费用。
在软件方面,理论资料不是那么清晰。Goldman 和Gabriel的著作“创新无处不在:开源技术已经成为商业战略”,其中很多思想在很多开源社区已被广泛宣传,但含义缺很不清晰。第一,他们没能直接证明开源技术的创新。特别是,Kooths、Langenfurth 和Kalwey在一篇文章中已经提出了令人信服的论据,并预测说开源技术本身的性质决定了它对于培育创新不能起到任何作用,是因为开源技术是一个非市场系统。作为一个非市场系统,开源技术缺乏激励机制(比如价格)以促进创新并推动资源优化分配。因此,除了开源倡导者鼓吹以外,开源技术将不会带来创新软件(开源过程和文化能不鞥提供创新是一个单独的问题)。我参加了EclipseCon 2007大会,并在会上与其它人进行了讨论,我发现了一些可能解决这个问题的办法。如果这些解决方案确实存在的话,也需要长期的过程才能解决这个问题,因为:
- 这个问题是非常复杂的,并且没有被开源社区广泛认可和接受。
- 可能的解决方案需要对于基本的经济结构有非常不同的理解,比如市场,因此很难实现。
- 开源社区村子的惯性,尤其是那些与商业利益相关的环节,很可能会抵制这种根本性的变化。
这对于公司来说应该是一个好消息:开源技术可以作为创新的温床,但不大可能会交付创新本身。今后,交付创新的特权或负担显然就落在了商业(更准确的说是基于市场的)公司的肩上。
最后,与纯粹的自由软件相比,开源技术给我们的启示可能更广和更深。就像Chesbrough在自己的文章中指出的那样,“开源”这一概念的可以概括为开放式的商业模式,而创新甚至更普遍的知识产权(Intellectual Property,IP)是由比传统意义上的更广泛的网络所提供的。这些举动需要认真考虑如何最好的在企业内部培育和保护知识产权,Chesbrough 的研究结果给大家一个好的线索,用来思考这些新出现的趋势。从企业的角度来看,开源暗示了向“个性化企业”(individualized corporation)的转移,以及实现它所承诺的所有好处(比如更有效和充分利用员工的潜能)。
转载自:http://www.enet.com.cn/article/2008/0304/A20080304172542_2.shtml

