软件基础技术构建 3_第1页
软件基础技术构建 3_第2页
软件基础技术构建 3_第3页
软件基础技术构建 3_第4页
软件基础技术构建 3_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

开源软件构建技术——开源社区治理与运营《开源软件构建技术:理论与实践》1本章学习目标2理解开源治理的核心概念与框架掌握开源社区中的角色与运作机制学会评估社区健康度与合规性通过案例学习实际治理策略引导问题:“如果没有社区,开源项目能走多远?”1“你知道你的代码里有什么吗?”3Synopsys发布的《2024年开源安全和风险分析(OSSRA)报告》深入研究了商业软件中开源安全、合规性、许可和代码质量风险的当前状态。1什么是开源治理?4开源治理是一套系统化的管理框架,通过领导关系(明确角色与决策机制)、组织结构(分层社区与多样化治理模型)和流程管理(规范贡献、发布与冲突解决)三大核心要素,确保开源项目与战略目标一致并有效管控风险。1)角色与责任:明确项目维护者、贡献者、审查者等角色的职责;2)决策机制:建立透明的决策流程,确保决策公正。1)社区结构:明确核心团队、贡献者和用户的层级关系。2)治理模型:社区在管理、决策和协作过程中采用的规则和机制1)贡献流程:规范代码提交、审查和合并;2)发布管理:制定版本发布计划与流程;3)冲突解决:建立有效的争议解决机制。1开源治理的客体与执行角色5治理客体(管什么):项目、社区、技术执行角色(谁来做):开发者、企业、基金会、用户1开源治理的客体与执行角色6开源治理的客体与执行角色通过规则、流程和机制实现高效互动,如通过开源许可证和贡献者协议明确各方权利与义务,通过代码审查和版本发布流程确保项目高效运作,通过选举和决策机制促进社区公平参与。在一个使用Apache许可证的开源项目中,其下游Fork的企业不仅没有回馈上游开源项目,反而将衍生的代码更改为不受OSI认可的SSPLLicence,另行宣布成为一个新的开源项目,误导了很多不明真相的人,以为又涌现出一个新的开源项目。但该行为其实已经对原开源项目的合法权益造成了侵害,也有悖开源精神。开源许可证(OpenSourceLicense)对软件的使用、复制、修改和再发布等进行限制。许可证即授权条款,开源许可证就是保证开源软件这些限制的法律文件,目的在于规范受著作权保护的软件的使用或者分发行为。1开源治理的客体与执行角色7开源治理的客体与执行角色通过规则、流程和机制实现高效互动,如通过开源许可证和贡献者协议明确各方权利与义务,通过代码审查和版本发布流程确保项目高效运作,通过选举和决策机制促进社区公平参与。2015年,LLVM社区发起了对代码进行重新授权的提案,希望能从现有的NCSA许可证更改为Apache2.0License。六年过去了,这项工作还在进行中。LLVM社区正在追踪一些过去的贡献者,以收集他们对协议变更的认可。目前有94%以上的旧代码获得重新许可的批准,预计2023年可以接近100%,届时就可以合法地变更许可证。ContributorLicenseAgreement是一个轻量级的许可协议,签署人是代码(包含文档等其它内容)和专利的拥有者(或是被授权贡献),授权这些贡献在项目的开源许可证下进行再分发。1开源治理的客体与执行角色8根据LFXInsights数据,NumPy项目在过去一年中表现出较高的治理有效性。尽管代码提交数量较上一周期下降

47.5%,但项目全年活跃天数达364天,仅减少

0.5%。问题解决方面,共关闭742个Issues,平均解决时间仅

13天。PullRequests(PRs)总数为4,347个,平均合并时间4天。此外,48%的贡献发生在非工作时间,显示出社区成员的积极参与。治理的有效性可通过项目活跃度、社区参与度和技术采用率等指标衡量2开源社区的演变9开源社区是一个以开放、协作和共享为核心,围绕开源项目形成的自组织网络社群。开源社区的演变是一个长期且动态的过程,随着技术进步和时代变迁,其形态和内涵不断丰富和发展。2开源社区的演变10开源社区是一个以开放、协作和共享为核心,围绕开源项目形成的自组织网络社群。开源社区的演变是一个长期且动态的过程,随着技术进步和时代变迁,其形态和内涵不断丰富和发展。1978年,《C程序设计语言》出版。C语言脱胎于Unix操作系统,由贝尔实验室的丹尼斯·里奇和肯·汤普森在

1972年到1973

年之间设计与实现。两人都没有明确表态,但一直践行着自由软件精神。1983年Unix最新版SystemV开始闭源。麻省理工学院人工智能实验室的程序员RichardStallman在1983年着手开发流行的Unix操作系统的免费替代品GNU(Gnu'sNotUnix)的操作系统。GNU是自由软件概念起源的项目。GNUCompilerCollection(GCC)是GNU生产的优化编译器,支持各种编程语言、硬件体系结构和操作系统。

它在1987年被首次发布。2开源社区的演变11开源社区是一个以开放、协作和共享为核心,围绕开源项目形成的自组织网络社群。开源社区的演变是一个长期且动态的过程,随着技术进步和时代变迁,其形态和内涵不断丰富和发展。OpenSoftwareFoundation(OSF)是一个非营利性行业联盟,旨在为操作系统Unix的实施创建开放标准。成立于1988年。标准的讨论引发了Unix战争(UnixWar)。1991年,LinusTorvalds设计并发布了Linux内核到几个Usenet新闻组。几乎立即,爱好者们开始开发和改进它。1992年2月,Linux成为自由软件。也成为当今操作系统的一哥。FreeBSD是1993年发布的开源Unix操作系统。2005年,它成为最流行的开源BSD操作系统。IanMurdock于1993年8月16日发起Debian项目,并由社区在9月15日发布了第一个版本。DebianGNU/LinuxStable分支是最流行的个人计算机版本和服务器。Ubuntu就是从这个Debian基础上开发的。2开源社区的演变12Linux基金会(LF)是成立于2000年的一个非营利性技术联盟,是开源开发实验室和自由标准组织的合并,旨在标准化Linux、支持其发展。欧洲自由软件基金会(FSFE)是2001年在德国成立的一个非营利组织。旨在支持欧洲自由软件运动的各个方面,在多个欧洲国家设有注册分会开源社区是一个以开放、协作和共享为核心,围绕开源项目形成的自组织网络社群。开源社区的演变是一个长期且动态的过程,随着技术进步和时代变迁,其形态和内涵不断丰富和发展。2007年底,由谷歌牵头,84家公司组成的开放手机联盟(OHA),旨在为移动设备开发开放标准。Apache软件基金会(ASF)是1999年3月25日成立的一家美国非营利性组织,以支持多个开源软件项目。Apache是一个分散的开源开发人员社区。生产的软件遵守Apache许可证。2开源社区的演变13Apache开源基金会管理着超过350个顶级项目,这些项目涵盖了从Web服务器到大数据处理等多个领域。2开源社区的演变14公开开源模式(基金会)商业开源模式比较角度Linux模式Apache模式Openstack模式Android模式Webkit模式异同载体LinuxFdApacheFdOpenstackFdAOSPWOSP源代码开放程度完全完全完全延迟差异不同开源模式开源产权模式√√√√√具备开源生产模式√√√××不同开源商业模式××√√×不同开源模式要素所有权角度GPLApacheApacheApacheLGPL/BSD商业性生产角度社区社区社区半封闭半封闭封闭交换角度非盈利性非盈利性服务盈利相关盈利整机盈利盈利性运行特征技术发起者学术界学术+商业商业公司商业公司

商业性更新速度很慢慢慢反应快快加快生态控制力弱弱弱强强加强版本化多多多较多几类集中性质开源开源开源有限开源并行递减例子ApacheMozilla类似Cloudstack等ChromiumDarwin开放封闭2开源社区的演变15开源社区是一个以开放、协作和共享为核心,围绕开源项目形成的自组织网络社群。开源社区的演变是一个长期且动态的过程,随着技术进步和时代变迁,其形态和内涵不断丰富和发展。自组织性:开源社区没有中央集权的领导结构,成员基于共同目标和原则自愿参与,形成自组织的协作模式。分布式贡献:社区成员可以来自全球各地,通过互联网和开放平台进行分布式的贡献与协作。共享文化:开源社区倡导知识、经验和成果的共享,鼓励成员相互学习与进步。透明度:开源社区以开放透明为原则,代码、设计和讨论通常公开可见,促进信任与合作。合作与协作:成员通过合作共同推进项目发展,开发者之间相互评审和改进,形成良性循环。价值观共识:社区成员共享开放、自由、互助等核心价值观,这些价值观构成了开源文化的基石。开源社区的特点3开源社区中的关键角色163开源社区中的关键角色17XZ-Utils是Linux、Unix等POSIX兼容系统中广泛用于处理.xz文件的套件,已集成在Debian、Ubuntu、CentOS等发行版仓库中。2024年3月30日凌晨墨菲安全实验室监测发现,微软工程师AndresFreund在排查sshd服务异常时发现xz-utils的上游tar包被投毒。攻击者即使没有有效账号,也可以通过SSHD(一个负责SSH连接工作的关键二进制文件)访问系统了。2021年10月,植入后门漏洞的开发者JiaT75开始参与XZ-Utils项目的开发,在近三年的时间里,JiaTan一直为XZ项目贡献高质量代码,最终才获得了该项目的提交访问权和维护权,逐渐取得信任,并于2023年接管了项目维护权限,其在2024年2月向liblzma/xz提交恶意文件,引入了一个允许攻击者未授权访问SSH的隐蔽后门,同时联系Linux发行版维护者,要求将带后门的库打包并分发给最终用户,3月29日开发人员AndresFreund在分析SSH性能故障时,发现了该供应链攻击活动。目前GitHub已经关停了整个XZ-Utils项目。4开源项目管理委员会(PMC)18开源项目管理委员会(ProjectManagementCommittee,PMC)是开源社区中的核心治理组织,负责项目的战略规划、技术决策、社区管理和资源分配等工作。PMC的成员通常是项目的长期贡献者,他们在技术、社区管理和战略决策方面发挥着关键作用。PMC提供治理框架和资源支持,确保项目的可持续发展;开源社区成员关键角色在PMC的支持下贡献代码、修复问题、报告漏洞或使用软件,共同推动项目的成功。4开源项目管理委员会(PMC)19开源项目管理委员会(ProjectManagementCommittee,PMC)是开源社区中的核心治理组织,负责项目的战略规划、技术决策、社区管理和资源分配等工作。PMC的成员通常是项目的长期贡献者,他们在技术、社区管理和战略决策方面发挥着关键作用。Apache作为世界最大的开源基金会,拥有676个不同的开源项目社区,每个社区都有各自的PMC来负责其顶级项目的责任和治理。5开源社区治理框架20开源社区治理框架

=开源治理模型

+开源治理原则

+实施基础架构6开源社区治理框架实施-社区参与21社区需要提供清晰的贡献指南、文档和开源导师计划,帮助新人快速融入社区。建立积极、友好的社区文化,制定行为准则(CodeofConduct)以规范成员行为,解决冲突LFXMentorshipProgram是由LinuxFoundation组织发起的一个开源社区导师计划,旨在帮助开发者,特别是首次开源贡献者,学习、实验并有效地为开源社区做出贡献。6开源社区治理框架实施-开源贡献22开源贡献:制定清晰的贡献流程,包括如何提交问题、如何提交代码、如何进行代码审查等。鼓励非代码贡献,如文档编写、测试、翻译等。6开源社区治理框架实施-开源合规性23开源合规性:为项目选择合适的开源许可证(如MIT、Apache2.0、GPL),并明确许可证的权利和义务。保护项目的知识产权,避免侵权风险。大类子类要求Apache社区Linux社区可借鉴点来源可信三方开源软件项目如有引入第三方开源软件,需确保各软件来源可信ApacheSoftwareFoundation3rdPartyLicensePolicyLinuxkernellicensingrules提供第三方软件引入指导,包括选型要求。代码贡献项目所有文件的版权来源都有明确的定义和记录,并明确标识哪些代码是自研,哪些是外部贡献。Committer都签署CLA协议。IntellectualpropertyclearanceASFCONTRIBUTORAGREEMENTSContributorCovenantCodeofConduct提供知识产权扫描工具明确知识产权清理政策许可证遵从三方开源软件许可证兼容项目使用的三方软件必须是开源软件,可公开获得,许可证为OSI批准的,且其许可证不会比本项目许可证添加更多的限制ApacheSoftwareFoundation3rdPartyLicensePolicyLinuxkernellicensingrules提供第三方软件引入指导,包括许可兼容性要求。三方开源软件证义务履行项目使用第三方开源软件必须严格履行其许可证的义务。ApacheSoftwareFoundation3rdPartyLicensePolicyLinuxkernellicensingrules提供第三方软件引入指导,包括义务履行的要求。提供义务履行工具项目许可证项目在根目录提供LICENSE、NOTICE文件,项目的所有源码必须包含许可头。ASFReleasePolicySourceHeaderandCopyrightNoticePolicyApacheRat

™许可扫描工具LicenseidentifiersMODULE_LICENSE许可证规范;提供许可扫描工具主流社区的合规体系:规范+流程+工具+专家审核6开源社区治理框架实施-开源合规性24开源合规性:为项目选择合适的开源许可证(如MIT、Apache2.0、GPL),并明确许可证的权利和义务。保护项目的知识产权,避免侵权风险。大类子类要求Apache社区Linux社区可借鉴点知识产权合规版权项目的所有源码必须包含版权声明。SourceHeaderandCopyrightNoticePolicyLicenseidentifiersMODULE_LICENSE版权规范;提供版权头扫描工具专利项目代码包中不得包含未经授权专利。IntellectualpropertyclearanceTerms明确知识产权清理政策提供敏感词扫描工具商标项目名称应及时申请商标保护,未经授权不得使用第三方商标,避免商标风险。TrademarkandLogoUsageGuidelinesTrademarkusage明确知识产权清理政策提供敏感词扫描工具版本发布合规贸易合规需确认加密源代码是否由ECCN5D002控制并提供BIS和ENC报备信息。HandlingCryptographywithinanASFReleaseExport提供贸易合规指导发布包许可证项目发布的版本包含LICENSE/NOTICE文件,并确保内容完备、准确,若包含第三方开源软件必须严格履行其许可证的义务。ASFReleasePolicyReleaseCreationProcessReleaseChecklistApacheTentacles

发布包扫描工具LicenseidentifiersMODULE_LICENSEFossology

许可证扫描工具社区版本发布合规指导提供发布包许可证扫描工具7开源社区运营25在开源社区运营中,规划贡献者的成长路线是吸引和留住贡献者的关键。通过设计清晰的成长路径,社区可以激励贡献者从爱好者、使用者逐步成长为贡献者、提交者,最终成为领导者。7开源社区运营26开源导师计划的主要目标是降低新人的参与门槛,帮助他们理解项目的技术架构、贡献流程和社区文化,从而降低参与难度。国内开源社区已经涌现出诸多开源导师计划的成功案例:开源之夏(OpenSourceProjectProgram,简称OSPP)是由中国开源软件推进联盟支持,开源之夏组委会发起的一项面向高校学生的开源项目暑期活动。开源之夏的部分参与社区27开源社区健康度量是指通过一系列指标和数据分析,评估开源社区的活跃度、多样性、可持续性和整体健康状况的过程。这些度量指标帮助社区管理者了解社区的当前状态,识别潜在问题,并制定改进策略。度量指标指标说明贡献者活跃度贡献者数量、提交频率、问题解决速度、代码审查参与度。作用是衡量社区的活跃程度和贡献者的参与深度社区多样性贡献者的地域分布、性别比例、背景多样性。作用是评估社区的包容性和多样性,确保不同群体都能参与。代码质量与项目进展代码提交量、测试覆盖率、问题关闭率、版本发布频率。作用是衡量项目的技术质量和开发效率。社区满意度贡献者反馈、社区调查结果、行为准则遵守情况。作用是了解社区成员对社区文化、沟通效率和治理透明度的满意度。项目影响力项目下载量、外部引用次数、用户数量、媒体报道。作用是评估项目在行业中的影响力和认可度。新人参与与留存率新人贡献者数量、新人留存率、新手任务完成率。作用是衡量社区对新人的吸引力和支持效果。贡献者影响力利用网络分析和复杂网络的概念,如OpenRank算法(/docs/user_docs/metrics/openrank/),通过开源社区中贡献者之间的互动、协作关系,来衡量其影响力。作用是衡量评价贡献者的协作影响力及社区参与程度。7开源社区运营28开源社区健康度量是指通过一系列指标和数据分析,评估开源社区的活跃度、多样性、可持续性和整体健康状况的过程。这些度量指标帮助社区管理者了解社区的当前状态,识别潜在问题,并制定改进策略。7开源社区运营29开源社区健康度量是指通过一系列指标和数据分析,评估开源社区的活跃度、多样性、可持续性和整体健康状况的过程。这些度量指标帮助社区管理者了解社区的当前状态,识别潜在问题,并制定改进策略。7开源社区运营开发者活跃仓库网络图项目关系网络图项目活跃度&OpenRank趋势图注:上图为HyperCRX应用提供的开源生态的可观测性数据9开源社区运营30HyperCRX(/hypertrons/hypertrons-crx):强大的开源浏览器插件。如上一页图所示,通过嵌入可视化看板,帮助用户追踪、挖掘和分析感兴趣的项目及开发者,为开源社区的数字化运营提供高效的数据支持,致力于提升开源生态的可观测性。OpenLeaderboard(/):一得之见,开源世界。一款基于GitHub数据的企业、项目和开发者活跃度与影响力排名工具,涵盖中国及全球开源生态的多维度排行榜单。OpenGalaxy(/):开源全景星系项目。一款基于GitHub协作数据的开源社交网络可视化工具,通过星系图谱展现开发者与项目的互动关系,帮助用户定位自身在开源世界中的角色、历史轨迹及未来方向。开放原子全球协作大屏(/):一款展现全球开源生态大协作的可视化大屏,其中包括了全球开源生态全景图、世界各国开发者排行榜、中国地区开发者排行榜、中国开源项目排行榜、全球开源企业排行榜、中国开源企业排行榜以及个人开源开发者排行榜等多项功能。为开源社区的数字化运营提供高效的数据支持的工具:10OpenHarmony社区治理案例31OpenHarmony是由华为捐赠给开放原子开源基金会孵化和运营的开源项目,致力于构建一个面向全场景的智能终端操作系统。它采用组件化架构,支持从手机、POS机、警务通到智能电表、工业PDA和手写笔等多种设备,充分发挥“大终端”优势,满足多样化场景需求。10OpenHarmony社区治理案例32OpenHarmony开源项目管理委员会(PMC)是社区的核心治理机构,负责把控项目的技术方向和主线架构。10OpenHarmony社区治理案例33OpenHarmony开源项目管理委员会(PMC)是社区的核心治理机构,负责把控项目的技术方向和主线架构。架构SIG质量SIG合规SIG兼容性SIG程序分析SIG测试SIG规划SIG版本发布SIG资料SIG基础软件SIG应用框架SIG数据管理SIG驱动框架SIG分布式硬件SIG编译运行时SIG图形SIG安全SIG电话服务SIGSIG开发阵地60

个SIG

Commiter493贡献者8,267......10OpenHarmony社区治理案例34PMC下设多个SIG组(特别兴趣小组),每个SIG组负责特定领域的技术方向和代码交付。程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论