开源项目办公室(Open Source Program Office)是阐明、支持、培育、共享和发展开源代码的特定场所。它可以帮助企业明晰地创建和执行开源项目的战略,成为保障领导、开发者、营销人员和其他员工成功运营开源项目的工具。
注:此处的“开源项目”,英文是“opensource program”,并非我们常理解的一个具体的开源软件的项目(project),而是指一系列的计划、流程组成的项目集。
如何建立开源项目办公室
对于大多数企业来说,建立开源项目办公室可从顶层管理或底层开发者开始。可以通过围绕法律问题和安全问题制定有关需求策略,进而引发企业领导者的关注。而一位具有前瞻性的CEO或CTO,可以推动企业开源发展,这种共识和行政支持对于推动开源项目办公室来说至关重要。
>>>>找到一位领导者
开源项目办公室的起步需要一位合适的领导者来帮助其发展并运营,最佳候选人应是一位对开源工作原理和现有开源项目中的开发者、贡献者或提交者技术都有详细了解的人。且其对企业内部业务有广泛了解,具备一定的商业敏锐度和管理技能。
>>>>明确办公室定位
开源项目办公室的建立需要解决预算、人员配置、技术工具和系统等关键问题。在人员配置上,尽可能采用全职员工负责相关工作,以保证开源项目办公室的有效实施和灵活性。
在规模上,办公室不宜过大或过小,办公室过大则有可能导致问题拖延或集中到办公室本身,过小则可能导致办公室建立不完善。一个定位明确的办公室应既能推动所需的政策、流程和工具的建立,也能在消除所发现的摩擦的同时保持稳定运作,它使用工具来自动化那些可精简的内容,并委派需要完成的任务。
开源项目办公室在保证流程化的同时,也应当保持灵活性。当开源用户需要帮助时,办公室应更像咨询公司,提供帮助和指导,我们的目标是建立正确的责任与业务平衡,以满足企业及其开源用户的需求。
>>>>广泛征求意见与反馈
建立开源项目办公室不应独立而行,因为其在业务中的核心作用,建立开源项目办公室需要企业内部各部门开诚公布的意见和反馈,确保从企业高层到开发者,每个人都拥有发言权,为建立办公室提供帮助。
开源项目办公室的相关角色
在建立开源项目办公室时,需确立相关角色和职责,一般来说,开源项目办公室包括以下角色:
>>>>项目经理
为了最大程度提高效率,企业应该授权让项目经理担任执行层的职位,使其可以直接监督和管理开源为企业带来的价值,以帮助企业更好地达成开源目标和愿景。
>>>>法务团队
与企业内的其他职能部门一样,法律团队必须对开源项目办公室的运营拥有发言权,确保符合法律、开源许可协议以及其他法律规定。具体到开源项目,法律团队需要负责确保企业可以在内部使用代码并以可接受的条款回馈项目。规模较大的组织机构应考虑聘请或培养专职律师来为其开源项目提供建议。但企业也可以聘用兼职、有相关知识能力的工作人员或外部顾问。
>>>>安全团队
安全团队的建立,主要负责确保企业开源安全漏洞风险的管理与评估工作,制定安全风险治理策略,配合开发进行安全工具选型与devops集成等。
>>>>合规团队
开源项目的合规团队是一个由多人组成的跨学科团队,其任务是确保开源项目的合规性。核心团队通常被称为开源审查委员会(OSRB),由工程和产品团队、一名或多名法律顾问以及合规高级职员(常常是开源项目经理)组成。
扩展团队由来自多个部门的不同人员组成,这些部门持续为合规工作做出贡献,包括文献资料、供应链、企业发展、IT、本地化、开源执行委员会(OSEC)等方面的贡献。然而,与核心团队不同,扩展团队的成员只根据他们从开源审查委员会(OSRB)收到的任务兼职开展合规工作。
>>>>运营团队
运营团队对于一个刚起步的开源项目办公室十分重要,因为他们可以在公司的开发者社区内为特定项目培养兴趣和热情,也可以帮助提升工程师的积极性并促进其团队合作。运营人员通常也可以参加会议和技术交流,讲解什么是开源,如何使用它以及未来的挑战和机遇,同时还能够与开源社区分享他们的企业经验。
>>>>其他
此外,还可以设置其他职位,包括培训人员、工具管理员、审核委员会等,以帮助开源项目办公室更好地发展。
办公室的流程和制度建立
在企业开源项目办公室的雏形已经完成时,下一步需要制定明确的政策和流程,实现企业开源战略实施的一致性。制度应该规定在整个企业内使用开源程序的要求和规则,并确保有文档记录和可执行程序。且随着时间推移和企业发展,公司必须及时改进和完善此类战略和流程。
在制定开源战略时,应考虑以下问题:
- 如何接受外部对开源项目的贡献
- 如何准备开源发布会
- 如何获批
- 开发人员如何使用他们在 GitHub 和其他代码库上找到的开源代码
- 如何将开源代码引入公司的程序和规则
- 如何将传入的代码编入目录以便其他人知晓它在被使用
- 如何在外部创建一个类似的开发者社区,保持开源的蓬勃发展
确定代码应何时以开源形式发布或保存为知识产权的规则其中,需要明确代码发布政策、贡献接受政策、开源应用促进政策、内部管理政策、合规政策,以保证企业更好地使用、发布和支持开源以及如何参与开源项目和社区。