你好,游客 登录 注册 搜索
背景:
阅读新闻

为何开发者应推动公司开源?

[日期:2013-04-08] 来源:CSDN  作者:王然 [字体: ]

为何开发者应推动公司开源?

发表于2013-04-08 17:20| 次阅读| 来源CSDN| 0 条评论| 作者王然

摘要:无论出于何种目的,企业常常会考虑开源一些内部项目,但企业为何应该开源、应该开源哪些项目是让人头疼的问题。微软工程师Ahmet Alp Balkan对此作出了建议,并强调这不仅是企业高管的问题,更与开发者自己息息相关。

IT界有一句俗语——“如果老二无法战胜老大,那么就把老大赖以生存的东西开源。”企业常常会考虑将某些内部项目开源出去,不论是因为崇尚开源还是为了提升公司形象,又或者是为了打击竞争对手。但应该开源什么样的项目确实是个难题,开源了合适的应用可以为公司带来好名声,但开源了错误的项目甚至可能将公司带向险境。

微软工程师Ahmet Alp Balkan在博客上发表文章 《What should you open source in your company》,深得开发人员认可。

Balkan认为,大多数工程师都会在公司发现有价值的代码或者是好用的内部工具,这些都是值得自己保留的东西;另一方面,你也会在工作中花费很多人力去开发可重用的辅助工具以及类库,这些免于遭受截止日期压力的作品往往更富有创造力。 如果能把它们以开放源代码协议发布出去,无论是对自己还是其他开发者都是非常有意义的事情。

对于企业,开源几个不涉及核心功能的类库或者辅助工具并不会为自己带来负面影响,但是通过大家共同的努力,一定可以帮助它变得更好,IBM开源Eclipse正是为此。此外,如果企业并不处于行业的领先地位,甚至考虑开源核心技术以打击竞争对手,但对整个行业的技术发展能起到很大的推动作用,Yahoo!开源自己的DFS与Map-Reduce实现,以及微软支持开源地图服务OpenStreetMap都是很好的例子。

最差的情况下也不过是项目无人问津,但至少还能为公司的GitHub页面充实门面。

以下面这些名企为例,他们开源了那些技术可以作为企业的参考:

  • Linguist——GitHub:一个检测源代码以及二进制文件是由何种语言编写的类库。
  • Guava——Google:Java扩展功能类。
  • MoSQL——Stripe:MongoDB到PostgreSQL流式复制的类库。
  • PonyDebugger——Square:使用Chrome Dev Tools的远程iOS调试工具。
  • Rogue——Foursqure:类型安全的Scala DSL。
  • Brackets——Adobe:基于Web的Web代码编辑器。
  • Twitter的FinagleBowerZipkin等等。

这些公司开源的工具虽然非常有名、实用,但都没有涉及自己的核心,因为对于技术公司来说,将关键技术开源相对于把武器送给了竞争对手,这是非常危险的举动。比较例外的是Facebook,它开源了CoronaCassandra等众多核心技术,甚至Google也对其Open Compute Project赞赏不已。但不得不承认的是,作为强用户粘性的社交网站,其最有价值的财产还要数多至10亿的用户,即时是这些核心技术也得略逊一筹。

Balkan还指出,对于开发者,很多时候会经常重用之前开发的组件,尤其当你在更换了工作之后,也会更愿意使用老东家熟悉的工具。出于这些目的,你也应该推动开源公司内部的开发工具或者类库开源。如果你还是该工具的开发者,在项目被其他IT公司看中之后,这些公司也一定会认可你的技术实力,因此成为你的潜在雇主。

同样的道理,支付宝前端负责人玉伯也曾在CTO俱乐部活动中倡导IT公司之间摈弃成见,在业界建立一个前端的生态圈、共享部分开发模块。这一举措不仅能够降低各公司的开发成本,员工在离职后也可以享受好处,同时圈内开发者能够更好地协作。

此外,还有件需要注意的事——公司开源某个项目多非大发善心,通常这都得感谢某个/些人在背后所做的努力,他们提出想法、说服高管,最终造福全体开发者。

如果你正有此打算,首先需要做的就是整理出可重用的代码、编写测试和文档,以及说服各位企业高管。





收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻