专门做外卖的网站,长春信息网招聘,电子商务网站开发平台,适合机械网站的wordpress主题模板我们在前三周的课程上#xff08;第一周、第二周、第三周#xff09;#xff0c;系统讲授了 FOSS 和 COSS 的课程内容#xff0c;第四周#xff0c;我们开始进入 OSPO#xff08;开源项目办公室#xff09;的部分。本导学班在调研全球开源教育与课程的基础上#xff0c… 我们在前三周的课程上第一周、第二周、第三周系统讲授了 FOSS 和 COSS 的课程内容第四周我们开始进入 OSPO开源项目办公室的部分。 本导学班在调研全球开源教育与课程的基础上通过收集、整理、理解、拓展国际最新的前沿开源课程采取众创的模式由 X-lab 核心开源研究的成员共同进行协作学习以最大效率的吸收国际前沿开源知识共创、共享、共进。本导学班以开源 FOSS 和开源 COSS 课程内容为基础结合自己的理解并进行适当拓展。 第四周的系列课程围绕以下七块内容进行开源介绍开源商业战略有效的开源项目办公室 (OSPO) 管理开源开发实践开源许可与合规了解上游开源项目创建开源项目 一、开源介绍关于什么开源与开源软件我们前面的课程已经讲过很多了这里再进行一些简单阐述。根据维基百科的定义开源软件 (OSS) 是一种计算机软件其中源代码是根据许可发布的版权所有者授予用户研究、更改和分发软件给任何人和出于任何目的的权利。开源软件可以以协作的公共方式开发。 开源软件的诞生源生于自由软件运动实用主义和理想主义是现代开源在公司业务和战略的关键组成部分。开源社区的构建可以追溯到计算机的早期植根于学术/企业/共享/黑客心态。几乎所有社区都具有以下几个主要特征去中心化、透明度和任人唯贤。社区往往表现出紧密的垂直层次结构和松散的水平结构如下图所示。虽然公司内部也可以运用这些“敏捷”原则但和企业不同的是开源项目呈现不同的组织结构模式 —— 不以职位论英雄异步沟通和决策透明。  企业使用开源可以提高速度、降低成本、提高可定制性、加速创新并形成差异化壁垒。因此本系列课程将重点介绍企业通过 OSPO 开源项目办公室更好的涉及开源。 二、开源商业战略有两种主流的围绕开源的商业模式——使用开源的公司大多数和主要生产开源的公司。也就是对开源的消费和生产。 先看消费。Gartner的研究表明一流的软件和技术组织使用的80%的软件来自开源基于这些开源组件构建剩余 20% 的附加组成构成产品。因为这样可以使企业把有限的精力和资源集中在差异化业务上同时与开源生态系统的其余部分分担通用代码的开发成本。 再看生产。对开源的生产通常分为以下几种类型许可  这种模式依赖于商业许可和开源许可下的双重许可软件通常会产生产品的“社区版”和“企业版”客户根据需要的功能来选择对应的产品。托管  公司在云托管的SaaS软件即服务中提供开源产品如 AWS 和 Google Cloud。支持  企业希望利用开源提供的技术创新但更关心在开源产品上运行业务。如 RedHat 和 IBM 等公司会提供支持、技术指导、专业服务和培训来帮助企业在开源平台上运行业务应用程序。OpenCore   一个功能强大的核心产品是免费和开源的。围绕这个核心商业实体提供闭源软件以增加或拓展其功能。也可以与支持模型结合来提供培训和技术支持。 作为一个公司制定实用的开源战略时要先想清楚三个问题公司希望在哪里使用开源使用开源实现了哪些业务目标公司如何确保谁先开源业务目标 典型的开源之旅有几个落脚点消费参与贡献领导。公司在开源中扮演不同角色时需要制定的战略也不相同如下图所阐述的如果某个开源项目是你公司的产品或技术需要用到的核心元素这时候对应的就需要去考虑成为积极参与者甚至去引领这个项目。另外需要注意的是公司在某一个开源组件中的参与程度会随着时间而改变需要定期典型周期为半年到一年审查开源策略根据业务或经济状况调整参与度。  三、有效的开源项目办公室 (OSPO) 管理开源项目办公室OSPO是一个是企业明确制定和执行开源战略的地方。它旨在成为公司开源运营和结构的中心支持、培育、贡献、解释和发展开源这可以包括设置代码使用、分发、选择、审计等以及培训开发人员、确保法律合规性和促进和建立社区参与。 OSPO的主要职责包括清楚地传达公司内外的开源战略监督战略的执行促进开源在商业产品和服务中的使用确保向开源社区高质量和频繁地贡献代码与开发者社区互动并有效地回馈项目在组织内培养开源文化维护开源许可证合规性审查和监督 当然也不是所有 OSPO 都需要具备以上全部功能这更多取决于公司的业务需求。从下图可以看出在与开发者协作以外OSPO 还需要支持非常多的非开发活动像公共关系协作开源法务合规制定策略与社区的交互和参与等。  建立一个有效的 OSPO需要先考虑从哪里开始可以是自上而下得到高层管理者的支持也可以是自下而上由一小部分开发人员和开源爱好者发起。无论如何开始一个合适的领导者至关重要这个角色需要对公司的业务了解深刻拥有商业敏锐度和管理技能并需要能够谈论深层技术。 下一步就是建立结构化的政策和流程同时保持一定的灵活性。 OSPO 的结构  OSPO应该在工程部门还是在法律部门、CTO 办公室或其他特定业务部门这同样取决于公司的主要业务和开源战略。这里有一些常见的位置供参考对于拥有大量知识产权组合的公司前期会选择在法律部门设置 OSPO 来解决合规问题工程驱动的公司通常选择在工程部门建立 OSPOreport to CTO 或 CIO有些公司选择营销组作为开发者关系/营销的一部分 OSPO 的人员  对应的OSPO 的角色由开源项目经理法律团队合规团队核心团队为开源审查委员会 - OSRB开发者关系、宣传和布道者组成还有一些其他工作角色如工具管理员培训经理工具和系统集成开发人员部署支持人员和实施项目负责人。OSPO 的流程  配备了角色之后下一步就是明确政策和流程。政策应该列出公司范围内使用开源的要求和规则并记录可执行的流程来确保规则得到了遵守。流程需要确保最少的开销并不断质疑和更新规则以简化程序。公司要准备好随着时间的推移业务的变化以及开源项目的成熟和发展修改规则和程序。 四、开源开发实践开源软件开发和传统软件开发中的 “Waterfall” 模型有很大不同。拿需求收集来举例开源开发中需求通常是来自用户或开发者的“功能请求”并且由于开发的迭代/敏捷性更强不存在长期的需求阶段。这种方法需要应对不断变化的需求并对项目运营所在的技术和业务环境做出快速响应。  成功的开源开发工作的一个标志就是能够根据可用的参与量有效地扩展项目可扩展的开发模型随着小型项目发展成中型到大型项目它们会执行更严格的发布周期增加维护者并对子系统进行进一步划分。可以参考世界上最成功的开源项目之一——Linux Kernel它有一个严格执行的发布级别和专门的维护集LTE分支。这种开发模型的一个关键要素是通过将不同项目子系统的责任委托给“维护者”来发挥作用“维护者”对子系统中的代码负有最终责任。这允许一定程度的专业化和监督使整个项目维护者能够专注于项目的更大战略和架构图。  公司参与开源时其实是要去和大型分布式开发团队进行协作而这种协作方式和公司内部严格的开发活动略有不用。没有两个社区是完全相同的社区也不适用于个别公司。所以一定要了解社区了解它是如何治理和沟通的然后去沟通、参与、回馈并计划好适当的退出策略。如果需要的话 内源   内源是指“使用开源软件开发最佳实践并在组织内建立类似开源的文化。该组织可能仍然开发闭源软件但在内部开放开发”。内源实施非常强调开源的文化部分除了简单采用开源开发实践以外在组织内部建立更开放和透明的文化才能发挥内源的全部好处。 五、开源许可与合规许可证是开源分发的关键概念。公司在使用开源项目时许可证合规是一个非常关键的避免风险的策略。开源许可证如下图展示的主要分为宽松许可证如 MIT、BSD 和互惠许可证如GPL、AGPL。公司必须了解自己使用到的开源组件涉及到哪些许可证并且在发布产品时履行许可证义务所以开源合规计划整体分为两块了解义务履行义务。 可能会触发许可证义务的场景是对一个开源组件的修改和分发。 下图是公司进行合规管理时的典型实践对于入站的开源组件可能是自己开发的软件第三方软件或专有软件首先需要识别他们识别之后对源代码进行审计得到审计报告审查小组对审计报告进行审查解决报告中的问题批准使用一旦某个开源组件被批准在产品中使用后需要被登记到产品清单中并在跟踪系统中注册准备一份声明Notice验证和分发提供随附的需要开源的源代码对应的版本  这个过程不可避免的需要依赖工具例如源代码扫描许可证扫描二进制包扫描集成工具组件管理工具等。这里有两个行业优质项目SPDX提供了标准交换数据格式的工具spdx文档的内容是标准格式的软件包、包级别、文件级别和版权信息等内容这种更加通用的格式可以帮助降低扫描合规性时的复杂度。OpenChain提供了一个规范和认证计划涉及源代码、构建脚本、许可证副本、归属通知、修改通知、SPDX 数据和其他管理软件可交付成果的开源许可证可能需要的材料的供应链交换。 公司在进行并购交易时通常需要进行审计对于特别是软件公司开源审计流程和传统审计有一定不同。进行开源审计是为了了解目标公司对开源软件的使用深度和依赖程度。同样输入是一些可能的开源组件输出是一份物料清单BoM包含完整的开源组件来源许可证以及声明。 审计可以分为传统审计和DIY审计传统审计是第三方审计公司的人员通过远程访问或现场访问源代码执行审计并给出审计报告DIY审计是收购方或目标公司自己运行扫描工具这种方式更加灵活但一般需要企业内部有经验丰富的员工能够解释扫描结果和提出修补建议。   六、了解上游开源项目上游作为名词是指衍生品所基于的原始开源软件项目上游作为动词是“将更改推送到上游项目”的简写方式即对源代码所做的更改贡献回原始项目。如果在供应链的背景下考虑上游它会是这样的为什么公司要对上游项目做贡献只消费而不回馈似乎看起来更容易但是贡献回上游可以让其他人知道所做的变更并且围绕变更进行规划同时降低自己的代码意外损坏的风险减少构建成品的工作量甚至有机会影响你所使用的开源项目的未来方向。 那么什么时候应该贡献上游当保持代码与上游项目同步的成本时间或金钱超过单独工作的便利性时当你希望其他人包括客户使用你的代码时当你希望你的代码成为事实上的标准或推动主线项目时如果你预计在即将推出的产品中重复依赖某个代码库来补充上游项目 上游开源项目使用的治理模型有多种因集权程度、组织实体的影响程度以及民主式决策机制和领导力选择而存在差异。没有一刀切的模型不同的项目可能适应于某种特定的模式。我们可以看几种例子公司主导的治理如Google AndroidRHEL仁慈的独裁者最典型为Linux内核理事会如FreeBSDDebian基金会/财团如Open StackKubernetesAcademy Software Foundation 与上游进行合作时我们一般采用“上游优先”的理念然后制定有效的贡献政策这些政策应该更多是帮助人们成功地为开源项目作出贡献特别是对于新贡献者。贡献政策还应预定义上游项目使用的已批准的开源许可证列表。 上游社区可能还需要其他类型的与代码无关的支持这时可以参考上述治理模型可以选择以公司会员的形式赞助项目或者负责该项目的基金会。这些资金可以帮助项目取得成功并且在某些情况下还能帮助公司本身更多地参与咨询角色或对项目产生一些影响。 七、创建开源项目公司要创建开源项目第一步需要了解这样做的价值主张是什么——有成千上万个开源项目你的代码是否提供差异化的价值还是能让一个成熟且成功的项目变得更好其次是衡量在开源中的投入不是简单的将代码扔出来却不考虑内部财务和工程投资。 下图列举了创建开源项目的适当理由和不好的理由   你需要为你的新项目做好准备确定相关的执行负责人适当的给他分配资金。还有很重要的一点是需要对员工进行培训不只局限于对宏观开源的培训还需要让工程师和产品经理意识到一些可能与他们日常构建产品或评估方式的不同之处。 下一步是对要开源的项目进行审查包括法律审查技术审查这两块我们在合规工程中讲过此外还有营销审查为项目品牌建立指导方针然后就是建立合适的治理模式和流程包括社区架构领导力基金会的选择等等。 项目成功启动之后需要持续的维护这就需要借鉴典型的成功的开源项目的运作模式了。你需要建立起一个社区维护多元化的贡献者群体这也意味着企业需要有更多资金投入以及内部开发者的投入这些投入可以依靠项目的重要性来决定。 一般来说可以聘请社区倡导者有时也称为社区经理来帮助新的开源项目取得成功这是个非常有挑战性的角色此外也不要忽视技术作家、项目经理甚至社会学、心理学等非传统研究领域的人。 以上就是第四周课程的总结。自此我们暑期为期一个月的开源软件通识基础课程到此结束希望能够和大家继续保持互动一起来聊开源。 我们接下来会进行短暂的休整与总结开始新一轮的迭代。从新学期 9 月份开始我们将继续推出新的一期开源通识课程目的性也会更加明确我们这里可以简单剧透一下。  为了保证课程质量与大家的专注度新一期的课程准备采取定向邀请的形式进行招生互联网企业、开源初创公司、开源基金会、高校、开源投资机构等规模预计 60 人左右。 根据目前的反馈来看开源运营的视角是大家需求最为迫切的地方我们也考虑从这个角度来切入小伙伴们不要错过有兴趣的可以给我们留言欢迎加入我们本文为  X-lab开放实验室  原创文章遵循CC-BY 4.0协议转载请附上原文出处链接及本声明。文中部分图片源自https://nythesis.com