JavaLobby最近的一个
议题是java.sun.com对Ron Goldman关于开源复杂性的访谈,里面有些很有趣的想法:
* The key to successful open source projects is passionately shared goals.
* There are always more smart people outside of a company than in it. Hence, "Innovation Happens Elsewhere".
* The biggest misconception managers have is that they can cut back on the number of people in their group working on a project by making open sourcing it, because the community will pick up the slack. But in fact, it's the opposite: An open-source project takes more resources than an internal proprietary one.
* Another misconception is that open source is business as usual and doesn't require fundamental change.
* Open source is not always appropriate and requires solid business reasons. If what a company is thinking of open sourcing is not something that others outside of the company care about, you won't get a community.
* Users are often a neglected resource in open source communities. Because they often are not programmers, they may not get a vote, but who is better than the end-user at evaluating the software?
Hmm....一下子还没捉摸清楚,现记录在这里,comments will follow....
Update 7-18:
加上些自己的想法:
* There are always more smart people outside of a company than in it. Hence, "Innovation Happens Elsewhere".
事实上开源软件的创新性一直是备受争议的, smart people确实是到处都有,但是人家为什么要把innovation奉献给开源可就不好说了。尤其是现在的开源软件,很多都是大公司的战略和全职团队在支撑,即使有少数怀抱自由理想的程序员们,天才如Linus也在不可避免的在某种程度上
被边缘化。印象里Eclipse的一个leader曾经说过,Eclipse的实现极少得益于独立的个人捐献,社区更大的作用是在测试。因此我对"Innovation Happens Elsewhere"这种说法有一定的怀疑。作为一个例证,IBM公司从1993年到2002年10年美国专利数量共22357项,2003-2005年分别为3415, 3428, 2941项,远高于前10年的平均数,也就是说,IBM在对开源软件投入越来越大的时候,并未因此减少自身的专利数量。恰恰相反,为了支持开源软件,IBM甚至公开自己的专利给社区免费使用。抛开数字来看事实,在著名的开源软件中,Linux与Unix/Minix,Firefox与Netscape/IE, Eclipse与VisualAge for Java, 还有很多很多其他例子,前者在创新性上无疑都无法与后者相比,但是却无一例外比后者更有生命力。以上这些例子说明,开源软件与其说是"Innovation Happens Elsewhere",不如说是"Dynamics Happens Elsewhere"。确实如此,在我看来,开源软件比商业软件大多强在其用户交互性和用户服务上面。我不是开玩笑,作为一个IBM的员工,公司提供我日常工作中几乎所有用得到的正版软件,但是我还是一个开源软件的忠实用户,无论在什么平台上,firefox, thunderbird, vim, wget,Eclipse都是我离不开的工具,我们团队的大多数人甚至在Windows平台上装了UnixUtil来使用Linux下面的常用工具,为什么?因为这些软件是真正为程序员服务的,它们提供的交互性是面向最终用户的Microsoft工具以及面向企业用户的IBM工具无法相比的,获得这些软件的帮助与bug fixing的快速程度也是Microsoft甚至IBM无法相比的。我所喜爱的工具里面,只有一个不是自由/开源软件,就是TotalCommander,是一个个人维护的共享软件,拥有一个非常类似开源软件的社区。开源软件可能比商业软件出色的原因,不是创新,而是社区提供了足够多的程序员用户,"在足够多的眼球下面,任何错误都是显而易见的",同时在程序员对着程序品头论足的同时,程序本身的设计也在朝着程序员的口味转化。开源软件往往比商业软件更有生命力的原因是,如果一个公司在可预见的时间内不能从某个软件中赚到钱,它往往不会再为此投入,即使这个软件本身有非常好的潜力,而如果它是开源软件,它的生命力会长的多,试想如果Ruby是某个类似Sun的公司在经营而不是一个开源软件,它有多少可能性可以坚持到那个北欧帅哥发明Rails的那一天让它大放异彩;再试想Lua如果不是一个开源软件,它有多少可能性坚持到游戏软件进化到引擎+脚本的架构这一天让它独树一帜;试想OS2如果是个开源软件,它有多少机会可以成为一个市场大获成功的操作系统...这样的例子太多了,连Netscape/VisualAge这样的巨无霸软件被市场打倒了之后都能借Firefox/Eclipse涅磐重生,开源社区给软件注入的生命力可见一斑。还有一个原因可能更容易被大家忽视,软件公司越大,它的产品设计和实施当中非技术因素就越多,这些因素的力量可能远超一般人想象,以至于最终的产品和当初的需求以及设计理念南辕北辙,而开源软件就要纯粹的多,任何一个idea如果不能满足各方面的需要,立刻就会被veto,比如说在Apache的项目里面,任何一个committer对于任何contribution都有一票否决权,而committer权限的获得,不是因为你的公司,不是因为你的职位,甚至不仅仅因为你对这个项目的贡献,更重要的是因为与他人(也就是其他程序员)的沟通和合作,用Apache的官方定义来说,这是一个meritocracy的社区。
* Users are often a neglected resource in open source communities. Because they often are not programmers, they may not get a vote, but who is better than the end-user at evaluating the software?
我非常同意这一点,最终用户很少会参与开源软件的社区,他们在乎的只是开源软件的免费,并且绝望的希望开源软件可以变得"好用"。但是,如前所述,开源软件的生命力在于程序员组成的社区,不接受这种文化和社区就很难接受开源软件的设计, 为什么vi这么难用? 为什么Linux总是做不好桌面? 为什么我没觉得Firefox比IE好在哪里还严重的内存泄漏(抱歉,知道内存泄漏已经是高级用户了)? 经常看到用户在论坛里抱怨说,不考虑用户的软件是不可能有市场的! 天啊,他们难道没有意识到,开源软件原本就是程序员们自己动手丰衣足食的产物(还记得Linus为什么要写Linux? 他有想过要把劳苦大众从M$的帝国中解放出来么?)? 甚至在社区里提问都那样困难,你要按照规矩在bugzilla/jira提交bug report, 要填写平台/版本/模块/优先级甚至还要填写修改难度! 不仅如此,你还要详细描述你的环境,并且最好提供testcase让这个bug可以重现...如果你不照着规矩来,"高手"的回答经常千篇一律是:"谁也没有义务回答你的问题", "高手"们因此写出了种种"提问的智慧"并广泛流传,可惜的是,这种智慧只能用来自娱自乐. 因此用户基本不可能参与社区,也就不可能贡献多少merit, 所以按照开源社区的逻辑,他们就没有cracy。这的确是开源软件与用户之间的gap,而这恰恰就是商业公司可以value-add的地方,有value-add才有oppotunity,才有商业模式。但是这种模式能叫做"Innovation Happens Elsewhere"么?
* Another misconception is that open source is business as usual and doesn't require fundamental change.
恩,我同意,在程序员们的兴趣和商业利益中间寻找平衡是很需要技巧的。这一点在Harmony中间我自信已经有些体会,只是不足为外人道也...
* The biggest misconception managers have is that they can cut back on the number of people in their group working on a project by making open sourcing it, because the community will pick up the slack. But in fact, it's the opposite: An open-source project takes more resources than an internal proprietary one.
Hmmm...某种程度上说是这样的,我所在的团队在准备捐献代码(也就是没有开源)的时候和在开源社区工作以后相比,主观感觉代码生成效率降低很多,我自己现在一半多的力气就是花在社区讨论和review代码上。但是某种程度上又不是这样的,因为IBM贡献出了英国和中国两个小团队,一年时间就看到了一个API覆盖率79%的类库实现,这是不开源的时候无法想象的。