文末有彩蛋 | 第四周课程回顾与总结

我们在前三周的课程上(第一周、第二周、第三周),系统讲授了 FOSS 和 COSS 的课程内容,第四周,我们开始进入 OSPO(开源项目办公室)的部分。

 

本导学班在调研全球开源教育与课程的基础上,通过收集、整理、理解、拓展国际最新的前沿开源课程,采取众创的模式,由 X-lab 核心开源研究的成员共同进行协作学习,以最大效率的吸收国际前沿开源知识,共创、共享、共进。本导学班,以开源 FOSS 和开源 COSS 课程内容为基础,结合自己的理解,并进行适当拓展。

 

第四周的系列课程围绕以下七块内容进行:

  1. 开源介绍

  2. 开源商业战略

  3. 有效的开源项目办公室 (OSPO) 管理

  4. 开源开发实践

  5. 开源许可与合规

  6. 了解上游开源项目

  7. 创建开源项目

 

一、开源介绍

关于什么开源与开源软件,我们前面的课程已经讲过很多了,这里再进行一些简单阐述。根据维基百科的定义,开源软件 (OSS) 是一种计算机软件,其中源代码是根据许可发布的,版权所有者授予用户研究、更改和分发软件给任何人和出于任何目的的权利。开源软件可以以协作的公共方式开发。

 

开源软件的诞生源生于自由软件运动,实用主义和理想主义是现代开源在公司业务和战略的关键组成部分。开源社区的构建可以追溯到计算机的早期,植根于学术/企业/共享/黑客心态。几乎所有社区都具有以下几个主要特征:去中心化、透明度和任人唯贤。社区往往表现出紧密的垂直层次结构和松散的水平结构,如下图所示。虽然公司内部也可以运用这些“敏捷”原则,但和企业不同的是,开源项目呈现不同的组织结构模式 —— 不以职位论英雄,异步沟通和决策透明。

 

 

企业使用开源可以提高速度、降低成本、提高可定制性、加速创新并形成差异化壁垒。因此本系列课程将重点介绍企业通过 OSPO (开源项目办公室)更好的涉及开源。

 

二、开源商业战略

有两种主流的围绕开源的商业模式——使用开源的公司(大多数),和主要生产开源的公司。也就是对开源的消费生产

 

先看消费。Gartner的研究表明,一流的软件和技术组织使用的80%的软件来自开源,基于这些开源组件构建剩余 20% 的附加组成构成产品。因为这样可以使企业把有限的精力和资源集中在差异化业务上,同时与开源生态系统的其余部分分担通用代码的开发成本。

 

再看生产。对开源的生产通常分为以下几种类型:

许可  这种模式依赖于商业许可和开源许可下的双重许可软件,通常会产生产品的“社区版”和“企业版”,客户根据需要的功能来选择对应的产品。

托管  公司在云托管的SaaS(软件即服务)中提供开源产品,如 AWS 和 Google Cloud。

支持  企业希望利用开源提供的技术创新,但更关心在开源产品上运行业务。如 RedHat 和 IBM 等公司会提供支持、技术指导、专业服务和培训,来帮助企业在开源平台上运行业务应用程序。

OpenCore   一个功能强大的核心产品是免费和开源的。围绕这个核心,商业实体提供闭源软件以增加或拓展其功能。也可以与支持模型结合来提供培训和技术支持。

 

作为一个公司,制定实用的开源战略时,要先想清楚三个问题:

  • 公司希望在哪里使用开源?

  • 使用开源实现了哪些业务目标?

  • 公司如何确保谁先开源业务目标?

 

典型的开源之旅有几个落脚点:消费,参与,贡献,领导。公司在开源中扮演不同角色时,需要制定的战略也不相同,如下图所阐述的,如果某个开源项目是你公司的产品或技术需要用到的核心元素,这时候对应的就需要去考虑成为积极参与者,甚至去引领这个项目。另外需要注意的是,公司在某一个开源组件中的参与程度会随着时间而改变,需要定期(典型周期为半年到一年)审查开源策略,根据业务或经济状况调整参与度。

 

 

三、有效的开源项目办公室 (OSPO) 管理

开源项目办公室(OSPO)是一个是企业明确制定和执行开源战略的地方。它旨在成为公司开源运营和结构的中心,支持、培育、贡献、解释和发展开源,这可以包括设置代码使用、分发、选择、审计等,以及培训开发人员、确保法律合规性和促进和建立社区参与。

 

OSPO的主要职责包括:

  • 清楚地传达公司内外的开源战略

  • 监督战略的执行

  • 促进开源在商业产品和服务中的使用

  • 确保向开源社区高质量和频繁地贡献代码

  • 与开发者社区互动并有效地回馈项目

  • 在组织内培养开源文化

  • 维护开源许可证合规性审查和监督

 

当然也不是所有 OSPO 都需要具备以上全部功能,这更多取决于公司的业务需求。从下图可以看出,在与开发者协作以外,OSPO 还需要支持非常多的非开发活动,像公共关系协作,开源法务合规,制定策略,与社区的交互和参与等。

 

 

建立一个有效的 OSPO,需要先考虑从哪里开始,可以是自上而下,得到高层管理者的支持;也可以是自下而上,由一小部分开发人员和开源爱好者发起。无论如何开始,一个合适的领导者至关重要,这个角色需要对公司的业务了解深刻,拥有商业敏锐度和管理技能,并需要能够谈论深层技术。

 

下一步,就是建立结构化的政策和流程,同时保持一定的灵活性。

 

OSPO 的结构  OSPO应该在工程部门,还是在法律部门、CTO 办公室或其他特定业务部门?这同样取决于公司的主要业务和开源战略。这里有一些常见的位置供参考:

  • 对于拥有大量知识产权组合的公司,前期会选择在法律部门设置 OSPO 来解决合规问题

  • 工程驱动的公司通常选择在工程部门建立 OSPO,report to CTO 或 CIO

  • 有些公司选择营销组,作为开发者关系/营销的一部分

 

OSPO 的人员  对应的,OSPO 的角色由开源项目经理,法律团队,合规团队(核心团队为开源审查委员会 - OSRB),开发者关系、宣传和布道者组成,还有一些其他工作角色,如工具管理员,培训经理,工具和系统集成开发人员,部署支持人员和实施项目负责人。

OSPO 的流程  配备了角色之后,下一步就是明确政策和流程。政策应该列出公司范围内使用开源的要求和规则,并记录可执行的流程,来确保规则得到了遵守。流程需要确保最少的开销,并不断质疑和更新规则以简化程序。公司要准备好随着时间的推移,业务的变化以及开源项目的成熟和发展,修改规则和程序。

 

四、开源开发实践

开源软件开发和传统软件开发中的 “Waterfall” 模型有很大不同。拿需求收集来举例,开源开发中需求通常是来自用户或开发者的“功能请求”,并且由于开发的迭代/敏捷性更强,不存在长期的需求阶段。这种方法需要应对不断变化的需求并对项目运营所在的技术和业务环境做出快速响应。

 

 

成功的开源开发工作的一个标志就是能够根据可用的参与量有效地扩展项目(可扩展的开发模型),随着小型项目发展成中型到大型项目,它们会执行更严格的发布周期,增加维护者,并对子系统进行进一步划分。可以参考世界上最成功的开源项目之一——Linux Kernel,它有一个严格执行的发布级别,和专门的维护集(LTE分支)。这种开发模型的一个关键要素是,通过将不同项目子系统的责任委托给“维护者”来发挥作用,“维护者”对子系统中的代码负有最终责任。这允许一定程度的专业化和监督,使整个项目维护者能够专注于项目的更大战略和架构图。

 

 

公司参与开源时,其实是要去和大型分布式开发团队进行协作,而这种协作方式和公司内部严格的开发活动略有不用。没有两个社区是完全相同的,社区也不适用于个别公司。所以一定要解社区,了解它是如何治理和沟通的,然后去沟通、参与、回馈,并计划好适当的退出策略。(如果需要的话)

 

内源   内源是指“使用开源软件开发最佳实践,并在组织内建立类似开源的文化。该组织可能仍然开发闭源软件,但在内部开放开发”。内源实施非常强调开源的文化部分,除了简单采用开源开发实践以外,在组织内部建立更开放和透明的文化才能发挥内源的全部好处。

 

五、开源许可与合规

许可证是开源分发的关键概念。公司在使用开源项目时,许可证合规是一个非常关键的避免风险的策略。开源许可证如下图展示的,主要分为宽松许可证,如 MIT、BSD ,和互惠许可证,如GPL、AGPL。公司必须了解自己使用到的开源组件涉及到哪些许可证,并且在发布产品时履行许可证义务,所以开源合规计划整体分为两块:了解义务,履行义务

 

可能会触发许可证义务的场景是对一个开源组件的修改分发

 

下图是公司进行合规管理时的典型实践,对于入站的开源组件(可能是自己开发的软件,第三方软件或专有软件):

  • 首先需要识别他们

  • 识别之后,对源代码进行审计,得到审计报告

  • 审查小组对审计报告进行审查,解决报告中的问题

  • 批准使用

  • 一旦某个开源组件被批准在产品中使用后,需要被登记到产品清单中,并在跟踪系统中注册

  • 准备一份声明(Notice)

  • 验证和分发,提供随附的(需要开源的)源代码,对应的版本

 

 

这个过程不可避免的需要依赖工具,例如源代码扫描,许可证扫描,二进制包扫描,集成工具,组件管理工具等。这里有两个行业优质项目:

  • SPDX,提供了标准交换数据格式的工具,spdx文档的内容是标准格式的软件包、包级别、文件级别和版权信息等内容,这种更加通用的格式可以帮助降低扫描合规性时的复杂度。

  • OpenChain,提供了一个规范和认证计划,涉及源代码、构建脚本、许可证副本、归属通知、修改通知、SPDX 数据和其他管理软件可交付成果的开源许可证可能需要的材料的供应链交换。

 

公司在进行并购交易时通常需要进行审计,对于特别是软件公司,开源审计流程和传统审计有一定不同。进行开源审计是为了了解目标公司对开源软件的使用深度和依赖程度。同样,输入是一些可能的开源组件,输出是一份物料清单(BoM),包含完整的开源组件来源,许可证,以及声明。

 

审计可以分为传统审计DIY审计,传统审计是第三方审计公司的人员通过远程访问或现场访问源代码执行审计,并给出审计报告;DIY审计是收购方或目标公司自己运行扫描工具,这种方式更加灵活,但一般需要企业内部有经验丰富的员工能够解释扫描结果和提出修补建议。

 

 

 

六、了解上游开源项目

上游作为名词,是指衍生品所基于的原始开源软件项目;上游作为动词,是“将更改推送到上游项目”的简写方式,即对源代码所做的更改贡献回原始项目。

如果在供应链的背景下考虑上游,它会是这样的:

为什么公司要对上游项目做贡献?只消费而不回馈似乎看起来更容易,但是贡献回上游可以让其他人知道所做的变更,并且围绕变更进行规划,同时降低自己的代码意外损坏的风险,减少构建成品的工作量,甚至有机会影响你所使用的开源项目的未来方向。

 

那么什么时候应该贡献上游?

  • 当保持代码与上游项目同步的成本(时间或金钱)超过单独工作的便利性时

  • 当你希望其他人(包括客户)使用你的代码时

  • 当你希望你的代码成为事实上的标准,或推动主线项目时

  • 如果你预计在即将推出的产品中重复依赖某个代码库来补充上游项目

 

上游开源项目使用的治理模型有多种,因集权程度、组织实体的影响程度以及民主式决策机制和领导力选择而存在差异。没有一刀切的模型,不同的项目可能适应于某种特定的模式。我们可以看几种例子:

  • 公司主导的治理,如Google Android,RHEL

  • 仁慈的独裁者,最典型为Linux内核

  • 理事会,如FreeBSD,Debian

  • 基金会/财团,如Open Stack,Kubernetes,Academy Software Foundation

 

与上游进行合作时,我们一般采用“上游优先”的理念,然后制定有效的贡献政策,这些政策应该更多是帮助人们成功地为开源项目作出贡献,特别是对于新贡献者。贡献政策还应预定义上游项目使用的已批准的开源许可证列表。

 

上游社区可能还需要其他类型的与代码无关的支持,这时可以参考上述治理模型,可以选择以公司会员的形式赞助项目或者负责该项目的基金会。这些资金可以帮助项目取得成功,并且在某些情况下,还能帮助公司本身更多地参与咨询角色或对项目产生一些影响。

 

七、创建开源项目

公司要创建开源项目,第一步需要了解这样做的价值主张是什么——有成千上万个开源项目,你的代码是否提供差异化的价值,还是能让一个成熟且成功的项目变得更好?其次是衡量在开源中的投入,不是简单的将代码扔出来,却不考虑内部财务和工程投资。

 

下图列举了创建开源项目的适当理由和不好的理由:

 

 

 

你需要为你的新项目做好准备,确定相关的执行负责人,适当的给他分配资金。还有很重要的一点是,需要对员工进行培训,不只局限于对宏观开源的培训,还需要让工程师和产品经理意识到一些可能与他们日常构建产品或评估方式的不同之处。

 

下一步是对要开源的项目进行审查,包括法律审查,技术审查,这两块我们在合规工程中讲过;此外还有营销审查,为项目品牌建立指导方针;然后就是建立合适的治理模式和流程,包括社区架构,领导力,基金会的选择等等。

 

项目成功启动之后需要持续的维护,这就需要借鉴典型的成功的开源项目的运作模式了。你需要建立起一个社区,维护多元化的贡献者群体,这也意味着企业需要有更多资金投入,以及内部开发者的投入,这些投入可以依靠项目的重要性来决定。

 

一般来说,可以聘请社区倡导者(有时也称为社区经理)来帮助新的开源项目取得成功,这是个非常有挑战性的角色,此外,也不要忽视技术作家、项目经理,甚至社会学、心理学等非传统研究领域的人。

 

以上就是第四周课程的总结。自此,我们暑期为期一个月的开源软件通识基础课程到此结束,希望能够和大家继续保持互动,一起来聊开源。

 

我们接下来会进行短暂的休整与总结,开始新一轮的迭代。从新学期 9 月份开始,我们将继续推出新的一期开源通识课程,目的性也会更加明确,我们这里可以简单剧透一下。

 

 

为了保证课程质量与大家的专注度,新一期的课程准备采取定向邀请的形式进行招生(互联网企业、开源初创公司、开源基金会、高校、开源投资机构等),规模预计 60 人左右。

 

根据目前的反馈来看,开源运营的视角是大家需求最为迫切的地方,我们也考虑从这个角度来切入,小伙伴们不要错过,有兴趣的可以给我们留言,欢迎加入我们~

本文为  X-lab开放实验室  原创文章,遵循CC-BY 4.0协议,转载请附上原文出处链接及本声明。

文中部分图片源自:https://nythesis.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10 软路由_「保姆级」万晓博带你用软路由搭建家庭网络中心第1节-准备工作...

本章前言:  去年无意中在群我的一个群里大佬提起过软路由,那时候对这个需求并不是很大,所以对软路由只是名字概念而已,但是后面群里就一软路由这个话题 炒起来了,有的人说软路由就是利用自己闲置设备(PC笔记本)的或者…

【转】构建Android平台Google Map应用

http://www.moandroid.com/?p1360 Android 的新版本提供了的功能,通过这段视频,大家可以先简单了解下: Android 提供的地图(Map)功能可能是广大开发者非常关心的一个部分。到目前为止,开发内嵌式地图应用的…

将虚拟机转换成模板

在制作模板前,先要准备一个干净的操作系统,或者安装上经常使用的软件在虚拟机中,安装好后,将其正常关机,之后就可以转换成模板了。转换后的虚拟机将不会在主机管理中看到,而只能在模板中看到。克隆转换时克…

假如你学过高数,那你这一辈子都不会忘记这个人

▲ 点击查看2020年3月,菲列兹伦敦奖评奖委员会宣布,2020年度菲列兹伦敦奖将授予三位科学家,除开美国的 Vinokur 博士、以及德国的Steglich 教授以外,最后一位就是清华大学副校长、北京量子信息科学研究院院长薛其坤院士。薛其坤院…

.Net Core with 微服务 - 分布式事务 - TCC

上一次我们讲解了分布式事务的 2PC、3PC 。那么这次我们来理一下 TCC 事务。本次还是讲解 TCC 的原理跟 .NET 其实没有关系。TCC Try 准备阶段,尝试执行业务Confirm 完成业务Cancel 回滚准备阶段的业务TCC 事务其实是 2PC 的一个扩展。上一次我们说了 2PC &#xff…

第10章-管理Hadoop集群-hadoop 安全模式相关知识点

为什么80%的码农都做不了架构师?>>> 1、namenode启动时,namenode节点都做了哪些动作?fsimage和edits有什么变化? 2、namenode什么时候开始监听RPC和HTTP请求? namenode启动时,首先将映像文件(f…

oracle挂证多少钱一个月_惊呆,一条sql竟然把Oracle搞挂了

一条sql就能把oracle搞挂了,真的是不敢相信啊,前几天生产上确实出现了这样一个故障,我们来一起做一个事件回放。系统介绍系统架构见下图:fileapplication1和application2是一个分布式系统中的2个应用,application1连接…

linux图形界面鼠标变成小手_加载Linux系统,树莓派变身桌面电脑

开始正文前,我们想听听娃说了什么操作系统,英文名叫做Operation System,简写为OS,是电子设备运行的基础软件,按运行的设备类型来分,操作系统分为手机操作系统,桌面电脑操作系统和服务器操作系统…

二叉查找树转换成有序的双向链表

首先对于二叉查找树的定义和性质,以及如何得到二叉查找树某个节点的子树下的最大值和最小值和插入一个值的内容可以参考这两篇文章: (1)http://www.cnblogs.com/chenping-987123/archive/2010/09/25/1834341.html (2&a…

就你这个求婚态度,能嫁给你才怪!

1 兄弟!哪有求着婚还走神的?!▼2 喝奶茶专用口罩!▼3 把广东茶楼的菜都点一遍是什么体验?▼4 你觉不觉得这个门锁有点像托马斯的小火车▼5 手里的塑料袋像极了塑料兄弟情▼6 小朋友看《喜羊羊》看到的是坏人的愚…

Remoting and MSMQ 结合做的一个DEMO

真的非常感谢CnBlogs.com,因为有很多教程里写的知识点并不全面,而且也没附带例子.通过这里我学习到了很多很多.希望网站能越办越好哦.下面是我学习分布式开发时写的一个小demo,当然功能有限,技术也很低.希望大师们能拍拍砖,不吝赐教.呵呵软件运行的一个截图下面说说流程吧,1:利…

再聊一次值类型和引用类型

C#值类型,作为函数形参,形参被修改,不影响原值。这是我们在初始学习编程时需要记住的内容,我们也是一直这样践行的。先说结论:这是不准确的。为什么提出这样看似很浅显的问题,是因为有次我在使用ArraySegme…

java+字节码工具64位_jclasslib 下载-jclasslib 32位64位(java字节码查看工具) 5.1 官方版 - 河东下载站...

jclasslib是款免费的开源java字节码的查看工具;它支持进行查看您需要进行使用汉字运用到的Java字节码,并且还拥有一个的类库来让开发者进行读取,包括了修改、对JavaClass文件、字节码的写入等;用户这进行使用的过程中,…

ado filter 多条记录_注意!武汉江南中心绿道武九线综合管廊工程开工,青山区多条道路通行规则有变...

楚天都市报10月29日(记者吴昌华 通讯员 李佳 陈菲)今日记者从武汉交管部门获悉,本周六,10月31日,武汉市江南中心绿道武九线综合管廊工程开始施工,青山区多条道路通行规则有变,部分道路禁止通行。交管部门提供详细绕行建…

深度学习框架再次升级,它们都有什么优点?

全世界只有3.14 % 的人关注了爆炸吧知识经过几年的发展,深度学习方法摧枯拉朽般地超越了传统方法,成为人工智能领域最热门的技术。之后,谷歌、亚马逊、百度、Facebook 纷纷开源了自己的深度学习框架。而支撑AlphaGo的核心技术架构--TensorFlo…

SQL Server 2005的安装,SQL Server 2005系列之一

最近复习SQL Server 2005,忽然有了写系列的打算,也不知道能不能写好,今天先写一篇关于SQL Server 2005的安装的博文吧。和往常一样,我们先来看看SQL Server 2005到底是个什么东西?SQL Server 2005是一种以高性能、高可靠性和可用性…

Quartz - 作业调度框架-插件化开发

背景大部分业务都是基于定时的任务,特别适合使用quartz这类框架解决定时问题。具体quartz的使用,看官方文档就可以了。下面谈谈对quartz插件化的封装。我们使用quartz.plugin。然后在quartz_jobs.xml方法里面定义了schedule,其中灵活的地方在…

cgi备份还原和ghost有什么区别_手动GHOST还原重装系统详细教程

一键重装虽好,但也不是万能的。俗语说:治标不治本。也许你懂得用各种一键备份还原工具重装,但不一定懂得手动GHOST重装。为此,吻妻为大家分享一下如何手动GHOST还原重装系统,本教程步骤虽多,但很多都是点“…

图解一步步安装SharePoint Foundation 2010

图解一步步安装SharePoint Foundation 2010 下载后在Windows Server 2008 R2上进行安装安装产品必须的一些组件,比原来好多了不用自己一个个下了。同意许可,此产品为不收费版本,不用序列号了!!!安装相关的…

MYSQ 查看 2 进制日志

方法 1: myqlbinlog filename; -----------------------------------------------------------------------------------------------------------------------------------------------