X-lab2017 / oss101-bok

https://www.x-lab.info/oss101-bok/
2 stars 4 forks source link

开源开发者 #23

Open will-ww opened 1 month ago

will-ww commented 1 month ago

开源开发者是开源创新全过程的核心参与方,是开源项目及其衍生产品的生产者和供给方,是开源项目的主要贡献者。开发者的整体数量规模、知识储备和协作机制对开发者整体的贡献质量具有决定性影响,最终决定开源项目创新成果的质量和影响力。开发者的触达方式和来源渠道决定开源生态边界的性质和延伸度。对于不同的开源开发者,根据其贡献方式、参与动因、职业身份等特征,可以分为个人、企业、正式组织、非正式组织四类开发者角色。四类角色承担了开源开发者不同的贡献职能,但都属于开源创新过程和开源创新生态的重要开发者范畴。为了从软件行业从业者、编程爱好者的角度出发给出建议,我们采用组织属性作为划分标准,本章将详细介绍个人开发者、企业开发者、正式组织开发者和非正式组织开发者这四类开发者群体在开源项目和开源社区中参与贡献的途径。

开源开发者的内涵

在开源运动的酝酿和萌芽阶段,从狭义上来说,开源开发者指的是软件行业中以代码自由、代码开放为主张的一群反对将软件私有化的程序员。他们热衷于分享,并将分享看作是劳动价值的体现。当观念体现到行动中,在广义上,开源开发者是对任何有参与大规模群体开发能力和意愿的程序员的总称。他们的统一行动和分布式协作被认为是正义且充满善意的,因此他们是明显区别于“骇客”的另一个自发组织。随着这一部分开发群体参与开源运动的途径和形式越来越丰富,专业的开源软件开发者与开源社区中的其他活跃者的界限和交集越来越模糊,开源开发者这一名称拥有了更加丰富和深人的内涵。

开源开发者的定义

随着开源运动的影响力逐步从软件领域辐射到其他领域,开源开发者的范围突破了程序员这一职业约束而变得越来越广泛,扩大了开源开发者的外延。同时,已有许多文献从不同学科角度对开源开发者的分类、开发者参与行为特性及其影响因素(莫雪盈,2021)、开发者协作网络关键开发人员的识别等内容进行了研究。

“开发者”一词的运用在学术界关于开源的研究中越来越常见,且不再局限于会写代码的编程开发者。根据这一趋势,将开源开发者定义为:在开源项目的发起、开发、使用、维护、再发布等全过程当中,通过主动向开源社区开放个人的代码想法、建议、知识等资源,从而获得计算机和网络技术提升、项目经验丰富、社会声誉改善、物质回报等持续激励并致力于不断与开源项目相互促进、共同成长的开源运动参与主体。

开源开发者的范畴

开源运动的参与主体不仅包括个人,还包括公司(企业)、基金会政府等。其中,个人参与者是大家最为关注的对象。参与开源的个人开发者范围广泛,遍布各行各业,包括校园开发者群体、开源企业员工开发者群体、社会兼职开发者群体等。此外,不用拘泥于编写代码这一种贡献形式,只要是对社区和项目有所贡献的群体,无论贡献的内容是创意、知识还是组织和管理能力,都可以算在开源开发者的范畴之内。

关于开发者范畴的划分及定位方面,现实生活中人们常常看到初级开发者、中级开发者、高级开发者这样的称谓。这种称谓大多数是他们推销自身以获得一份稳定工作和报酬时写在简历上的自称,或是机构在售卖程序设计课程时对目标客户的吸引噱头。而划分初级、中级和高级的最简单的量化指标就是从业时间,因此,当开发者从事开发工作三年以上,就可以称呼自己为“高级开发者”。然而在开源活动中,对于开发者这一角色范畴更加细致和科学的一种划分方式应当回到知识、经验和目标上来,以能力范围内的目标清单作为判断标准。

初级开发者在工作上面临的是另一套崭新的知识,对自己所要做的工作没有任何头绪,因此初级开发者在工作之初,必须要做的是专注于代码,而且尽可能地放开心胸、努力学习。他们需要大量的练习从而完成个项目并能持续加以维护,他们同样需要指导和监管,以及一个能帮助他们的老师。可以说这个阶段是战略上的一种积累状态,但是必须要学习加积累、积累再学习,两者缺一不可。中级开发者们能够在项目失败时反省整个过程,而且会意识到,比起匆匆忙忙埋头苦干完成任务,应该在项目最初就建立起一些规矩。一个中级开发者应当是有能力通过以往经验、文本资料、项目团队讨论等方式,摸索出“正确方法”做事的人。在这个阶段,学习构建软件的理论比学习构建代码更重要。真正的高级开发者则会懂得所有理论基础都有背景支持,因此他们不会执着于“对的方式”去打造软件,而是把理论灵活运用于实际,可以变通用于为客户、团队和组织需要服务的工具。他们知道我们的所有领域中都存在着权衡,并且会关注设计模式、库、框架和过程的权衡,会在项目过程中设身处地了解客户想要什么样的工作结果,以及他们的喜好,毕竟这些东西比开发者个人的偏好和成功更重要。他们永远不会说“那不是我的工作”,也永远不会推搡任务和责任。因为高级开发者懂得一件事,那就是他们的工作是为客户提供解决方案,而不是埋头写代码。他们永远把自己的团队能给顾客带来多少价值放在考核标准里,而不是把自己的努力和客户需求放在对等的PK赛场里。

明确好自身的能力、定位、责任和努力方向,是每位开发者参与开源之前必想必做的事,这可以提高开发者的自我认知,提高分布式开发事务的整体效率。

开源开发者的分类

基于开源的创新模式成为全球范围内主要创新模式之一,开源社区在其上孕育而生,其背后海量的开发者行为数据蕴含了大量的个体贡献规律、群体协作模式、社区健康状况、生态发展趋势及商业战略价值。这些价值被开发者、社区、企业、政府等不同方所发掘与利用,越来越成为数字化时代的创新主流。开放源码软件主要被散布在全世界的编程者队伍所开发。源代码开放是信息技术发展引发网络革命所带来的面向未来以开放创新、共同创新为特点的,以人为本的创新2.0模式在软件行业的典型体现和生动注解。

开源开发者是开源项目的构建者和推进者,是开源项目顺利运行的必备资源。开源的发展经历了几个阶段:第一阶段是科研人员、企业界的研究人员、业余爱好者合作写软件,然后分享出来,类似现在的开源软件。第二阶段由于互联网取代了高级研究计划局网,得益于网络的廉价与便利性,协作和交换代码变得容易。不过在当时,还没有商业模式的概念,这类自由软件的开发工作主要是大学或企业的研究经费赞助。第三阶段是开源相关商业模式的出现,谷歌等大型企业也纷纷加入开源这一时代潮流中。由开源发展历程可见,开源开发者主体从个人为主导逐步演变为个人、企业、正式组织和非正式组织共同引导和参与的模式。

1、个人开源开发者

据美通社消息,截至2020年5月30日,通过统计GitHubTOP1000知名开源项目发现,在CSDN网站上,与开源项目相关的文章数将近600万篇,作者72万名,在过去的6个月里,产生了17亿次的访问量,这是个非常庞大的数字。从数据可以观察到,今天,所有的开发者都极度依赖和关注开源。开发者具有如下特征:第一,91%是35岁以下的年轻开发者;第二,开发者以男性为主;第三,无论工作年限多久,开发者对开源都极为关注;第四,从地域分布来看,开源开发者主要聚集在国内一线城市,北京遥遥领先,上海、深圳、杭州、广州随其后;第五,从开发者的技术能力标签显示,最活跃的开发者,Java类占绝大多数,而Python类增长最快。从以上开发者几大特征来看,开源开发者群体中,个人开发者是最具活力、最有创新性、参与甚广和增长最快的一股不可忽视的力量。

在开源社区中,维护者、提交者、贡献者、使用者四种角色都能成为开发者。换言之,开源社区里大致有以上四类个人开发者。

一是维护者(Maintainer):对于某些项目来说,“维护者”就是唯一拥有提交权限的人。然而在其他的一些项目中,他们只是README中列出的维护人员。作为一名维护者,不仅为项目撰写代码,还可能是项目的布道师,他们可以为项目的宣传做很多的工作也可以撰写文档让更多的人参与进来。不管他们每天做什么,维护者就是那些对项目方向负责的人并致力于项目的改进。领导者会将一些决策和模块直接委托给维护者维护者还可以将其中部分工作再委托给下一个层级的维护者。例如,莱纳斯·托瓦兹(Linus Torvalds)手下就有若干位内核的维护者,负责不同的模块。

二是提交者(Committer):开源提交者是可以直接提交代码到主干的人,在项目模块的维护中发挥重要作用。有些开源项目会设置一组可以直接提交代码到主干的人,这些代码不再需要提交维护者去进行审核。提交者需要对自己负责模块所使用到的技术有较深的理解,能够担任核心的开发工作,同时还要对项目架构有一定的设计能力。而提交者也可以在开源项目中获得自我的提升。但提交者对代码没有最终的决定权,维护者或项目的领导者如果发现了什么,可以将提交的内容打回去。

三是贡献者(DeveloperorContributor):开源贡献者是一股推动项目发展和改进的不可小觑的力量,贡献者可以做很多事,比如帮助解答用户的问题,贡献代码或文档,在邮件列表中参与讨论,也可以提交代码。如果一个人对项目有一定研究,对项目发展起到推动作用,那可以认为其是一名开源贡献者。与前面的角色相比,贡献者对于代码的权力要小一些。

四是使用者(User):开源使用者作为社区成员,他们最有价值的部分是提出需求、报告缺陷、提出建议。通过提出需求,报告缺陷让企业级项目里碰到的问题得到快速解决,也能促进开源项目的迭代,等于是贡献了社区。用户为项目提供了目标,并帮助项目持续进化。

开发者在开源项目中的角色并不是单一或一成不变的,开发者具有自己的成长路径:入门一用户一贡献者一提交者一维护者一发起人。这个成长路径的实现需要个人不断地在开源项目中作出贡献。

参与动机概括为内在动机和外在动机两种,即与愉悦感相关的内在动机和与经济因素相关的外在动机。具体来说,内在动机是指与个人开发者自身兴趣爱好、理想、学习知识和提升技能的意愿等有关的因素,主要集中体现在以下几个方面:一是兴趣爱好。基于对代码和编程工作的热爱个人能够从软件开发中感受智力激发所带来的乐趣。二是能力提升。一般来说,个人建立或参与项目是为了探索或解决一个现实问题,通过与项目内其他成员的交流能够快速找到解决问题的方案,并从知识共享中提升开发技能。三是感恩回馈。开源项目给予参与成员学习与交流的机会,很多人基于感恩心理,对开源项目或社区心怀奉献的责任感。此外,还有一些其他的内在原因,例如,磨炼一份坚韧不拔的精神力,因为哪怕是资深人士也会遇到棘手的难题,当遇到这些“拦路虎”时,就需要一份屡战屡败、屡败屡战的勇气,支持自己突破自身技术瓶颈;得到一次将自己的理想落地实现的机会,技术人员在开源贡献过程中,可以实现“用代码拯救世界”的理想等。

外在动机是指开源社区能够为个人开发者带来的收益或能进一步促使个人开发者持续作出贡献的各种外部激励因素。外在动机主要集中在以下几个方面:一是职业晋升。当个人在社区贡献突出时,随着其声望的提升,也会促进其职业的晋升和发展。二是自我认同和社区归属。一些个人在开源社区中能够收获他人的认可和尊敬,随着社区地位的提升及自信心的提高,自我认同得到满足。三是金钱报酬。个人开发者在开源代码开发过程中,如果得到与贡献对应的相对酬劳,将会激励他们更长远、持续地作出贡献。

个人开发者为开源项目作出贡献的方式并不一定意味着必须在代码库里增加代码行数,还可以通过发现故障、社区答疑、使用反馈、社区管理等多种不同的方式为开源作出贡献。

发现故障方面,个人开发者在使用过程中看到文档有错别字或看完文档发现有不清晰的地方时,可以针对性地指出这些问题,帮助开源社区和项目的完善。社区答疑方面,可以通过在开源社区中参与博客留言或者发布博客等动态交互方式,为其他开源开发者答疑解惑。使用反馈方面,发现软件使用过程中存在无法满足需求的方面时,针对性地提出自己的需求和改进建议。社区管理方面,经验丰富的开发者还可以通过总结自己的项目开发、产品使用经验,在组内、部门内、社区等多层次范围进行技术分享,帮助传播。有想法并乐于付诸实践的开发者还能成为贡献者,甚至核心开发者,参与战略讨论,引领开源项目的发展。

1991年,年仅22岁的芬兰程序员莱纳斯·托瓦兹(LinusTorvalds)发布了自己独创的操作系统--Linux。Linux没有注册专利,也没有进行商业化,而是作为一个大家都可以免费使用的产品继续发展。莱纳斯创造了一个时代,让开源的路走得越来越远,越来越平坦。他将代码公布在网上,爱好者们也贡献着自己的力量来使它强大。如今,在各类开发者的努力下,Linux已经遍地开花。智能手机、邮政系统、欧洲核子研究组织和超过 95%的超级计算机都在使用。对于开源的期待和维护者角色的阐释,莱纳斯·托瓦兹这样讲道:“进行商业化可能会毁了Linux,那么像现在这样和谐成熟的开发者社区就不会出现,Linux也不会像现在这样全面。……我喜欢通过开源来让各地的开发爱好者们参与其中,做他们擅长做的事。也意味着我可以专注于技术方面,而其他人可以帮忙推广。……我进入了一家跟 Linux 毫无关联的创业公司,这样就不会让我的个人主观偏好影响到我的工作,而在过去十年,我做的是跟Linux相关的工作,并且也依此获得薪水。但为了不参与带有倾向性的竞争,所以我加入了一家非营利组织(LinuxFoundation)。这样,我的'维护者’的角色就能得到大家的承认了。”

2、企业开源开发者

开源在过去的30年里发展极快,尤其在各大企业主导的商业化上,它经历了一轮又一轮的技术变革。从互联网LAMP结构(Linux、Apache、MySOL、PHP)到移动互联网(FreeBSD、Android、Flutter、Kotlin等),云计算、大数据(Nginx、Hadoop、0penStack、Docker),以及近两年来火爆的AI(TensorFlow、Caffe等)、区块链(BitCoin、Ethereum、Hyperledger)等新技术的发展背后都有开源关键技术及应用在默默支持和推进。企业作为开源开发者,有着不同于个人开发者的特点和优势,如下将会对企业开发者进行详细解析。

开源软件的商业化经历了三代:第一代以红帽为代表,将开源软件打包成 package,以光盘的方式销售,红帽即是从此起步,到今天发展成一个庞大的公司,证明了企业在开源创新过程中也找到了适合的商业模式。第二代属于 Open Core,将基础版开源,但商业版和专业版仍然闭源,或是开放核心但要收费,以 Hadoop为代表,包括Spark,该阶段开源企业的商业模式主要是通过商业版和专业版闭源获取收益。进入第三代商业化模式云原生,代码全部开源,但是开源系统越来越复杂,想要很好地运用这套工具,可以由开源公司提供云原生系统、SaaS服务、私有云服务,企业主要通过提供衍生系统和服务获取收益。这个模式目前取得了非常大的发展,几家开源上市公司ElastciSearch、MongoDB等市值发展都接近100亿美金。

企业同样可以以维护者、提交者、贡献者和使用者的角色参与开源项目。但是相比于个人,企业有其独特的作用。

开源开发者的成长路线

开源开发者要想得到持续成长和价值实现,就不应隶属于单个项目作为项目工作人员仅仅开展项目的横向推进,而需要成长为某个项目或某个社区的长期贡献者、建设者甚至管理者。只有依托个人贡献度和贡献质量,不断健全和完善开发者的评价和激励机制,建立成熟的开发者职业进阶通道,做好开发者纵向的成长路径体系规划,才能为开源生态的长足繁荣提供源源不断的兼具业务能力和成长性的人才资源。开源开发者诞生于开源运动中,因此开发者的成长同样也离不开开源实践。

1、在开源社区学习与体验

在崇尚终身学习和共享的时代,开源社区作为开发者的社交园地,为广大开发者提供了一个自由的学习场所。事实上,各大开源社区平台、参与深度开源的企业以及围绕开源项目提供各项管理和服务的各类基金会对于开源人才的能力要求有着更高的标准,因此向来十分注重利用自身资源为开发者的培养和成长提供更广阔的平台和机会。这既十分符合开源本身开放共享的核心理念,又恰好满足开源开发者出于能力提升和价值实现的职业成长需求。双边一拍即合,拥有较高自我成长动力的开源开发者在自由、开放、平等、共享的开源环境中逐渐变得成熟和富有创新能力。

开源开发者在社区中的学习途径包括参加课程、相互交流、下载代码、编写代码甚至使用软件等。社区通常会通过举办专业研讨会、系统培训、建立博客协作等机制来进行宣传。例如,阿里云依托开发者社区搭建开发者一站式学习平台,涵盖云计算、大数据、AI、IoT、编程语言等领域,制定科学的学习成长路线,开发多层次技术图谱,快速提升开发技能。开发经典云场景、免费云资源、真实云环境、专业指导,基于业务场景,深入学习体验云场景,为开发者成长助力,不断升级“开发者学习中心”。

一个开源社区的学习资源多少及知识更新容量大小取决于其汇聚的开发者规模大小,因为每一个开发者既是学习者,也是贡献者。他们不仅直接为社区所管理的开源项目提供编写和修改代码的贡献,而且作为参与者提升项目开发群体的知识、能通过答疑解惑、提供资源帮助其他开发者,:力和智慧,从而间接为开源项目作出贡献。

2、获得好评级与高声誉

许多开源组织管理方在开源社区中收集开发者行为和贡献信息,建立并使用开发者能力评估模型,进而不断优化开发者贡献评价机制。目前较为普遍的衡量个人开发者价值的方式主要体现在开源社区的平台指标评级设定上。基于平台对用户活跃度和贡献度等价值的量化评级,根据《全球开源生态研究报告》,未来开源社区将通过用户价值分层进行分类分级运营。

基于开源社区聚焦核心用户的未来趋势,开源开发者要想在开源社区中谋求稳定的价值回报,就必须成为开源社区的核心用户,以承担核心责任和主要业务来换取稳定的职权和收人。

全球开源生态研究报告》将开源社区用户分为五级,每一级有着对应的权限和责任。

开发者根据权力大小从低到高划分为:以对产品感兴趣的消费用户为主的、规模最为庞大的兴趣用户;逐渐向社区反馈使用需求和建议的活跃用户:参与社区的代码贡献、代码故障提交等社区建设活动并承担一些非代码的社区贡献任务的社区贡献者;对项目有着大量代码贡献、对项目的代码和架构有清晰的理解、拥有代码审核和合并等社区权限的核心贡献者,以及主要负责项目重大事项的决策、同时把控项目整体发展方向的社区决策和领导者,即PMC。同为社区用户的开发者需要通过努力获得更高评级,从而获得在开源社区中的更高分级与权力利益。

对于有本职工作、不追求在开源社区谋求权力利益的社区贡献者,开源社区也基于评级机制给予有重大贡献的社区贡献者以丰厚的物质和精神回馈,帮助用户更好地证明自己的成就,找到更合适的职位和更多的合作机会,打造个人形象等。

致力于“成就一亿技术人”的T技术网站、专业开发者社区CSDN通过原力系统来衡量一个用户在CSDN的贡献和影响力,由量化数值和定性等级组成指标体系,结合博客积分、博客等级、C币、实物勋章、荣誉称号等给予贡献者以激励。 荣誉体系具体是指,根据活跃度和产出,CSDN给相关用户颁发“博客专家”“博客之星”“1024 勋章”“1024超级勋章”“勤写标兵 Lv1-4”等勋章。其中“博客专家”用户除了在头像上显示“专家”勋章外,还有机会免费参加CSDN举办的各种会议;有机会成为SDN学院讲师、CSDN博乐、CSDN问答导师等;有更多演讲机会,CSDN会将开发者推荐给厂商或者各种 T技术大会作为演讲嘉宾;享有月度原创奖励,C币、图书或定制礼品;享有自定义模块、自定义域名、全站免广告等权益;所著文章获得更多的推荐机会等①。 此外,CSDN还开发运营了评论活跃等级体系,即对用户在博客评论区活跃程度的辨别标准,旨在鼓励读者和博主互动交流,提高用户活跃度,根据当前有效评论数展示不同的“评论等级称谓”。

3、选择成长路径和机会

广大开发者群体对于商业公司来说是丰富的资源宝藏,开发者的学习与成长一方面是开源基金会、开源企业、开源项目及社区引流和发展的新赛道,另一方面也是保障开源生态健康发展所需要关注的重要领域。对于广大开发者来说,基金会活动、企业计划、开源项目及社区等都是非常有优势的开源学习依托,而每种依托背后都蕴含着不同的成长路径和机会。但总体来说,开源开发者的成长主要体现为开源综合素质的提升,包括开源技术、开源管理、开源创新和开源理念等方面的能力。

开放原子开源基金会发起首届“开放原子全球开源大赛”,旨在联合开源组织、企事业单位、高等院校、中小学、科研院所、行业组织、投融资机构等多方资源,搭建面向全球开源领域的前沿技术竞技、优秀人才选拔、创新成果展示、商业转化引导和对接交流合作平台,广泛传播开源文化、普及开源知识、推广开源项目、提升开源技能,为推进开源生态繁荣和可持续发展提供动力和支撑Ф。利用基金会本身影响力、提供比赛奖金和声誉等,聚集起众多的开源企业、开源项目和开源机构,提升项目质量和运营水平,培养与聚合开源人才,通过公益项目助力开发者成长。

基金会拥有较为成熟的项目孵化经验,对开发者的能力需求、开源生态的人才需要把握准确。同时基金会在前沿技术、影响范围、专业水平上都具有优势,对所管理的开源项目社区具有较高影响力,因此基金会能为开发者提供专业、丰富、连续的成长服务。

依托基金会活动,开发者可以通过练习提升编程技能和架构思维,可以从外围学习开源项目的进度,也可以培育孵化项目并形成创新成果,还可以借助基金会的平台完成商业化的转化。开发者依托基金会的成长路径多样化,基金会强大的资源优势也可以保障开发者学习的效率和质量,让开发者在开源技术、开源管理、开源创新等综合开源素质方面均获得提升,让开发者成长为在开源领域能独当一面的新一代开源人才。

阿里云“开发者成长计划”通过提供云算力和服务器,开放1亿元免费算力,全力打造开发者“云上第一站”,面向全年龄段开发者提供免费体验、免费学习、免费实践支持。帮助开发者掌握云上技能,赋能数字经济时代的云计算技术人才。

大型企业,特别是大型互联网公司在积极布局开源的同时主动为广大开发者提供了学习平台、路径和资源,主要通过降低开源技术门槛这一方面吸引更多开发者参与到开源潮流中来。 对于开发者来说,以云服务商为代表的、与开源息息相关的高新技术巨头企业对开发者群体的价格优待、算力赋能等是更碎片化的学习资源开发者在企业推出的各类“成长计划”中既作为流量给开源基础设施服务商带来了市场份额,又切实提高了自身开源技术能力,因此要抓住机遇'薅羊毛”,学会利用社会资源赋能自身的开源素质。

Open Atom Open Harmony(OpenHarmony)开源开发者成长计划项目自2021年10月24日上线以来,在开发者中引发高度关注。该计划主要面向校园开发者群体,依托开源项目平台本身,举办多次竞赛和学习交流活动,培育鸿蒙操作系统的熟练用户。

开源项目的用户群体对于开源项目的改进升级方面具有找错优势,在开源项目的推广使用方面具有至关重要的地位。因此将用户转变为开发者,不仅需要技术支持,更需要开源理念的渗透。

开源开发者在开源项目的开发阶段或许就是参与者,在项目发布后作为用户活跃在开源项目的社区里。企业内部开发者这时可以作为企业内部员工第一时间接触到市场的反馈,从而积累用户习惯和市场偏好,成长为产品经理或项目经理,学会开源管理,进而不断优化能力,逐步走上更高层次的岗位。外部开发者这时作为用户对项目提出改进意见,活跃在开源社区中,不断往其中注人开源理念和精神。用户在使用产品的过程中在开源项目所蕴含的开源理念引导下,走向更广阔的开源世界。