X-lab2017 / oss101-bok

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

3.1 开源社区 #35

Open Peng99999 opened 2 weeks ago

Peng99999 commented 2 weeks ago

开源社区的定义

开源共同体 一种具有共同目标、愿景、与价值观的开源组织 ———— 团体标准:信息技术-开源-术语与综述(3.4.9)

开源社区在推动开源软件发展的过程中起着巨大作用,在整个开源生态体系中起核心作用。当前我们所身处的数字化时代几乎都是由开源社区孵化的开源代码作品所构建的,伴随着开源运动在中国的落地与发展,开源社区正处于从早期的无序发展向有序发展的过渡阶段,呈现出今天的开源社区百花齐放的繁荣景象。

开源社区最主要的作用就是建立一个良好的开源讨论、发布和交流环境,并且稳定地进行人才培养。至于推动开源商业模式等营利方面的需求,则是在良好地完成了这些关键任务之后,才能进行的事务。《Geek》认为,开源文化是否能流传发扬下去,一个人人都能畅所欲言,并且可以让用户和开发者等各方面人群进行顺畅交流的稳定环境才是决定性的因素。

开源社区不仅是开源文化传播和开源软件开发的重要载体,其多样性和复杂性也决定了它在分类方式上具有不同的视角。我们可以根据不同的需求和研究角度,将开源社区划分为不同类型。这种分类方式有助于更好地理解社区的内在结构、运行机制及其对开源软件发展所产生的影响。

开源社区的内涵

尽管“开源”一词最早出现于1998年,但开源的历史仍可再向前追溯三十载。20世纪80年代,围绕美国电话电报公司(AT&T)推出的操作系统Unix,来自世界各地的学者与开发人员通过不断的研究与交流,形成了成百上千个衍生版操作系统,以满足自身异质性需求。1991年,来自芬兰赫尔辛基大学的学生莱纳斯·托瓦兹(LinusTorvalds)开发出具有奠基作用的操作系统Linux,并公开全部代码,进而将自由软件运动推向顶峰。但随着运动的推进,人们越发感觉到“自由软件”(free software)一词不仅会产生歧义,更会阻碍企业、政府等主体的融人。为此,该运动的领导层于1998年在硅谷召开集会,一致决定将“自由软件”更名为“开源软件”,标志着自由软件运动正式过渡为开源软件运动。当时的Linux操作系统、桌面办公软件(GNOME、Open0fice)和浏览器(Mozilla)作为开源项目的主战场,掀起了第一波开源的浪潮随着开源项目规模的不断壮大,开源社区也逐渐形成。此后,围绕各类开源软件,来自世界各地的用户自发形成了数以万计的在线社区组织,旨在软件世界里构建起一个自由、透明的价值共创网络。

开源社区通常涉及参与者、项目与基础设施三个重要元素,其由参与者组成,围绕开源项目聚集,依托基础设施协同。当人们同意共同构建和改进开源软件时,开源社区就形成了。大多数开源软件社区没有正式的成员资格申请或批准流程。通常来说,人们参与项目的方式很简单,比如修复软件代码中的错误,为应用程序创建新功能,编写和完善文档,在会议和其他活动中宣传项目等工作。个人参与社区的动机各有不同,一部分人参与开源社区是因为软件工作是他们工作的范畴,或者是因为他们的组织雇佣他们来开发软件,又或是因为他们的工作依赖于软件的良好运行;一部分人参与开源社区为了学习和提高个人技能:还有一部分人是为了社交,或者为了一种认同感和归属感。开源社区围绕开源项目展开,因此社区发展需要依托一个好的项目,一个有发展潜力的项目可以吸引足够多足够优秀的人来一同建设。开源基础设施涉及开源代码托管平台、技术社区(包括网站、问平台、技术图谱)、工具产品(包括开发工具、代码安全工具等)。基础设施影响社区成员的活动方式。如在早期阶段,参与者仅能从文档了解项目,现如今介绍文档已经不仅限于文字形式,参与者还可以通过视频或即时通信技术直接了解项目的实际情况。

经过多年的发展,学界已对开源社区形成了具有高度趋同性的定义开源社区一般指围绕开源共识,受共同实践所驱动,以软件源代码为核心,由地缘空间分散但拥有共同兴趣爱好的开发者根据相应的开源软件许可证协议,以民主、合作的形式进行软件的共同开发、维护、增强等知识创造与传播活动的网络平台,同时也能为成员展开交流学习与共同治理的网络组织。

开源社区是一个以开源创新发展为目标,由共同身份和集体目标相联合,为广大开发者、测试者、捐赠者和用户提供集邮件列表论坛、互联网中继聊天(IntermetRelayChat,IRC)和各种会议的交流平台。在这个平台上,大家集众智、采众长,加速技术迭代升级,促进产品协同创新,为推动社区项目发展、完善社区管理体系贡献力量。

开源社区的分类

20年来,中国开源社区发展从无到有,欣欣向荣。中国的开源社区起初以 Linux爱好者为主导,最早出现于1998年。早期中国的社区多为个人爱好者兴办,社区的发展规模和影响力有很大的局限性,因此中国第一代社区的持续发展能力不足,大多销声匿迹。后来,随着互联网的兴起,开源的项目和技术呈现百花齐放之盛况,从数据库到中间件、从前端到后端、从编程语言到编译器、从物联网到微服务、从大数据到人工智能,开源的技术和项目越来越丰富和多样化。在此趋势下,自2008年起,中国第二代开源社区纷纷登场。近几年,随着移动互联网和云计算、AI在中国的蓬勃发展,中国开始涌现出大量开源项目的开发者,开源社区进入第三代。典型代表包括开源中国社区、木兰开源社区、GitCode、OpenI 启智开源社区等。第三代社区的典型特征是在社区运营和管理上更加中立和平衡,且社区内包含不同来源的众多开源项目。

目前中国的开源社区已经从第一代--启蒙、传播开源理念、推动开源使用,进入了第二代--积极参与代码贡献、影响开源,并逐渐向第三代发展--完善开源生态环境,形成开源生态链,做强做大、引领开源事业。根据中国开源软件推进联盟最新统计,截至2022年3月,中国各种类型开源社区已经超过500个,按照门户型社区、项目型社区和用户型社区三类进行归总,其中约85%为用户型社区,约11%为项目型社区,4%为门户型社区。

用户型:用户型社区主要是开源爱好者自发形成的小型社区,以知识分享、经验交流和传播开源文化为主要目标。其中最为典型的有开源社、GoCN社区、Python 中国社区、龙芯俱乐部等,多数仍然属于第一代开源社区。 项目型:项目型社区主要是指聚焦特定开源项目的社区,该社区一般包括代码贡献和协作、集成测试、应用实践、用户反馈等核心功能,大部分项目型社区由背后的机构或企业来资助或直接运营。其中最为典型的有欧拉(0penEuler)社区、0penHarmony社区、Apollo社区、Apache SkyWalking社区、华为MindSpore社区等,属于第二代开源社区的典型。 门户型:门户型社区平台是指具备开源代码、项目孵化、开源治理、媒体等多种服务功能的社区,其他垂直小众社区也在该社区平台构建自己的影响力。其中最为典型的有开源中国社区、木兰开源社区、OpenI 启智社区鹏城汇智平台等。其中部分具有第三代开源社区的特点,通常包含众多不同来源的开源项目,同时也接受开源项目的捐赠和托管。

参与者:参与者是社区的核心组成部分,既包括开发者、用户、维护者,也包括贡献者和测试者。 基础设施:开源社区的基础设施通常指的是支撑其运作的技术平台、工具与服务,例如代码托管平台、问题追踪系统、文档管理工具等。 规则与制度:每个开源社区都有相应的规则与制度,确保社区的有序运作,促进公平协作。这些规则通常涵盖贡献流程、代码审查规范、版权与许可证等方面。 运营:社区的运营涉及到管理者如何协调项目的进展,调动社区的资源,吸引新成员,并维持社区的活跃度。 评价:对社区及其成员的评价机制决定了社区内贡献者的激励方式,通常包括代码质量、活跃度、贡献数量等方面的衡量标准。

image

开源社区中包含的角色

<开源>在特定开源项目(3.2.5)上的积极贡献者。 注:通过积极贡献提交记录、议题等参与开源项目(3.2.5)贡献,受到项目团队核心成员认可的贡献者。———— 团体标准:信息技术-开源-术语与综述(3.4.1)

成员是开源社区的核心力量,他们的积极参与直接影响着项目的质量、活跃度和可持续发展的潜力。每一个成员在开源社区中扮演的角色和贡献的深度可以有所不同。部分成员可能会成为核心贡献者,承担项目的主要开发任务,并在社区治理中发挥重要作用;另一些成员可能通过偶尔的贡献或支持活动保持参与。无论贡献大小,每一个成员都为项目和社区的发展提供了不可或缺的支持。成员是开源社区赖以生存和发展的核心力量,他们共同构建了一个开放、合作、创新的环境,在推动技术进步的同时,也促进了知识的共享和传播。

开源项目(3.2.5)上的核心贡献者,拥有对开源项目上所提交内容接受或拒绝的权力,了解开源项目架构、目标和发展策略,能够对开源项目上提交的patch、commit、issue/bug等内容进行审核,掌握该开源项目核心技术的贡献者。 注:部分社区也称核心贡献者为approver。———— 团体标准:信息技术-开源-术语与综述(3.4.7)

核心审查者在开源项目中扮演着关键的技术和管理角色,他们的主要职责包括: 代码审查:对提交的代码和补丁进行技术评估,确保其符合项目的架构和质量标准。 问题管理:处理并审查提交的 bug 和 issue,评估其优先级,并协调解决方案。 架构把控:理解并维护项目的整体架构,确保新的贡献与项目的长期发展方向保持一致。 指导贡献者:帮助新贡献者了解项目规范、提交要求和最佳实践,通过反馈促进他们的成长。 版本管理:参与项目的版本发布流程,确定哪些功能和改进能够合并到主分支并准备发布。

提供贡献从而促进开源项目(3.2.5)发展的任何个人或法人实体。———— 团体标准:信息技术-开源-术语与综述(3.4.5)

贡献者是开源项目发展的基础力量,贡献者可以通过提交代码、修复漏洞、编写文档、提出新想法、测试功能等方式帮助项目成长。他们可能是独立开发者、企业员工、或者来自不同背景的开源爱好者,他们通过不同形式的贡献共同推动了开源项目的持续成长。

贡献者的角色多种多样,他们可以通过多种方式为项目做出贡献: 代码贡献者:提交代码改进、实现新功能或修复现有的错误和漏洞。 文档贡献者:编写和维护项目的技术文档、用户指南、教程等,帮助其他用户理解和使用项目。 测试人员:参与测试项目的新功能或版本,确保其稳定性,并反馈测试中发现的问题。 问题提出者:在发现项目中的问题或需要改进的地方时,提交 issue 或 bug 报告,以帮助开发团队定位和解决问题。 推广与社区建设者:通过宣传项目、组织活动、分享经验等方式,帮助推广项目并壮大社区用户基础。 设计与用户体验贡献者:通过优化项目的用户界面和用户体验,提升项目的易用性和吸引力。

<开源>特定开源项目(3.2.5)的负责人。 注1:项目管理者对开源项目架构、目标和发展规划具有清晰的认知,拥有提名核心审查者及其对开源项目内容审核的权力。 注2:也称项目管理者为maintainer。———— 信团体标准:信息技术-开源-术语与综述(3.4.21)

项目管理者通常拥有提名核心审查者的权力,并对项目中提交的内容进行最终审核与裁定。通过掌握对项目的整体控制,项目管理者可以确保项目的技术方向与社区发展目标保持一致,推动项目不断向前发展。

项目管理者在开源项目中的主要职责包括: 制定项目战略:设定项目的长期目标和发展方向,确保项目架构和功能符合社区和用户的需求。 提名与管理核心审查者:负责提名核心审查者,确保项目的审查流程高效并保持高质量标准。 监督项目进度:管理和协调项目的各个方面,确保任务按时完成,并根据需要调整计划。 确保项目质量:对项目提交的代码、补丁、文档等内容进行审核或授权核心审查者审核,以确保项目的稳定性和质量。 社区互动:与社区成员保持沟通,吸引更多开发者和用户参与项目,并积极回应他们的反馈。

<开源>行使开源许可证(3.1.3)所授予权限的个人或法律实体。 注:在许可证实例中一般称为“您”及“接收者”。———— 团体标准:信息技术-开源-术语与综述(3.4.22)

用户在使用开源项目时享有广泛的权利,但同时也需要遵守开源许可证中的相应义务。这些权利与义务包括:

权利: 使用:用户可以在个人或商业环境中自由使用开源软件,不受限制。 修改:用户可以根据自身需求对源代码进行修改或扩展,以实现个性化功能。 分发:在符合开源许可证条款的前提下,用户可以自由分享或再分发软件及其修改版。

义务: 许可证遵守:用户必须遵循开源许可证的规定,如在分发时保留版权声明或许可证原文。 源码公开(视许可证类型而定):某些开源许可证要求用户在修改并分发软件时公开源码,以遵守开源精神。

https://www.51cto.com/article/315611.html)