当前位置: 首页 > 科技观察

每个程序员都可以为开源做出贡献吗?

时间:2023-03-20 15:19:49 科技观察

简介|开源是近几年科技圈特别热门的话题。开源的背后,涉及的不仅仅是技术本身,还有人才、社区、企业,甚至更广泛的影响力。本文为开放原子基金会TOC副主席、开源社理事及联合创始人&ASF会员&腾讯云TVP刘天冬、开源中国社区负责人&腾讯云TVP王永和在中的分享云端+社区沙龙在线,为你全面剖析开源,从更高的角度思考开源!01开源的本质是什么?刘天东:最近召开的中国开源年会的主题是“OpenSourceforGood”,开源代表着向善的力量。在座的很多开发者可能会疑惑:开源和善有什么关系?人们常说为开源做贡献成就自己。这是OpenSourceSociety的合作伙伴共同的理念,因为它可以通过贡献来帮助自己,这也是所有程序员的关键。我和很多业内朋友,包括创业者和开发者,都交流过开源的本质。有四个要点:善良是核心。1、开源就是开源,要以开放的心态去做。开放和透明是良好合作的基石。二是分享,乐于分享也是一切善行的开始,而不是闭门造车。比如在最近的疫苗研发中,很多机构都加入了全球疫苗分发组织。大家第一时间把好的疫苗分享给疫情最严重的国家和地区。这是人类最大的感受。这种精神在开源中是最重要的。三是平等。每个人都有对平等的追求,这是一个健康的开源社区的基础。四是协作。通过开放协作,逐渐形成共识,这是开源社区繁荣的秘诀。一个优秀的开源人,想要加入开源的行列,首先要了解开源的四个基本本质,也就是刚才说的:开放、共享、平等、协作。Apache基金会的治理与Apache基金会一样,有原则。他们的原则是Apache的方式。一个好的开源社区也必须有健全的原则。规则。谭忠义:我从一个比较简单的角度介绍一下。常用的开源软件是开源代码加上国际认可的开源许可证。这是开源软件。开源的本质是:它不是一种商业模式,也不是一种软件,它是一种多人协作的模式,但多人协作是建立在开源代码之上的。开源的本质是开源基础设施上的多人协作模型。为了让这种协作能够长期健康地进行,各种附加层被创造出来。比如代码能长期协调,就会有知识产权的等级,就会产生各种license;为了让代码的上下游更好的工作,会产生开源社区;如何支持开源社区会产生各种各样的license就像一个基金会,基金会背后有各种各样的商业公司,所以有各种各样的商业模式。但这些都是开源衍生出来的一系列方面。本质上还是比较简单的,就是大家坐在一起,在开源代码上写代码。王永和:从文化、哲学到代码,再到与开源软件项目相关的社区和法律,两人都进行了精彩的交流。如果单纯从英文翻译的角度来看,很多人认为开源项目就是开源软件。.早期接触的很多人或者公司会认为开源代码本身就是开源软件。事实上,这种认识是不够的。事实上,开源不仅仅是开源代码,项目背后还有社区、委员会和相关法律。在我们使用一个开源软件之前,如果我们对项目的整个系统和组成部分有更深入、更全面的了解,我们就会避免很多陷阱,比如避免不小心踏入法律陷阱或者引起一些纠纷,毕竟这可能涉及到公司的数字资产,而这样的教训在历史上已经发生过多次。因此,开发者在使用软件之前,首先要识别开源软件,那么应该遵循哪些原则来选择好的开源软件呢?或者说怎么才算是好的开源软件呢?我们邀请了中国和意大利的老师来分享这个话题。谭忠义:首先,必须使用开源软件。它就像空气和水。只要是为了开发,就不可能使用开源软件。据Linux基金会统计,软件中只有不到10%的代码是工程师自己写的,90%以上的代码是各种开源软件的组合。但是,需要谨慎使用开源软件。使用开源软件后,存在法律风险、安全漏洞、Bug等各种风险。不当使用这些可能会导致业务损失。它与商业软件相同。软件供应链的一部分,软件供应链需要有足够的质量保证。使用它时,还必须考虑用途。如果是商业用途,尽量选择一款高质量的、长期可行的、有多家公司支持的开源软件,这样你用起来更放心。这是我的一点小意见。02如何选择开源软件?王永和:最近和朋友聊天,有一个观点挺有意思的:选择开源软件,最好选择有组织的(并且捐给基金会或者项目背后有管理委员会)。因为组织希望项目的社区更活跃,项目更健康的发展。确保开源软件得到持续维护和改进,解决开发者使用开源软件的后顾之忧。毕竟,大多数开源软件都无法避免错误。或者需要新功能。我想大多数开发者都想知道开源社区和基金会在这方面可以对开源软件做些什么?为什么说有资金托管、社区活跃度高的开源软件项目更靠谱呢?刘天东:开源界大咖HenrikIngo在2010年做过一个调查,世界上最大最好的项目都是由世界前九大基金会支持的。其代码开发质量和程序员的平均贡献量与单个公司或社区支持的代码数量相比,两者在生产力或代码贡献数量上存在五到十倍的差距。(详情请参考:https://www.openlife.cc/blogs/2010/november/how-grow-your-open-source-project-10x-and-revenues-5x)所以如果你选择了一个好的开源项目,可以查看背后是否有健康社区,是否有很多健康社区在使用它的license等等,国外和国内是不一样的。他们所谓的共同体就是很多公司都参与进来,这些公司之间甚至是相互竞争。一个大而好的社区离不开这些公司的支持。国外公司支持公司内的程序员投资开源,占比超过85%,这些公司的程序员都会加入社区。如果一个社区80%到90%是一家公司或者一两家公司的几个人在里面,即使这个社区看起来很强大,我也会很小心。因为单个公司可能会退出或改变,但是如果一个社区中有很多公司、社区、个人开发者,这样的社区就会非常多元化,这种状态是非常健康的。王永和:开源基金会会孵化好的项目,有严格的标准流程,做出来的软件也很靠谱。开源软件项目被基金会托管后,将对其生态负责,可以选择许可和法律援助。这是开发者愿意将项目捐赠给基金会的最大原因,可以解决很多项目的开发问题。这样就避免了公司或个人控制开源软件项目所带来的一系列后续风险和问题。我的问题是:虽然基金会下的托管和孵化项目很多,但是和整个开源软件世界的项目相比,基金会的托管和孵化只是冰山一角,下面的开源软件更是数不胜数冰山。项目还没有浮出水面,其中很多项目都是个人开发者的开源软件,并没有捐赠给基金会。如果我们的观点是“基金会主持、社区活跃、多家公司参与的开源软件是更好的开源软件”,那么会不会导致开发者在选择这些开源软件时变得谨慎?想一想,这会不会导致个体开发者缺乏开源动力?这是一个悬而未决的问题。我也想听听你们两个是怎么看待这个问题的。有解决办法吗?谭忠义:首先,一个工程师选择开源软件,他的目的是什么。如果你想给客户提供服务或者做线上服务,你需要长期维护它们,用它们来产生持续的价值。这是一件非常严肃的事情。在这种情况下,您需要选择质量更高,活性更高的。社区支持的项目。但这只是优先考虑,不排除个人贡献的优秀项目。比如一些比较知名的项目,比如国内工程师创建的Vue,虽然是个人开源项目,但是不妨碍大家选择他。个别开发人员不一定要重新发明轮子。如果项目不好,他们可以重新创建它。事实上,个人在参与开源时,可以选择市场上已经存在的开源项目。您无需从头开始构建新轮子。世界上已经有太多的轮子了。刘天东:我告诉你一个实际数字。在开源社区中,有四千万到五千万的开发者和数千万的项目。92%以上的长尾由少数一两个人玩,不更新不关注。很少。个别开发者成为独角兽,或者像Vue.js这样的项目被很多人使用的情况是少数。在国内开源的个人项目中,SkyWalking是我所知道的唯一一个起源于中国并贡献于基金会的个人项目。其他的大多是国内大公司、中小型公司的开源项目。个人更适合在某些组织中开发特定场景或特定需求。做一个大而全的项目其实完全没有必要。进入国外基金会的门槛相对较高。在中国很多人想进基金会,其实是有一定门槛的。现在即使是草根基金会(比如Apache),门槛也比较高。对于个人开发者来说,能力和时间都是有限的。不建议全职拓展个人项目。建议从具体的项目入手,优化或创新,而不是重新发明轮子。开放原子基金会应运而生,是个人项目的一个很好的起点。王永和:谢谢你的回答。由于有了分布式代码托管和协作平台(如github、gitee),全世界的人都可以一起参与开源项目。之前一直争论的话题是:中国人对开源软件的参与度非常低,只求不贡献。我不同意这种说法。事实上,中国有很多优秀的开源软件项目。顶级开源项目的贡献者。最近深有感触,开源技术和开源软件在中国被越来越多的提及,大家的认同感比五年前要高很多。这是一个非常好的趋势。之前我们在舞台上表演的机会真的不多。现在国内开源基金会已经成立,Apache基金会和Linux基金会也接受了国内很多优秀开源项目的捐赠。这种环境已经出现了。03您如何看待开源的发展?刘天东:我们2014年成立开源社,2015年举办了首届Apache中国路演,每五年一届。2020年10月24日是开源社举办的第二场Apache中国路演。五年发生了什么?2015年举办Apache中国路演的时候,看到了很多本土的开源项目,认识了很多人。当时,Apache董事会的主席和高级官员也被介绍到中国。当天的会上,不少人与他们进行了面对面的交流。2015年只有3个中国原创项目,但到2020年,已经有12个中国原创项目从ASF毕业,另有8个项目正在孵化。如何加入孵化器,成为顶级项目?中间很重要的理念是:ASF认为社区大于代码。中国的技术不弱,各种技术的专家很多,基数也比国外大很多,但是为什么没有成功的基金会社区呢?关键还是在治理理念层面,即社区大于代码的理念没有深入人心。我们之所以在五年内从三个项目变成现在的二十个项目,是因为经过Apache的洗礼,我们树立了社区大于代码的理念。才能成长的这么快。所以国内的程序员一定要打破思维,不要只相信技术,要通过社区把自己的项目做的越来越好。单一的英雄项目是不会成功的。只有帮助别人成为英雄,你的项目才会成为英雄。这是社区大于代码的理解。王永和:这个观点很好。事实上,中国并不缺乏顶级项目。它缺乏的是良好的开源治理理念、开源组织和社区环境。作为“OpenAtom开源基金会”TOC副主席,谭忠义先生是否觉得任重而道远?从OpenAtom开源基金会的角度,如何为开发者和开源生态服务做贡献?谭忠义:10月24日,中国开源年会有个题目叫:《终于,中国第一个开源基金会》。现在中国开源蓬勃发展,应该结合历史大潮来看。随着中国国力的提升,尤其是IT产业开始向世界一流水平靠拢,甚至同级别竞争,国人的信心开始大增。也感谢Apache基金会给我们提供了很好的指导,很好的开源协作理念的教育,把社区大于代码的理念带到了国内。现在随着经济社会科学的发展,加上政策法规的完善,国内开源的发展速度只会越来越快,而有了中国人的聪明才智和努力,没有什么是做不到的被不好处理。现在Apache软件基金会最大的用户社区是中国,越来越多的人成为了它的PMC甚至是它的VP。我觉得小米的张铎就是一个很好的例子。王永和:我们开源中国(OSCHINA)服务过很多科技公司。这三年,国内很多公司都开始开源一些项目。这几年给我最大的感受就是:大家都想明白为什么要开源。有很多公司为了开源而开源,这是最大的转变。另外,我们以前做开源,尤其是大公司,开发者会比较忌讳抱怨商业意图,但是从我个人的角度来说,正是因为有更好的商业模式来驱动生态这个项目,我们可以成为开源软件更加繁荣的推动力。我们看到一些很好的开源软件项目,通过它会把整个上下游生态汇聚在一起,所有围绕项目的主体都可以获得商业价值和收益。不错的改变。很多开源软件成就了科技创业公司,而且做得很好,比如Kyligence、PingCap等,他们的开源项目都加入了开源基金会的组织。未来我们会看到更多的基础软件项目会开源,比如数据库、存储、计算等一系列普通个人用户很难玩,需要大公司投资的基础领域软件。我更加乐观,相信会有更好的未来。04开发者如何参与开源?王永和:开发者可以通过哪些方式参与开源项目?开发者参与开源项目可以获得哪些好处或回报?我们从贡献的角度出发,什么是为开源做贡献?贡献的唯一方式是贡献代码吗?刘天东:如何做好开源,参与贡献,实现自己的重点:第一,做什么,第二,不做什么。怎么办,开源有个经典名词叫JFDI,justdoit!那么该怎么办?不一定只是处理问题,也可以是看到问题提出来,帮助解答问题等等。参与开源能得到什么,又能怎样成就自己?如果只是贡献而没有任何回报,国内的开发者可能会觉得不值得,但实际上,为开源做贡献可以获得更多。举个简单的例子,国外有几个大三在找工作的时候,上大学的时候就开始参与开源。以后投简历的时候,就能见识到真正的境界了。当面试官看到提交的GitHub数据时,人们就会相信。你是真的有经验,不是大学毕业什么都不知道,光靠简历的状态。硅谷被一群擅长造假简历的人骗了,你在开源项目中做了什么贡献,包括写文档或者提交代码,或者做社区工作,这些就是你最好的简历。中国有一个特殊的现象:开源是大人物做的,怎么轮到我,我只是一个小程序员。这个观念是错误的,我们要从自己做起,现在我们可以找个项目,从最基础的工作做起。王永和:开放原子开源基金的口号是:“一切为了开发者,一切为了世界”。开源中国(OSCHINA)也有同样的愿景。我们的愿景是:“解放世界程序员,服务开发者”。谭忠义先生在开源贡献方面有什么要补充的吗?谭忠义:首先,对社区的贡献不一定局限于代码。许多人认为为社区做贡献需要理解代码并贡献一段代码。这种情况很少见,但并非必须如此。说实话,看文档挑错,或者把英文文档翻译成中文提交,这对项目的贡献是非常大的。即使看到一个好的项目并推荐给其他人,也是对开源项目的巨大贡献。Apache软件基金会有一句话:只要你为社区做出贡献,包括代码、文档、宣传,这些都是开源社区认可的东西,不限于程序员。就算我是美工,我也觉得这个LOGO太丑了改LOGO,文档丑了换个图。这就是所有的贡献,贡献不应仅限于代码。让我们更现实一点,如果这是一个伟大的项目,能够成为其中的一员将使我们的能力得到提升,有时还会帮助我们获得更多的工作机会。还有一个原因。我参与一个项目,解决自己遇到的问题,然后回馈,同时解决别人的问题。这是一个很简单的“人人为我,我为人人”的故事。软件行业一直强调要提倡重用,减少浪费,提高效率。我们尤其讨厌重复性的浪费。开源是最大和最成熟的重用方式。这符合工程师的天性。也希望自己对这个社会有所贡献,能够造福更多的人。这有点自我实现的味道。在开源社区中做出贡献可以很容易地找到与您有相同品味的朋友,然后发展成为终身朋友。如果你根本不做,他们也谈不上你,因为有奉献精神的人可以相聚一生,激励你一起走这条路。这是一个非常好的交友方式。刘天冬:开源年会和Apache路演已经连续三四年举办女性半边天了,所以不要忽视优秀女性参与开源的力量,可以多关注看看她们是怎么做到的.国内一位开源项目大师曾经做过一个调查:现在国内成功的开源项目,不管去哪个基金会,大部分都是自己的项目。而且很多人不想重新发明轮子,所以会去优化,把这些项目优化的很好。但他认为我们缺乏的是创新。我们会发现,女性的创新思想是非常强大的,男性当然也不错。在女子半边天会场,一是鼓励更多的女性程序员和女性参与者加入开源;二是希望优秀人才参与创新,而不是重新发明轮子。王永和:我从另一个角度来理解。社区里很多人都强调为开源做贡献,就好像在做一件高大上的事情,自然会从道德上强调奉献精神。这实际上是很难维持的。当我们开源一个软件或者参与一个软件项目的时候,在我个人看来,首先想到的就是“获取”。首先,当我们使用开源软件时,我们是受益者。这个开源软件项目帮助我们解决了这个问题。其次,我们在阅读它的代码的时候,可以学习和理解这个开源软件的架构,以及一些好的实现方法,然后修正它的bug等等,在这个过程中,我们了解了里面的逻辑。另外,正如两人所说,贡献代码成为他们中的一员,更容易被社区中的其他人认可,进而可以获得更多的社会资源或影响力。王永和:时间过得真快,还有很多话题没来得及交流。希望以后有机会再和大家交流。衷心祝愿Apache基金会在中国有更好的发展,帮助中国更多的项目。祝贺OpenAtom开源基金会成立。希望在开放原子开源基金会的治理下,不断涌现出更多的顶级项目,为中国的开源环境做出更大的贡献。最后祝云+社区越来越好。05Q&AQ:老师怎么评价目前Github上的高星大多是国内的面经和demo?王永和:判断一个东西的好坏,要看它的用户。毕竟用户多了,应用也就多了,但是很多靠产品走红也未必是好事。今天聊天的第一部分说,在提到各类项目时,可以选择比较下载率和比较资源,很多用户的评价可以帮助需要这个软件的人扫雷。与选项。如果高star是好的开源软件,那就另当别论了,因为好的开源项目不仅要考虑代码,还要考虑贡献值、组件、社区是否活跃、license是否适合商业等等,需要从多方面考虑。Q:请问,我们是一家创业公司,如何将自己的项目加入开源?刘天东:创业公司和其他公司一样。现在开源在中国分为两端。一个是大公司带头,一个是创业公司。缺少中间部分(中小型公司)。我个人认为,如果要将自己的项目加入开源,首先要聘请一些开源专家来判断开源的高低,优先考虑能做出多少开源贡献,然后再看有哪些难点问题可以帮助程序员解决。同时请多多关注开源协会和开源中国介绍如何从零开始一个开源项目以及如何参与开源的文章。也欢迎订阅开源社和开源中国的公众号,里面有很多简单的解答。另外,创业公司如何加入开源?去做就对了。不要等到投资者问了,就太迟了。以前一直觉得开源不清醒,为什么要免费提供解决方案给别人?现在投资人看的是你是不是用开源的开发模式和方式去上市,你是不是在一条新的路上,用开源的方式去做。所以如果是创业公司,那就尽快开源吧。最简单的入手方式就是找一个开源专家加入其中,并提供更高的薪水!Q:开源社区如何保持稳定的用户群不流失?刘天东:明天和中国开源年会暨Apache中国路演后的第二天,我们特地请来了全球开源社区运营大师JonoBacon。他写了一本书《社区运营的艺术》,里面有一句话:每一个加入社区的成员实际上都在做出贡献每一个加入,社区就会成长。社群的运营很简单,就是一个一个的吸引成员加入社群,而不是通过网络营销一块一块的。社区是一点一滴建立起来的,没有捷径可走。Q:平时的工作基本都是写业务代码,如何找到值得开源的点?谭忠义:写业务代码的同学把业务代码开源是不现实的。开源就是写业务代码的时候,肯定会用到各种开源的组件。在使用开源组件的时候,有时间可以看看源码,看看它的原理、架构和流程。一是熟悉它的流程,二是学习专家的编码技巧。如果你认为你有一个想法,你可以贡献它。您不需要为了编写开源代码而编写开源代码。那样会事半功倍。Q:如何选择项目贡献代码,觉得自己写的代码水平不够怎么办?谭忠义:开源社区没有人会笑你代码水平低。如果你对某个开源项目感兴趣,可以先看看它的代码。如果你觉得它有问题,你可以尝试解决,然后大胆提交。就是这样,不要怕被嘲笑,先贡献,社区会教你怎么写更好。当我在2001年向mozilla社区贡献我的第一个补丁时,出现了各种问题。提交后,第一个人说:你的代码格式不太好,我改一下。第二个人说这段代码不符合mozilla项目的组件调用方式,我又改了一遍。后来有人说这个不应该在这个对象里,应该在别的地方。就这样提交了3次之后,发现自己对项目的理解加深了,工程能力和工程意识也提高了。所以不要害怕,大胆尝试,开源社区没有人会笑话你。Q:什么样的代码才是合格的开源代码?谭忠义:只要有人用,就说明这个项目有价值。不要一开始就想着写得漂亮完美,慢慢去迭代别人的意见。写代码最大的恐惧就是:解决不了问题。让别人贡献,继续开发写出更好的代码,所谓更好的可读性,更容易维护,更容易扩展,但是一开始没有特别好的代码,做不到也没有必要.问:参与开源的动力将如何持续?谭忠义:想继续做一件事其实比较简单,就是从中得到好处,有成就感,有归属感。在开源社区中,你可以得到对你所做贡献的反馈,这样你就会有继续做下去的动力。在一个社区里,你可以找到归属感,找到朋友,找到价值,这样你才能继续下去。Q:如何让自己的代码质量参与贡献?刘天冬:朱凯写了一本书,名叫,起源于他在网上和开源社区问了很多“傻”的问题,但很多人回答,渐渐地他也会帮忙回答,于是我总结了这些问题,写了这么一本书,他现在已经是神级人物了。他还将在今年的中国开源年会上发表相关演讲。还有李辉,他是Flask的专家。他说,参与开源有三点建议。第一,不要交女朋友,第二,不要工作,第三,提前宣布自己想做什么。没有女朋友是骗人的(他已经有女朋友了),其次不找工作,他真的不找工作只是为了参与开源,最后全职投入其中,并且参与过程中问了很多傻问题,最后整理问题后回答了很多开发者的问题。觉得这些问题这么有趣,还是写本书吧。他马上宣布要写一本书,然后他就真的写出来了。所以不要怀疑自己代码的质量,想到就开始做,先问傻问题,再参与文档和代码的贡献,慢慢你就会成为高手。问:如何开源?王永和:总结起来,思路应该是:第一,为什么要开源?你对这个问题感兴趣吗?想清楚自己想从开源中获得什么,目的一定要明确,才不会最后努力得不到回报,导致落差很大。想清楚了目标之后,再想想如何参与开源,不仅要参与其他项目,还要开源自己的软件。至于如何参与,可以参与早期项目,参与日常使用的开源项目,从代码开始研究,提出bug,修复代码等。用我们的能力做一个笼子,让更多优秀的项目参与其中,您将随着项目的发展而成长。自己怎么开源,想清楚怎么开源,想好开源的方式,然后去做。Q:国内有哪些好的开源社区?王永和:可以关注开元社和开元中国。很多开发者社区都不错,我们也投资了一些。开源中国在开源方面做了大量的工作。Gitee现在应该是全球第二大代码托管平台了。首先,它的网络速度更快;第二,因为一开始就是为国内用户设计的,所以在语言和功能上为很多中国开发者做了特别的努力。定制。我们的原则是:具体的代码协作是有自己的规范的,不要破坏这样的规范,包括它的使用说明和协作习惯是一致的,大家可以再次使用。