X-lab2017 / oss101-bok

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

开源社区的管理(治理) #26

Open will-ww opened 1 month ago

will-ww commented 1 month ago

随着知识体系的增长和信息检索技术的发展,社会及其创造变得愈加复杂,在全球范围内进行创新和竞争不再仅靠一己之力,寻求合作开展项目也变得至关重要,开源正是在此基础上应运而生。开源社区作为资源集聚的平台,全球的开发者与使用者、合作伙伴在这里开展思想碰撞、技术建设、孵化项目、商业运作等活动。如果仅开放源代码,忽视开源社区管理,将引发众多不良后果(朱庆和李慧腾,2022)。目前中国第三代开源社区仍处于起步阶段,在开源社区管理等方面尚显稚嫩,本章节将重点介绍有关开源社区管理方面的内容。

树立合规管理意识

开源社区,无处不在。风险,也如影随形。开源社区已成为众多企业和软件项目的基础设施,但大多数的公司、企业和软件开发者对于开源社区的认识不足,甚至有人误以为“开源软件可以不受限制地随意使用,开源社区没有任何的风险”。实际上,开源社区的运营需要遵守相关的法律法规。开源软件的著作权既没有被放弃也没有过期,其修改和发行等仍然要受到版权法或开源软件许可证的制约。同时,开源社区中的开发者也要遵守社区的流程规范。

1、对法律法规的遵守

开源的内涵决定了开源代码任由所有人使用,但并不是可以不受限制地随意使用,因此开源法律风险一般指的是知识产权方面的风险。在中国的法律实践中,最常见的涉及开源的诉讼问题是软件著作权侵权案的被告以涉案软件使用了开源代码为由进行抗辩。中国的司法实践整体来看对基于开源软件进行二次开发的企业较为友好:企业如果以开源为由对其他企业二次开发的软件进行实质性引用,很有可能构成对软件著作权的侵犯需要对其中的法律风险加强关注。

2020年及之前,中国几乎没有出现过企业以开源软件作者身份起诉其他企业违规使用软件导致侵权的案例。2021年4月,深圳市中级人民法院对中国首例开源作者企业起诉被告违反开源协议的案件作出判决,认定被告对原告的软件著作权构成侵害,这一司法实践对于中国开源软件产业发展具a匜创徴卓焘跹餾購锩ё逃Ớ觌乗ọ空螬瘪搛垧碳縑電褚志痂意义。

我们先就此类问题的相关法律背景进行说明:一是软件“抄袭”导致的侵权在法律认定上可以做到,基本是通过软件源代码和其他文档的对比进行实质性相似的判定;二是包括GPL在内的通用开源协议具备法律认可的合同地位,具备法律效力;三是中国涉及开源软件权利的法律主要包括《中华人民共和国著作权法》(以下简称《著作权法》)、《中华人民共和国计算机软件保护条例》(以下简称《计算机软件保护条例》)等,针对软件的抄袭侵害的是软件作者的著作权。

目前,中国还不存在以开源软件为主题的法律,规制开源软件侵权行为的主要法律法规是《著作权法》及《计算机软件保护条例》:但作为一种协议,违反开源许可证的行为也可能触犯《中华人民共和国合同法》(以下简称《合同法》),在司法实践中的常见情况为原告依据《著作权法》起诉被告侵害软件著作权。所以在开源社区中,要引导开发者遵守相关的法律法规。

2、对开源许可证的遵守

开源软件的授权人将其享有的著作财产权和部分人格权授予用户,其目的是创设一种自由开发、使用或传播的环境。开源软件的修改、发行等虽然免费,但并非是无条件,而是需要遵守各种(绝大多数为美国)私人自由软件团体制定的规则,即许可证(license)。每个许可证都可以被看作是一份冗长的许可合同。现今,开源许可证已经成为国际行业内共同认可和遵守的契约文本。常见的许可证主要有GPL、LGPL、MPL,以及MITBSD、Apache,各个许可证还可能有不同的版本。这些许可证可分为两类著作权许可证(copyright license)及宽松许可证(permissivelicense)。二者最大的区别在于:在软件被修改并再发行时,著作权许可证仍强制要求公开源代码(衍生软件需要开源),而宽松许可证不要求公开源代码(生软件可以变为专有软件)。

GPL是典型的强著作权许可证,LGPL、MPL属于弱著作权许可证MIT、BSD、Apache都属于宽松许可证。由于开源软件的性质,这些许可证一般具有两个共同点:开发者不承担瑕疵担保责任以及保留著作权标瑕疵担保责任一般发生在有偿合同中,而开源软件及其衍生软件通常都是免费提供的,开发者并不负有瑕疵担保责任。另外,由于开源软件的著作权没有被放弃,许可证中一般都需要以适当的形式保留源代码中的著作权标记。未按照开源许可证约定使用开源软件会引发潜在的法律纠纷或者带来名誉损失。

中国法律认为:开源协议属于公开可自由取得的文件,著作权人在公开源代码时明确声明并附加 CPL等开源协议的行为可被视为要约,不特定主体复制、运行、修改、传播附有开源协议的源代码的行为应为承诺,承诺作出即产生法律效力,合同成立认可开源协议的法律效力。因此,在开源社区中应加强对开源许可证的遵守,只有信守开源软件所附的许可证条款,才能保证将开源软件不断散播出去,让社会公众能够享有开源软件带来的便利与发展成果,不至于被私人占有导致公共利益受到损害。

3、对社区流程规范的遵守

为保证开源社区领导力的健康发展,促使社区成员明确相关制度的存在并依照制度规定执行,开源社区应当具有清晰的社区流程规范,包括社区决策制度、投票机制、审批制度、反馈机制、辅导机制、发布机制等@在此基础上,社区内的成员应当了解社区内部流程规范,严格遵守与软件开发相关的安全流程和程序,这不仅是对社区文化的尊重与赞同,更能在社区管理中起到关键性的作用,从而使得社区管理更加安全可靠。

优化社区组织架构

任何一个组织都需要一个明确的组织架构,开源社区也不例外,要想实现高效运营,就需要根据市场环境时刻调整、优化社区的组织架构,各岗位各司其职,实现有序运转,促进社区目标按时完成。通常来讲,社区建设与运营工作可大致分为三类:对社区成员、社区资产、日常事务的管理;对项目评估、开发、商务交付的管理;对社区信息安全、风险防范、通用许可权限的管理。

其中对社区成员、社区资产、日常事务的管理具体包含了对订阅用户、社区活跃用户、会员用户、贡献者、基金会成员、领域专家、代码托管平台、许可证、开发工具、CLA 签署工具、测试平台的管理;对项目评估、开发、商务交付的管理具体包含了对商机评审、源代码代码审查、需求评估、开发方案制定、开发过程管控、开发工具使用方案等的管理;对社区信息安全、风险防范、通用许可权限的管理具体包含了对法律合规审查、开源协议遵守、开源许可期限、开源范围审定等方面的管理。

在开源社区管理中,对于风险防范的管控十分重要,这是关乎社区能否发展的第一步,正如软件行业的通用准则“没有安全就没有一切”一样。其重要意义不言而喻,开源社区应当了解社区围绕或支持给定项目的活跃程度,在代码审查上,应当负责审核代码的质量和安全性、pullrequest评审、更新维护版本;在法律合规审查方面,开源社区应当明确指定FLOSS许可证并保持许可证能够及时得到更新,项目网站应当支持HTTPS或HTTP通信协议;在信息安全管理上,应当接收、调查和披露社区相关的安全漏洞,了解与给定项目的使用相关的潜在知识产权问题。合理分配好开源组织架构的分工,为开源社区治理搭建起一个良好的主体框架,推动社区后续健康可持续性发展。如下是外国社区通常采用的组织架构体系。

联合人工智能技术推动者(FederatedAITechnologyEnabler,FATE)开源社区是面向隐私计算、联邦学习开源生态中的开发者、贡献者、用户及生态伙伴建立的学习与交流平台,是全球首个隐私计算、联邦学习开源社区,拥有全球首个工业级可信联邦学习框架。社区以“开源开放,共力创新”为愿景,不断汇集更多创新力量,现有超过3000位来自近千家企业及科研机构的开发者参与社区生态共建Ф。FATE开源社区基本组织架构由三个委员会组成,分别是开发委员会、运营委员会、安全委员会,并确定了各委员会职责及初始成员,未来将在社区愿景指引下,协同开发者贡献者、用户及生态伙伴共享共建,共同打造一个开放团结、活跃创新的隐私计算联邦学习开源生态圈。

结合国内外社区职能设置和运营经验来看,三大职能内容可以总结如下。

1、开发管理机构

开发管理机构是社区的技术开发机构,推动各版本的稳定、高质量更新及持续技术创新。开发专委会的主要职责如下:

3、安全管理机构

安全管理机构负责社区技术安全监督、开源合规管理,协同多方资源为社区生态安全保驾护航。主要职责包括以下几方面。

制定动态评价指标

开源社区通过用户反馈反哺产品迭代、完善技术文档等,打造更加坚实的产品价值。相较于闭源模式的闷头开发与摸索,开源开发模式最大的优势就在于群众的力量能够帮助技术产品更好更快地试错迭代,快速验证产品市场适应性(Product MarketFit,PMF)。同时,在丰富性上也有更好的保障;通过内容传播和活动运营盘活社区,给企业带来第一批种子用户,为后续的产品推广、品牌传播打下良好的用户基础。一个健康活跃的社区,基本可以实现自运营,因为社区成员有着共同的理念和目标,大家会自觉维护社区良好的运营环境。通过挖掘商机线索,完成技术产品的市场教育,促成意向客户的合作。关于开源和商业的矛盾之争一直存在,但开源不是没有收入利润。以上都说明,要想最大程度发挥全体社区成员的效能,就必须设置一个合理的社区规划远景目标和社区运营评价指标,一社区价值观和运营发展方向。通过对国内外多家优秀开源社区的价值评价指标来看,首先社区规模、社区活跃度、社区健康度是管理者更为看重的因素;其次是社区某一时期的商机数量和客户交易金额。另外,为了社区能够快速发展,管理者应该在社区成长的不同阶段设置不同的评价指标。

1、用户活跃度

据 CitHub 2021年度报告显示,目前 GitHub 用户数已超 7300万人,他们平均每天更新8万行代码并新建7000个软件库。对GitHub网站上托管的总计超过300万个软件库,其联合创始人克里斯·万斯特拉斯(ChrisWanstrath)曾经形象地称其为“程序员的维基百科全书”。这是一个卓有成就的社区的活跃度情况,是所有初创社区的期望目标之一。 一个社区如果刚成立或者刚刚孵化出一个产品的初级版本,社区的管理者应该更多地关注产品的可用性,而不是商业价值。对于这个阶段的社区来讲,尽快得到用户的体验反馈最重要,包括活跃开发者的测试反馈,从而帮助技术团队更好地修补缺陷、迭代产品。社区的价值在于让用户和开发者感受到自己的需求和问题是被快速响应的,从而愿意在社区提出自己的问题甚至是解决方案。相反,如果社区一味追求用户规模及产品商业化深度,势必造成大量用户涌人却没有足够强大的产品进行支撑,得不到及时回应的用户和开发者会因为存在感低、初级版本的产品体验差而放弃关注社区活动、进而影响了社区名声和产品口碑,导致社区运营停滞。所以,社区的活跃度是当前时期最重要也是最主要的考核评价指标,对社区的评价和对社区成员的考核都应该向此靠拢。 活跃度是一个定量指标,必须有一组明确的数据来确定,需要往下拆解到更加具体的可以被观测的行动数据,例如,每周提问次数、为社群其他成员答疑、参加官方活动、提交issue 和问题等动作。对开发者不同动作的投入成本进行分数化,例如,提一个小问题得1分,为他人答疑得3分提一个建设性的方案得20分,点赞数超过社区成员半数的再得20分。-个社区在某一时期的活跃度可以定义为这一时期所有开发者、参与者得分平均数,由此可以区分出该社区不同时期活跃度强弱。管理者可以参照其波动情况进而做有效调度,提前发起课题,激发大家探讨的欲望,提升社区活跃度。

2、用户规模与反馈

社区应在运营过程中寻找潜在的行业用户,通过在生产环境下获得反馈、优势场景研究和输出,最终产出用户最佳实践并进行广泛传播。同时,社区也需要持续提升产品的易用性,例如,给用户提供好用的操作流程与API,产品可以持续稳定升级等方法,这样既降低了社区产品的使用门槛,又可以吸引更多的使用者去使用体验。社区的运营需要得到及时的反馈,通过反馈来改良社区自身的运营方式,促进社区不断进步,而用户的反馈则是社区运营最好的激励方式,注重这一环节,势必可以让社区健康向上发展。

待产品版本经过一系列的迭代升级、故障修复、多次测试通过之后就基本具备了商业化上线条件,技术文档和产品操作说明书也逐步完善这个时候就由产品转化成了商品,同时,社区的评价指标也就转向了社区用户规模。通过大量的市场宣传和跨社区技术交流活动广而告之,使自己的社区产品先有存在感,继而打造产品性能和口碑。

在设置用户规模指标时,尽量分步实施,把远景目标切换成每一年度甚至每一季度的阶段指标。比如,刚成立的机脑算法社区,计划吸引相关领域开发者2万人,则需要分步实施,制定每季度吸引人数或者每次活动吸引人数,然后有针对性地制定宣传引流方案。

在吸引用户的同时,在产品上持续主动提升用户体验,将用户的反馈作为社区发展的重要生产力来看待,通过积极引导,逐步将用户身份转变成社区的贡献者。社区整合用户反馈能力的具体实施步骤:

3、有效孵化商机数量 开源社区通过商业模式的创新,形成社区产品和市场商业化产品的良性互动,推动软件商品化,提升了软件的商业价值;社区通过与传统商业模式融合而蕴含的潜在商业价值逐渐显露,随着开源社区的成熟度越来越高,其商业价值也将越来越明显。当社区的上述两个评价指标达到一定规模时,其产品乃至整个项目的商业化评价指标就开始变得重要,无论是哪种类型的开源社区,只有在商业化进程中稳健发展,才能够在行业内逐渐掌握话语权。这个阶段的社区评价指标也将随即变成商机线索的摸排数量、评估后有效商机数量和能够商业化项目的数量。