开源软件的一些思考

贾扬清大佬

当我们回想起为什么做开源的时候,也许理由都没有那么的高大上:也许就是单纯想分享一下代码,也许就是觉得社区很有意思,甚至也许不知道什么原因,代码放出去了,有人用了,于是我们开始开心地找同路人。逐渐地,我们发现,开源变成了我们的一个共同的信仰:我们喜欢它,我们用心呵护它,然后我们希望更多的人加入一起培养它。
在这样朴素的想法下,我们逐渐发现,这一群人发明了在互联网时代最好的大规模协作方式,也创造了技术最大的公约数。无关语言和肤色,开放分享、平等普惠的开源精神有效地弥补了技术代差,推动了这个时代不断前进。

2010年夏天,阿里工程师在杭州开源了第一个项目。10年之后,阿里开源项目数已超过一千个,覆盖大数据、云原生、AI、数据库、中间件、硬件等多个领域,全世界有七十多万朋友为我们点亮GitHub Star,成千上万的人参与到项目贡献中。阿里开源取得的这一点小成绩,来自全球开发者的贡献与信任:早在2017年,OpenMessaging成为首个由中国发起的分布式计算领域国际标准,这是我们共同的成就。

过去的10年里,阿里也是与社区合作最为紧密的中国公司之一,受邀成为十多个国内外开源基金会成员,积极贡献开源:不仅是Java全球管理组织JCP最高执行委员会的唯一中国代表,也是Linux、RISC-V、Hyperledger、MariaDB、OCI等多个基金会的重要成员。至今有四个顶级项目捐赠至Apache,超10个项目进入CNCF Landscape。

我们相信,社区是开源协作精神与创新的摇篮。与社区共建开源,我们坚定不移。2019年双11核心系统100%上云,Apache Flink 突破了实时计算消息处理峰值25亿条/秒的记录,技术架构愈加成熟。我们的大数据工程师们和业界的朋友们建立了紧密的联系,成为了工作和生活中的好朋友,通过紧密的合作,让越来越多的企业使用 Apache Flink建设新一代的大数据流处理平台。

GitHub 2019年度报告显示,在全球4000万用户中,中国贡献者数目已升至第二。开源已成为中国技术的一张亮眼国际名片。海德堡大学的一位法学研究生“酷巴”,用Ant Design开发了一套漂亮的法律文书管理系统,已成为很多当地律师的得力助手。

各种成就的背后,离不开每一个开发者的耕耘和创造。我们经常发现,当各种喧嚣归于平静,当各种繁华归于平淡,我们的工程师们都依然不变初心,在追求着自己的梦想:通过代码这一种最直接的语言,通过开源这一种最简单的方式,寻找着技术路上的下一个突破点,寻找着技术对于社会创造的更多价值。开源是开发者最大的同心圆,未来,我们希望与更多开源人一起,用技术普惠世界。

十年牧码,初心未改。感谢所有开源路上的同行人。

weishu Android工程师

这几年国内的开源发展可谓是非常迅猛,很多流行的框架和库都少不了国内程序员的身影,从这个角度来说,进步是非常巨大的。
但是,开源并不是仅仅把代码放出来就 OK 了;除了开放代码之外的东西,我觉得做的还远远不够。

以下是我作为一个个人开发者,觉得各位广泛参与开源项目的程序员,以及开源项目的使用者和受益者应该思考的问题:

何为开源?为何开源?

开源从字面意思理解就是“开放源代码”,但是除了代码之外,还应该有比如开放协作之类的东西,仅仅公开代码这样的开源是不完善的。然后,在你打算开源代码之前必须要认真滴思考,我为什么要开源它?你可有很多理由,如果你能说服自己那就做好不过了。但如果仅仅是因为“别人开源了,我也开源”这种,我善意地提醒你认真思考一下。开源不应该是跟风,而是在理性思考下对项目发展方向做出的抉择。

开源 != 开放源代码。

对于开源项目来说,开放源代码不是结束,而是开始。很多开源项目管生不管养,管杀不管埋;这种开源其实意义不大。很多项目由于环境的变化导致项目死掉(包括我本人),作为开源项目的发起者,为了保障项目的后续发展,应该发展自己的核心维护团队;而作为开源项目的使用者,在可能的情况下,应该参与到项目的维护中来。

开源 != 免费。

免费往往是最贵的。这一点用在开源上非常贴切,开源不是免费给你打工。我见过太多的开源使用者,在提 issue 的时候咄咄逼人地问:“为什么会有这个问题“,”为什么这里不工作“,”请作者尽快修复“,“为什么又改了xxx“,”怎么还没修复“,等等诸如此类的问题。俨然一副大爷的样子:「用你的项目是看得起你」。我甚至见过某大厂的程序员,发邮件让我帮解决一个编译问题,我回复它之后它没明白;然后跟我说「能不能加个钉钉实时沟通一下,邮件太低效了」

开源不是理所当然。

我本人维护过开源项目,也写过闭源的代码;我觉得这是一种正常的、完全不冲突的状态。有的代码我愿意分享给大家,有的代码我希望暂时自己留着。然而,依然会有很多人指责“你为什么不开源?” 我无言以对。开源完全是个人选择,这无可厚非。所有以各种理由逼迫别人开源代码的行为与耍流氓无异

作者:weishu
链接:https://www.zhihu.com/question/366370371/answer/974714639
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:陈天奇

很多小伙伴都说的很好。我想补充一些我从开源社区中学到的几个东西开源的三个阶段

  1. 开放源代码
    开放源代码也是大家所通常理解的开源。开放源代码可以给同学们提供相互交流学习的机会,也可以使得像社区的使用交流,bug report等可以及时得到反应。从机制上,开源其实提供了一种无形的质量评价保障。评价一个工作的好坏,是骡子是马拉,出来溜溜就知道了。对于普通的程序员来说,展示自己作品的一个最好让大家发掘的方式。现在的很多领域如机器学习鼓励开源也是这个道理,实验的结果直接开源复现才让大家相信。而对于整个社会来说,各种创新开放也使得技术的进步更加快速。

  2. 开放开发
    如果说开放源代码是让把自己的软件展示出来的话。开放开发则是把一个软件变成社区的。软件不是一个固定的东西,需要维护,增加新特性,不断重构来保持它的生命力。这里面一个比较重要的问题是如何让任何一个对这个软件感兴趣的人可以参与进来。这其中包含了开放文档是否健全,改动的技术决策是否可以让开发者可以搜索获得等等,其他开发者的pull request是否可以被及时review接受等等。不同的开源软件的开放开发程度其实也是不同的,有的软件主线的开发一直在一个内部机构,定期同步,有的会主要直接在主线开放开发等等。另外开放开发本身也并不是包含了代码实现。其实很多时候高质量的文档,code review, 社区互动等等都需要花费社区志愿者的大量精力。而只有对于这些方面都进行投入之后才会让更多的人来参与开发并且让项目更加健康地迭代下去。

  3. 开放管理开放
    开发让大家都可以参与一个软件的开发。而开放管理则是让积极的参与者成为社区的主人。很多成功的开源软件都有比较成功的开放管理机制。对于开放管理的开源社区来说,开源软件本身像是一个股份公司,而获得股份(开发者的信任和对于项目的方向控制)的方式是参与开发。开放的管理模式让更多的企业和高校可以共同参与开发和管理开源项目,把一个项目做的更加持久。而因为大家都可以成为开源项目的主人,也可以鼓励更多的合作。积极参与开发有贡献的个人会获得对于项目的写权限(committer)。许多成功的开源项目都才用开放管理的模式,比较著名的是apache模式,另外独裁模式如python(曾经是),linux也会有committer来共同管理社区。

  4. 开源的“货币”
    开源本身是志愿行为,并没有货币交易(当然最近github的打赏功能把货币也加入其中),但是其中却发生了和货币一样的价值交换。 开源社区的一种“货币”是时间。参与开源贡献,会有不同的社区同学帮忙代码review和参与讨论,这些行为都需要付出大量的时间。参与开源贡献的同学付出了自己的时间,用来交换别的开发者的时间来进行技术交流和学习。随着时间的积累,很多时候开发者获得的另外一种“货币”是信任。一个人是否靠谱,是否愿意相信一个人的技术决策,是否可以胜任一个方向的tech lead,这些东西都决定了一个开放开发社区里面开发者对于社区本身决策的影响能力。虽然开源可以获得不少“货币”,最重要一点,开源开发者都是带着理想和情怀投入到开发中去,而这些理想和情怀本身才是开源社区里面最重要的东西。

  5. 代码并不是最关键的,最关键的是人
    在一开始的时候,我们会觉得开源最重要的是代码。于是很多关于开源软件的争论会集中在代码在哪里,属于谁。实际上因为大部分开源软件许可证允许任意拷贝并且授权代码里面的专利给代码使用人,代码本身在哪里并不是最关键的问题。软件并不是一个固定不变的东西,需要有不断的升级,维护和新功能的添加。而在其中都会涉及到人 – 谁来做这些事情。人很多时候比代码重要。假设某一天一个开源软件的主要开发方突然宣布不再开放源代码了了,这个时候要看其他开发者可以集合起来,有能力接着前一天的分支继续进行开发和维护,那么这个软件就会依然可以被大家开发使用,甚至逐渐集合有能力的社区伙伴重构或者重写一份都不会是问题。代码在哪里不关键,关键的是人。一个公司是否有人可以掌握开源软件本身的架构,是否有人可以对社区的方向有所影响,是否有人可以适配开源软件符合自己的需求,是否有人可以在必要的时候继续维护软件,这些才是最需要关心的问题。活跃的开发者人群是大家使用开源软件的真正保障,也是社会得以快速创新发展的基础。

作者:陈天奇
链接:https://www.zhihu.com/question/366370371/answer/975706246
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

小结

  • 1.公布源代码
  • 2.开放社区权限
  • 3.感兴趣的人融进来一起前行
  • 4.开源不是免费,开源软件后面有一定的经济学成分。

reference

猜你喜欢

转载自blog.csdn.net/liuqingsongmsdn2014/article/details/128954296