Perisic 说道:“我们发现,在开源了项目之后的第一个结果竟然是我们开发者撰写出了质量更好的代码。将代码放在自家的门后,只会成为鼓励大家偷懒、马虎,开源之后,则不一样,这样会激励开发者们,使他们更加的细心。开源之后改进尤为明显的有,文档也有人写了、代码也更容易让人阅读了、而且非常注重每一次的测试结果。”
将代码开放以后,也就意味着开发者们要接受批评--非常公开的批评。用 Perisic 的话就是:“当一位开发者将某一段代码公开以后,也就是将自己的声誉放在了网上,其本质上是一种类似同行评审。这样就让开发者们能够激励自己,将他们的代码写的更好、撰写更完善的文档、以及对于可重用性的重视。”
Perisic 又说道:“当然,开源也不仅仅是有利于代码质量。它也能够确保开发人员的视野不至于太过于狭隘,总是盯着自己眼前那点事。在一个开源项目下工作,也就意味着一起共事的不仅仅是自己身边的同事,而且还有来自其它公司的开发者,这会帮助大家对于技术、业务方向的发展趋势有一定的意识,而且可以帮助他们学习如何评估其他开发者的输入。在这个多元的世界中,开发人员应该学习如何更加高效的来领导自己的团队。”
最后,Perisic指出:”从公司的角度来看,这也有助于发展你的品牌工程,这证明在吸引新的人才和留住现有员工方面非常的有好处。”
“种”下你的代码,让它茁壮成长
Perisic非常认真的说:“我认为在创建一个项目并将之开源,应该像你的内部组织一样去花时间用心去做。而且发布什么样类型的代码也是有讲究的,是蛮重要的事情。这就是为什么有一些项目无法发展出强大社区的重要原因之一,因为所发布的项目是孤立的。孤立的代码可能就是那些仅仅只是对本公司业务有用的代码,如果它对于外部其它公司没有任何用处的话,那么它失败的可能性就会很大。”
但是有的时候,最好还是在现有的项目上去投入资源和人员,即使它们可能还没有获得大家公认的高度。独立的开源项目是伟大的,但是如果它是在 Apache 的羽翼下而且也蛮有意义,那就不要犹豫了。如果已有的社区的开发者们渴望使用它,那就更不用有所犹豫了,赶紧将之开源!
既然这样,那么问题又来了,当来自 LinkedIn 外部的代码对于 LinkedIn 毫无用处的时候是怎么处理的?Perisic 是这么回答的:“你不能只是将项目放弃就不管了,你应该为原来选择你的用户提供相应的替代和迁移的途径。” 这里举个例子,LinkedIn 曾经放弃了一个叫做 Camus 的项目,这个项目的功能是用于将数据从 Kafka 导入 HDFS 的一个管道实现,放弃归放弃,但是 LinkedIn 另外开发了一个叫做Gobblin的项目,LinkedIn 新的数据感应框架,也可以实现 Camus 的功能,只是更加的完善,LinkedIn 此时做的决策就是,为 Camus 的用户提供迁移的路径。
总结以上所有,开源项目是需要付出巨大的时间来开发、精心培养、并时刻留意的。Perisic 非常明白其中的涵义,但是认为值得:“对于开源社区来说,再大的投入都是值得的,因为回报也是丰厚的。”