万字总结:开源软件通识基础课第三周知识点总结

dotNET跨平台 dotNET跨平台     2022-12-24     585

关键词:

我们在前两周的课程上(第一周第二周),系统讲授了 FOSS 的课程内容,第三周,我们开始进入 COSS(商业开源)的部分。

 

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

 

第三周的主要内容是讲述商业开源软件创业,包括三大部分,12个主题:

 

  • 软件行业。该部分的内容分为四个主题讲述,首先是软件行业整体讲述,其次是关于软件产品的内容,再然后是关于软件供应商的内容,最后是关于软件供应商以及相关公司的商业模式的主题。

  • 开源产业。这部分的大多数内容在 FOSS 课程里有提及,不过这里更多的从商业的视角看待开源,主要包括四个主题,首先是介绍开源软件,其次是介绍开源项目,再然后是介绍商业开源,最后介绍云服务策略

  • 软件创业。该部分的内容是包括四个主题:首先是软件创业的讲述,其次是介绍研究与创业的联系与差别,再然后介绍如何从大学衍生企业,最后介绍初创公司的融资内容。

 

一、软件行业

我们首先来看一下软件行业。

 

该部分内容将主要阐明什么是软件、软件行业是怎样的,并回顾软件行业的历史,然后讨论软件行业的主要参与角色。然后将简单介绍这个行业的主要产物——软件产品以及其运营相关服务,最后讨论软件平台以及软件生态体系。

 

什么是软件?

从技术角度看,软件就是一系列指令集,可以是文本形式,它可以被编译,它的二进制指令可以指示计算机应该做什么。另外,软件也是有很多组件组成的,你把很多组件组合在一起,以此可以形成更大的程序以及服务等。

 

从经济角度看,软件也是一个数字产品,是一种可以买卖的产品,它是软件产业基础的重要组成部分。

 

 

软件几乎无处不在,影响着生活、工作、学习的方方面面。

 

软件行业

软件行业是为你提供软件产品、相关服务的所有商业的集合,与软件相关的服务可能是不同类型的。它是高度集中化、高度国际化的,有着强大的网络效应。人们可以对软件进行修改,能够快速迭代创新。另外,软件行业正在快速地向一些新的领域扩张。

 

 

软件行业通常被称为IT信息技术。如上图所示,可以看到软件行业规模是巨大的,并且还处于不断增长的过程中。

 

软件行业历史

相比较其他行业而言,软件行业并没有那么古老。“软件”这一个术语第一次提及是在1959年,软件作为独立实体走进人们的视野是在1969年。那一年,美国司法部宣布了一个具有里程碑纪念意义的事件,就是把硬件和软件分离开来。在接下来的几十年里,我们看到了软件的快速发展,直至今天的云计算。我们看到不同的架构主导了这个行业,以及产品是怎样分割并出售给用户的。

 

 

在 80 年代,企业的最初想法是做纵向整合,公司构建了一整套所谓的客户解决方案。

 

 

但是在90年代,事情就发生变化了,用户和客户不再喜欢原来的垂直集成,也就是用户不再喜欢纵向整合的产品,即所有东西都必须来自同一家供应商,而是关注一些向整合的解决方案。

 

 

但是在2000年的时候我们看到了开源软件的多元化以及开源软件的增长,自2010年到2020年,我们看到了云计算是如何吞噬世界的。这似乎是一种复古的潮流,至少目前的开源软件的一部分遵从上世纪80年代的纵向整合。

 

主要参与者

软件行业的主要参与者包括标准化产品提供商、软件咨询公司以及非盈利组织等。

 

 

标准化产品的供应商,他们向市场出售标准化的产品。一部分是所谓的独立软件供应商,它们为软件产品授予许可,例如Microsoft, Oracle, SAP和Adobe;一部分是云服务提供商,有时被称为互联网公司,例如AWS、Facebook。

 

软件咨询公司,除了标准化的产品之外,也包含一些定制化的内容。这其中包括了“开发服务公司”、“实施服务公司”,他们根据用户需求进行软件产品定制。

 

非盈利组织,这是带来规范和标准的某些组织。监管机构的主要职责就是监管市场,通常这是一个政府机构和或者政府认证机构,这些认证机构会定义一些认证项目,这也通常是基于标准组织的相关输出来进行认证的。

 

软件产品

这里从商业视角介绍软件行业的主要产物软件产品。

 

我们需要考虑软件产品将卖给谁,是消费者(2C)?还是企业客户(2B)?如何定价,消费者可能对价格敏感,而企业可能需要的是一套解决方案,用金钱换时间。产品总是针对每个用户群体设计的,需要考虑产品的市场细分问题。另外,消费者可能对产品的需求是开箱即用,而企业可能会雇佣顾问来协助他们的工作。

 

软件平台

软件产品通常分为应用程序与软件平台(系统软件)。

 

应用程序构建于软件平台之上,软件平台赋予应用程序必要的功能。软件和软件平台是共生的。因为对于软件供应商来说,如果他们想要快速进入市场构建高质量软件的话,他们就需要这些软件平台。平台供应商也是需要这些软件的,因为没有软件的话那么平台就毫无用处了,那么就没有消费者会购买这个平台。

 

软件生态

软件生态是参与者(企业和个人)、软件应用程序和组件及其在软件平台上和周围的关系和目标的总和。

 

 

软件平台要么成功,要么失败。如果构建了一个工作高效、规模庞大的软件生态,那么该软件平台一定会成功。

 

二、软件产品

我们来看一下软件产品的内容。软件产品是数字产品,例如软件、知识产权。它不是客观的实体,具有无形性,可以在市场上售卖给用户。

 

 

产品都是有一定产品的组成结构的。你可以从一个较低的起点创造一个产品。最初的产品就是我们所说的核心产品,核心产品可以理解成MVP。之后,核心产品会被扩展,变成了基础产品,最后会变成较为完整的产品

 

知识产权

我们先来看一下软件知识产权的内容。知识产权,是关于人类在社会实践中创造的智力劳动成果的专有权利,是所有权的一种特殊形式,具有不可替代性、排他性等。也就是说知识产权就是排除他人使用你的知识产权的一种权利,除非你放弃知识产权,否则没人能使用你的知识产权。

 

 

在软件领域,知识产权只有四种形式。第一种是版权。在软件领域,版权通常意味着源代码。知识产权的第二个重要类别是就是专利。你可以为算法申请专利,在专利申请注册之后,如果没有你的授权,其他任何人不能使用你的专利算法。除了版权和专利,知识产权还包含商标。所有的商标都是独一无二的,就像每一个公司或者产品都是与众不同的,因为获取顾客信任的价值是无形的。最后就是商业机密,这也是知识产权的一种存在形式。这是公司运行所需的交易秘密,这些商业机密必须被很好的保护起来,避免某些人将这些商业机密暴露给全世界。

 

核心产品

核心产品,可以理解为最小可行性产品,是向顾客提供的产品的基本效用或利益,核心产品可以解决客户的最核心诉求,但是不一定好用。

核心软件是消费者所安装的基本软件。就额外功能而言,包括扩展和插件,一些工具以及与其他软件的集成。

所有软件都需要相关的文档以及材料。在消费者软件层面,文档、材料必须准备齐全。

 

你可以提供某些自助服务,比如邮件列表、为用户提供用于讨论的相关论坛,还可以为用户提供在线培训,这在某种意义上是可以保持低成本的。

 

核心软件要如何收费呢?可以通过消费来设计收费结构,可以考虑用户量、使用时间以及资源消耗。用户越多,收费越高。软件使用的时间越久,收费越高,软件消耗资源越多,收费越高。

 

基础产品

基础产品以核心产品为基础进行了扩展,易于使用,同时可以提供一些支持服务,用户体验更好。


基础产品最基本的承诺是软件供应商所保证的软件可以实现基础的功能。当软件出现问题的时候,供应商需要修复问题、解决问题;如果问题长时间得不到解决,供应商可能要支付一些罚金。

基础产品可以保证软件在特定的用途中使用,与特定的硬件兼容,可以在特定操作环境下操作。

 

然后我们来看一下支持服务。全方位的支持意味着很多事情,包括个人支持、热线电话或者网站等,用户可以通过邮件进行聊天或者在论坛回复相关问题。

关于支持服务的定价,其实有很多方式,例如支持的维度,比如工作日支持服务,24*7支持服务。然而有些公司并不要求这些常规收费,他们会根据事故级别来进行收费。这就意味着客户一旦没有任何服务支持的合同,客户要想获取支持服务,就得出钱。在消费者领域,这是最常见的。你或许不需要购买软件,但是你一旦想要获取支持服务,你就可以拨打热线电话寻求支持,这个时候软件供应商就会根据你的咨询时长来扣除相应的费用。

完整产品

 完整软件是在基础软件的基础上进行拓展的,添加了培训、服务咨询等内容。

 

关于软件的培训,为企业提供培训、思考如何构造产品或者如何向客户提出价值主张,这只是其中的一部分。你可以提供内部培训 也可以提供在线培训。你可以为培训定价,可以按照人数或者根据企业的体量来定价。

 

如果你有一个企业产品的话,服务咨询是一个挑战。消费者需要经常咨询定制你的产品,你也要为消费者的相关需求进行产品的定制化。如果你的经验不足,你可能需要咨询师来为你的产品实现定制化。有关咨询服务的定价,无论是在公司内部还是由合伙人进行,通常都与劳动力有关。这种劳动可能隐藏在员工在项目所花费的时间上。关于所花费时间的总量,这可能会涉及一个固定的费用。

 

 

之后,软件将作为服务进行提供。用户尝试访问供应商所提供的服务。你对其如何定价,可以基于实际的消费定价,可以以订阅费用的形式收费。

 

产品架构

当一个产品被售卖的时候,谁正在获取利益?我们需要看一下产品架构来理解一下这个问题。

 

产品都是由不同的组件构建而成的,你或许需要从软件提供商那里购买软件,这样你就要付钱给软件提供商,这些软件提供商最终会从你的收益中受益。在软件领域,这些基本的组成部分需要被视为其他形式的知识产权。它可能是第三方组件库,无论是免费获得,比如该软件是开源的,还是从软件提供商那里购买的,该软件的获取都是基于版权。此外,为了能被客户接受并进入市场,软件产品必须遵守存储数据的各种标准,可能是一种定制化的标准形式,也可能是遵循专利服务的某种形式。一旦你满足并遵循了其他人的标准,那么这必然涉及到你的软件许可。产品经理需要考虑产品的架构,以及需要把握一下对于第三方平台的依赖。

 

 

我们需要思考一下谁拥有你所需要的这些软件,这会促使你的购买决定。如果你决定购买,你如何获得它,它的成本是多少?它在未来会如何变化?还有其他选择吗?如果你有其他选择,这样你就还没有被锁定,一旦你被锁定,即100%完全依赖于某个软件提供商,他将吃掉你的利润。

 

产品生命周期

软件是具有生命周期的。一个基本软件的历程大致是,出生、成长、成熟、衰退、死亡。

 

三、软件供应商

接下来我们来看一下软件供应商,软件供应商最终把软件产品推向了市场。

 

项目与产品公司

我们先来看一下两类软件公司,这两类公司的收费模式往往不同。以项目方式经营的软件咨询公司往往是一次性的项目收费,一旦项目结束,则把费用支付完毕,而以产品方式经营的软件供应商,提供标准化的商业软件,在收取许可费后,每年仍可能收取维护费用。

 

你可以看到,第一年的项目收入要比单纯售卖软件许可赚的多,但是随着时间的推移,产品收入会不断增长,这是基于软件的维护或者订阅费用。

 

你可能会想,难道不是每个人都想成为软件供应商吗?那么为什么有些人想创建商业咨询公司呢?其实对于两者来说,这两种角色都是有利有弊的。软件供应商如果把事做好,那么就会有不错的收入,事实也确实是这样,因为被锁定的消费者不会轻易离开。但是他们在开始阶段还是很艰辛的,首先你需要先获取软件,这是需要前期投资的。并且,这也并不能保证你能成功开发软件,也并不能保证你所开发的软件能够真正满足客户和市场的需求,也并不能保证你能在竞争激烈的销售环境中战胜竞争对手,只有赢下消费者你才能赚钱。所以那么多的软件供应商、初创公司都失败了,只有极少数的软件供应商存活下来了。

 

相比之下商业咨询公司就不是资本密集型企业了,所以商业咨询公司很容易起步。你和你的几位朋友可以充当劳动力,然后把时间出租出去,以此来向消费者收费。商业咨询公司相比软件供应商简单一点儿,因为你可能知道有多少人需要这个项目,以及怎样向消费者收费。

 

业务功能

现在我们来看一下软件供应商的各个业务功能。

 

构建产品需要开发、技术支持,销售产品,获取用户,市场和产品管理携手并进才能获得成功。

 

 

产品经理在公司中负责软件产品管理。你可以对战略产品经理技术产品经理进行区分,战略产品经理更多地考虑市场、产品定位和合作伙伴等,而技术产品经理则负责在细节上满足或理解客户需求,并与工程团队进行沟通,以此来正确实现这些需求。战略产品经理所做的事情就是探寻新的商业机会并为其制定预算,并且他们为此商业机会定义了产品愿景。

 

 

对于开发人员,公司中存在着不同的角色和称呼,有一般的开发者、工程师,有时候也有软件架构师。软件架构师主要是负责软件的架构设计,需要确保软件的各个组件都能够协调使用。工程管理员对工程资源负责任,他需要利用工程资源,并且分配使用工程资源,其中使用了不同的开发方式,比如传统开发或者敏捷开发。

 

 

运营人员针对不同用户群体,通过内容、渠道等营销(推广)产品,并通过数据指标,优化运营手段、产品功能和体验等。

 

 

技术服务支持需要帮助消费者正确使用产品,一旦用户使用产品过程中遇到了什么问题,技术、服务支持工程师以及管理者就会立即行动,用户在使用产品中遇到了麻烦,然后用户就去寻求支持,期望产品服务提供商可以提供解决方案,即为客户修复问题。

 

市场营销人员市场经理想让市场了解自己的产品,需要将产品推广到市场,并建立品牌知名度,推向市场的产品也可以是产品组合,“将产品推向市场”的做法是为了获取消费者。

 

 

真正促成交易的人是销售人员。如果是技术产品类的销售人员,你需要从技术层次上来了解产品,所以有时候需要一个售前工程师去提前访问用户,也可以和额外的销售人员,销售管理员一同前往。所以销售人员就是帮助你获取客户的工作人员。

 

 

在软件供应商看来,消费者完成购买这是一个成功的销售。但是,消费者完成购买与消费者无障碍使用软件根本不是一回事儿。你需要确保你的客户购买了产品并实际使用,而并不是购买了产品却不使用。这样的话,当该消费者使用该软件的时候,他们可能不知道如何使用,他们很可能错误地使用了他们,所以客户不满意,他们可能就不用这个软件了。所以之前的销售成功只是一个前期的成功,你需要帮助用户使用你的产品,需要让他们满意,这样客户就会留下来,并且不断完成购买。这就是所谓的“筛选”,提前放弃购买商品的用户是低潜质的消费者,你所需要的是需要专业服务的消费者,可能是需要一个功能,也可能是需要一个服务。

 

 

提供专业服务是顾问或者项目经理做的事情,有点类似于咨询部门,他们帮助部署产品,帮助管理咨询生态系统以及严格把控工作质量,以此来更好地为消费者提供服务。

 

人力资源管理很重要,招聘是一个很重要的过程,当然,财务部门在融资方面也很重要。

 

核心业务流程

我们刚才讨论过了业务功能,其中包含了不同的实践活动以及能力,以及企业中不同人员所处的位置。接下来简单介绍一下核心业务流程,包括构建产品,获取用户,操作产品,为用户提供支持,确保用户满意。

 

 

产品是产品经理、开发者、财务人员和人力资源的互动。产品是作为商品提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品、无形的服务、组织、观念或它们的组合。战略产品经理会去寻找商机。然后他们会将商机委派给技术产品经理,技术产品经理负责技术的详细规格和要求。

在销售方面,你通过销售获得了收入。销售漏斗开始发挥作用,销售漏斗就是“获取客户“的过程以及消费者所经历不同阶段的可视化展示。在最开始,他们刚了解你的产品,然后了解地越来越多,直到最后,如果他们最终还在,那么他们就会买你的产品。

 

运营人员需要和开发还有技术支持人员进行联动。

 

 

客户支持就是用户的付费内容,它们支付了订阅的费用,技术、服务支持也是包含在订阅中的,软件供应商需要对用户的需求快速做出反应。他们需要与开发和运维部门合作,以防出现问题。

 

 

正如前面所讨论的那样,如果用户购买了软件,这并不意味着他们会立刻成为一个对产品满意的客户。相反,还有很多步骤要做,只有产品得到很好的使用,用户才会满意。软件供应商需要积极主动地与客户交流,以确保用户刚刚购买的产品确实在恰当地用着。在最开始,用户购买软件确实可以帮助消费者实现商业目标。

 

四、商业模式

现在我们来看看这些软件供应商的基本商业模型,通常软件供应商都是从所谓的软件初创公司发展而来的。商业模式实际上描述了一个组织如何创造、交付和获取价值。

 

这部分内容虽然是有关商业模型的,但真正要讨论的是商业模式画布(BMC)以及商业模式的不同组件。“价值创造”在左边,此部分是用户为操作的产出付费,在右边儿就是“价值获取”,其将包含价值主张的产品推向市场并由此产生收益。该商业模式画布有9个不同的组件,接下来详细看一下。

 

 

价值主张是关于某种东西对顾客的价值,他们会买,会为此付费,但他们通常会将其转化为一种产品或服务。

 

我们来看一下BMC中的右边部分。细分市场是由相似客户组成的具有凝聚力的集群。在多方面的市场中,你有多种类型的客户,进一步细分为多个细分市场。所有细分市场共同构成整个市场。

 

 

你如何接触到客户呢?如何将你的产品以一种合适的方式呈现到客户面前?渠道,这些渠道就是到达市场元素的具体方式。这些渠道之前都是物理上的、但现在更多的都是数字化的,不同渠道之间是有差异的。它们是针对不同用途的渠道,其中的一个用途就是与人交流。另一个渠道就是有效地卖产品。但是你把产品卖给他们之后,渠道可能就变化了,一旦你把产品卖给了消费者,那么潜在客户就变成了实际客户。你仍然需要和这些客户保持联系,所以你需要分发渠道。

 

 

你知道你的客户是谁,你知道如何接触他们。那么现在你把你的产品卖给他们吗?这意味着你正在和他们建立联系,这不仅仅是最初的销售。一旦有人可能成为你的客户,你应该先把东西卖给他们,但是你又想和他们保持联系,你和他们潜在地提升关系。所以这就是所谓的,获取客户、留住客户、不流失客户、发展客户。

 

 

再来看一下“价值获取”方面的收入流。收入就是从消费者那里获取的收入,即消费者所付的钱。我们会听到“收入来源”这个词,这通常是指顾客购买产品,然后这一过程就是收入来源。每个时间周期都有与收入来源相关的收入与支出,随着时间的推移,你就会从收入来源获取源源不断的收入。你就可以把这些收入聚集起来,这不仅仅是一个用户或者产品。你从单一消费者身上赚钱然后再将商品推到市场中,然后就可以对市场进行划分,其实这都取决于你的收入流。只有通过收入流才能了解你的业务。

 

有时候你真的不知道你的业务上出现了什么变化,所以在公司中你可能会有类似“商务智能”的东西,这是公司自己的企业软件。这是一个可以分析你现金流的软件,你可以深入了解到,你在什么用户群体上赚钱?你在哪些地方赚到了钱?你赚到了多少钱?所有这些分析都是由商业智能软件所完成的,这样你才能了解到是什么在起作用?在获取收入中什么没起作用?

 

 

然后来看一下价值创造的部分,先介绍一下关键伙伴。关键伙伴是那些在业务中支持你的人,或者你与他们达成了某种交易。然后他们为你提供了某些东西,这就有利于你为消费者创建“价值主张”,所有你需要那些关键的合作伙伴。

 

 

除了合作伙伴以外还有关键资源的因素,合作伙伴是能够独立行使权利的法人实体。而关键资源是无生命的,所以在某种程度上没有办法界定资源是否违法。关键资源是一个重要的资产,为你公司所需要,你需要对资源进行差异化使用。资源有3种类别,分别是材料(包括有形材料以及无形知识产权)、资本劳动力

 

 

接下来我们聊一下关键活动,你需要将这些活动合理地安排。软件供应商,初创公司应该并且也有能力去做的事情。对于软件供应商来说,你应该掌握关键活动。如果你认为这件事情是重要的,或者说是关键的,那么你不应该将其外包出去。

 

 

最后来看一下成本结构,理解它并建立商业模式,你就可以对你的“价值创造”有所把握,这也是商业模型的另一面。企业的成本结构就是操作费用以及扩展你的商业规模所需的花费,这里将成本分为固定成本与可变成本。固定成本就是你即使没有生意也会存在的成本。如果你是一家初创公司,你正在发展你的产品,但是你的产品还没有准备好,所以你没有顾客,但是还是有成本的存在。但是一旦你有了新的客户,就会产生额外的成本,那么你就需要为这些计算资源付费。这就是可变成本,每增加一个用户该成本就会增加。

 

五、开源软件

我们来看一下开源软件,将会从它的法律定义、历史、开源许可、遵循开源许可、开源治理、使用开源中的问题以及开源控制机制进行介绍。

 

法律定义

 

开源软件的前身是自由软件,“自由软件”是在上个世纪的八、九十年代被定义的。并且,开源软件是一个基本术语在90年代后。它同自由软件类似,通过软件许可授予用户权利,用户被允许使用、学习、修改、传播分发软件,但同时也存在一些限制义务,而这些明确权利与义务的开源许可具有法律效力。一般来讲,开源软件许可通常需要满足OSI(open source initiative)定义的10个标准。如果相应的软件在开源软件许可下是可获得的,那么可以称该软件是一个开源软件。

 

开源历史

在最开始,当软件被创造出来的时候其被认为是独立的产物,是独立于硬件的,但是很少将软件认为是一种知识产权,人们经常免费共享源代码,因为源代码几乎没有任何的商业附加价值。在80年代,公司认识到了软件的商业价值,因此不再共享源代码。这使得Richard Stallman非常烦恼,因此他决定通过创造自由软件来对抗“人们不再共享源代码”的趋势,他创立了自由软件基金和以及GPL许可。

 

在90年代,对于自由软件而言,推广、传播自由软件的这个做法是关乎哲学的,甚至是激进的,因此开源计划应运而生,这背后是实用主义者意识到了免费软件的价值,但是这些实用主义者也不太想让哲学的相关理念围绕在这个协议许可家族上。他们建立了也提出了他们自己对开源的定义以及与此开源定义相匹配的许可证,通常情况下不讨论著作权。在2000年,专业化开源就出现了,相关公司也应运而生了。现如今,开源已经成为发展的主流,而且开源已经向”云服务“靠拢。

 

开源许可

现在我们来看一下开源许可。

 

开源许可通常要包含5块内容,首先是版权声明,其次是权利义务的说明,再然后是禁止条款,最后是免责声明

 

 

开源软件通常有两类使用方式,一类是私人内部使用,这时候无需关注开源许可的限制义务,另一类是分发,这时候需要履行开源许可所明确的义务。而这个义务通常也有两类,一类是copyleft义务,这通常要求再分发的软件遵循同样的许可,例如上图的GPLv2许可,另一类是法律声明义务,这类要求相对较低,不要求再分发的软件遵循同样的许可,通常只需要提供基本的法律声明即可,例如上图的MIT许可。

 

 

上图给出了开源许可的家族以及许可之间的兼容关系。

 

遵循开源许可

 

 

你开发的一个软件常常由不同的组件构成,这些组件往往依赖大量的闭源或开源软件,对于引入的所有开源软件,需要根据其开源许可履行对应的义务。

 

开源治理

 

这里给出了开源治理的三个规则示例。

 

 

不要复制不确定许可的源代码到你的项目中,不要复制以及引入copyleft许可的代码到你的项目中,不要盲目信任开源组件所声称的许可,不要将许可冲突的组件引入。

 

 

只使用宽松许可的开源组件,使用一些受治理的代码库,维护一个软件物料清单。

 

 

可以在引入代码时考虑上图这张表,确定哪些可以引入,哪些不能引入。

 

使用开源中的问题

 

使用开源软件时,要确保清洁的知识产权、管理安全漏洞、管理软件的依赖。在上层建立业务时,要确保对源代码的访问,确保获得商标,确保获得专利。

 

开源控制机制

开源控制机制主要包括两块内容,一是知识产权的控制,二是社会领导地位的控制。

 

 

先来看一下如何控制知识产权。通过改变许可来控制版权,通过撤回商标授权来控制商标,通过专利收费来控制专利,通过媒体来引导你的优势。

 

 

再来看一下如何控制社会领导地位。通过分离社区,削弱别人的影响,将不想要的人排除在项目之外,来强化社会领导地位,另外可以延迟或拒绝不想要的贡献或者领导整个项目的技术方向来保证自己的commit权利。

 

六、开源项目

这部分内容讲开源项目,讲依次介绍开源的过程定义与开源项目定义、项目社区、开源基金会、社区主导基金会、供应商主导基金会、用户主导基金会以及项目生命周期。

 

开源的过程定义与开源项目定义

 

 

开源是一种软件开发方法,它利用了分布式同行评审的力量和过程的透明度。开源的承诺是更好的质量、更高的可靠性、更大的灵活性、更低的成本,并结束掠夺性的供应商锁定。

 

 

这里定义的开源项目是开源软件 + 社区(人)。开源社区倡导开放协作,平等主义,任人唯贤等内容。

 

项目社区

开源项目社区是从事开源项目的人员和公司的团体。

 

 

社区内部存在三种角色,user、contributor、committer。user往往是项目的使用者,能够反馈一些问题,contributor则负责对一些功能的开发与bug的修复,committer则对代码进行审查。

 

 

开源项目社区存在三种治理模型,BDFL(仁慈的独裁者模型),这是一种分层治理模型,例如Linux kernel;peer group,这是一种同行评议模型,有一群核心的人员负责项目治理,例如PostgreSQL,Do-ocracy,这是一种民主模型,所有人都可以向项目贡献代码,甚至合入代码,只要代码是得到认可的,例如Tiki Wiki。

 

开源基金会 

开源基金会是专门为支持开源软件项目而办的非营利性组织,它通过为软件项目社区提供服务与支持实现价值,为开发者提供了一个发现、使用、交流开源技术的平台。开源基金会能保护开发者免受法律诉讼,为成员创造了一个公平、平等的环境,它能够规范知识产权、市场营销渠道、产品研发路线等内容。

 

引入基金会后,开源社区的角色有所扩展,新扩展了PMC成员、PMC领导、基金会会员,PMC成员协助项目管理,PMC领导协调各个PMC,基金会会员承担更多的任务,包括教练、市场营销等。

 

社区主导基金会

 

 

以社区为主导的开源基金会是一个以自然人为主导的开源基金会。

 

供应商主导基金会

 

 

一个以供应商为主导的开源基金会主要由软件供应商领导,共同开发产品的非差别化组件。供应商希望创建更强大、更具竞争力的生态系统,增加收入、获取更多的客户等。

 

用户主导基金会

 

 

一个以用户为主导的开源基金会主要由软件用户(公司)领导,以赞助/开发经营其业务所需的软件。用户需要摆脱或减少被单一供应商锁定的风险,通过构建供应商生态系统,符合用户的利益。

 

项目生命周期

 

同产品生命周期类似,项目的生命周期也包含出生、成长、成熟、衰退和死亡这几个阶段。另一方面,在各个阶段,开源软件需要不断创新,它们需要扩展到新的领域而不是固步自封。

 

七、商业开源

接下来介绍一下商业开源。我们将会思考商业开源的定义,三种核心商业模式的策略与模式,包括单一供应商开源公司、开源经销商公司、服务支持公司。为了理解公司如何选择商业开源战略,我们还需要看下该策略给公司不同业务功能所带来的效益。

 

商业开源的定义

 

 

商业开源软件首先是一种开源软件,它被一个或多个软件供应商所发展,以至于在该开源项目后面的公司可以间接获利。这个定义的关键在于开源软件本身,因为开源许可证总是可以免费使用的,所以你不能从中赚钱。你只能通过一些兼容性服务赚钱,比如可以提供软件下载,可以把软件放在磁盘上然后进行软件的分发。开源软件所产生的收入总是间接的,可能是某些兼容性的东西在起作用。这就是我们的商业开源所面临的挑战。用户要为基本产品或完整产品付费,这些产品由商业开源软件供应商提供,但这并不是开源软件本身。 

 

使用开源的策略来推动市场或者用户对于产品的接受,这一方式即是“无摩擦分发”(frictionless distribution)。对于新用户来说进行这个推销还是很容易的,但是之后客户必须先熟悉该软件才能开始使用该产品。开源软件与付费软件有很大的不同,即使付费软件有免费的模式,与开源软件还是有很大不同的。其中付费软件的免费模式可能是允许用户先免费使用三个月,然后才会转为收费模式。一旦你建立了或者已经建立了这样的用户基础,竞争对手就很难进入用户和潜在客户所在的市场,这些用户就会成为你的收入来源。

 

 

我们将产品划分成了三个阶段,分别是核心产品、基础产品、完整产品。我们可以看到商业开源供应商出售的实际上是基本的或完整的产品。软件供应商会卖给用户某些产品,其中包含了满足用户需求的使用保证,以及关于产品的培训及咨询操作。但是核心产品往往是开源的。

 

单一供应商开源公司 

我们来探讨一下第一种商业开源模型,这是三种商业开源软件模型中起主导作用的一个模型,称之为单一软件开源供应商。单一供应商开源软件是一种商业开源软件,并且其被单一的供应商所拥有与管理。其中只涉及一个开源软件供应商,这就是所谓的单一开源软件供应商。

 

 

在单一供应商模式下关键是要弄清楚顾客在为什么付费,可能是基础产品或者完整产品的附加功能(商业版本),而不是能免费获取的某些东西(社区版本)。

 

一般情况下,选择使用社区版本软件的用户,一般是更加在乎产品的价格而不是自己所要花费的时间,这些用户宁可自己投入时间去发现问题、解决问题,他们也不想去购买企业版本的软件。

这点儿与企业是相反的,企业用户可能也是从社区版入手,但是企业更加注重时间以及产品的可靠性,所以企业用户对于软件的额外功能以及供应商对软件的操作支持,企业用户愿意花钱买这些服务、功能。企业客户也可能需要软件额外的特性,这样我们就可以将一个免费的企业用户变成一个付费用户。

 

另外,对于公司内部的IT部门,他们可能会说我们不会使用这个开源软件,我们将要购买这个软件的商业版本,因为我们想要获取到支持。我们想要在某个时间给某人打电话能解决问题,IT部门经常需要专业的支持,并且对于这部分商业支持也是有预算的。

 

 

对于单一供应商的开源公司来说保持版权、知识产权的单一所有者是重要的。但是,因为这个软件是免费的开源软件,您可能会收到用户的PR,这些用户要求将他们的更改合并到你的代码中,这时候他们会获得对于潜在贡献的所有版权,因此有些产品的新功能需要社区成员将版权转移给公司,以保证公司对于知识产权的100%所有权。

 

开源经销商公司 

开源发行版是一个集成良好的开源组件和应用程序的集合。开源经销商公司是指将开源发行版作为产品或服务提供的公司。

 

 

同样开源经销商也将产品分成社区版本与商业版本。

 

 

经销商没有代码的版权,但是经销商掌握着各种知识,比如软件、 服务如何整合? 如何从组件中构建服务? 如何配置并使这些组件兼容,以便它们能很好地一起工作? 如何回应用户的请求? 以及如何测试整个过程? 除此之外,还有一些东西,比如经销商所拥有的组件,以及独特和专有的知识产权。

 

服务支持公司

 

 

开源服务和支持公司是一家为社区开源软件提供服务和支持的咨询公司。在这个领域,不会有哪一个商业咨询服务公司占主导地位。公司的committer或者他们所雇佣的committer以及他们所赚取的收入通常与劳动力成比例,这些劳动力是那些被雇佣过来为消费者提供服务的人。另外,这些咨询公司使得开源是可持续发展的,因为他们对商业所基于的开源项目做出了贡献。

 

公司开源背后的商业动机

 

商业公司的开源战略背后究竟隐藏着什么原因?

 

 

开源对于公司的商业模式的各个方面都有一定的好处。在市场营销方面,能够更广泛、更快、更便宜地产生潜在客户。在销售方面,能够更有效地销售。在业务发展方面,能够更好地发现合作伙伴机会。在产品管理方面,能够更快更好地确定市场需求。在软件开发方面,能够以更低的成本更快地生产出优质产品。在产品支持方面,能够支持得更好更便宜。

 

八、云服务策略

这部分内容来介绍商业开源中的云服务策略。我们首先要讨论功能差异化的想法,如何将用户转化为付费客户。这将涉及很多不同的细化策略。然后我们将看看在过去的时间里,许多服务是如何转移到云中,以及这意味着什么。最后,将简单谈谈劳动经济学和单供应商的生命周期。

 

功能差异化

 

 

首先需要看一下功能的价值,无差异的功能这是每个人都有的,任何东西都可以随时使用,但是这并不能够使你的产品和其他产品区别开来。如果用户选择了你的产品,这意味着你正在做一些创新的、对你的用户有价值的事情。因此,我们要适当地利用或捕捉这个价值,识别用户有使用软件的原因。我们需要确定用户购买的理由是什么,帮助进一步升级或转换用户为付费客户。 

 

开放核心模型

 

 

开放的核心模型 IP 模块化的一种特殊形式,其中的模块化部分都是软件部分,开放核心是开放源码许可的软件,然后是封闭带或封闭的扩展集,封闭源码软件,这些都是一个基本的软件的扩展与额外的功能,某些客户需要,但不是免费提供给他们的,核心的基本功能是开放的,但只要公司需要更多的高级功能,他们中的一些人或所有的人将无法使用它,因此,你必须为它付费。因此,开放的核心意味着像 IP 模块化一样的软件分割。

 

许可策略

如果你想要成为一个唯一供应商,并远离竞争的开源公司,那么你应该是唯一可以多许可证的公司,这将给你带来一个竞争优势,你需要通过扩展开源许可来保持你的多重许可的权利,如果你接受外界的贡献,你需要通过贡献者协议的方式来约束这些贡献。

 

 

现在的贡献者协议,让你有权利可以继续做产品的双重许可或多重许可。在商业开源,特别是单供应商的开源公司,至少有一个有开源许可证的核心软件作为开源,商业许可证作为你卖给你的客户的商业版本的一部分,那么问题来了,我们应该使用哪种开源许可证? 这答案非常重要,因为这是你保持竞争的方式,假设你想用开源软件来对付你的竞争对手,如果你让你的软件在一个开源许可证下可用,如果它有一个复制许可条款,那么竞争对手就不能在该软件上建立有自己的补充或扩展,就像在开放的核心模式上,它必须将这些扩展开放,因此,基本上通过使用 copyleft 许可开放源代码,就能阻止你的竞争者。

 

 

这导致了不同的许可结构,你会向付费客户提供商业许可下的软件,而对于开源社区, 你将在一个强大的版权许可下提供该软件,如 GPLv2 或 AGPLv3(即使用户只是通过网络服务使用该软件,这也意味着软件在被分发)。这里考虑两个产品类型的维度,应用维度通常在开源许可证许可整个软件;组件维度,由于复制权的影响开发者并不买账,可以通过 shims 中间层来保护,并使用像 MIT 许可证这样宽松的许可。这些策略对于商业公司推广产品很有帮助。

 

云计算带来的挑战

应用程序上云这是一个转变。但是开源软件与公有云的关系这两年有点紧张,一个比较流行的观点是公有云插管吸血开源软件,而对开源社区没有太多贡献。不少开源项目开始寻找在公有云面前保护自己的方法。毕竟公有云的出现,一定程度上打乱了原有的开源商业模式。最终用户通过购买云服务,从公有云服务商那里得到了保障,开源厂商被绕开了。

 

 

商业开源供应商发明了一种新的许可类别,称为源代码可用许可。这些供应商试图获得开源的好处,并同时希望避免竞争,因此,来源可用的许可显然是歧视性的,并未被认为是开源许可。

 

 

这个时候出现了从双重许可到三重许可的转变,AGPL的增加,使你的产品保持了开源的可信度,更能够被开源爱好者和开发者接受,同时提供的源码可用许可也能够避免竞争,最终在赚钱的同时也实现了正确的开源世界。

 

控制机制的使用

 

 

在社区开放源码中,传统的非组织的社区开放源码,通常会采用有分布式的版权控制,而基金会获得的版权可能会改变许可证。最有趣的是,在基金会主导的开源项目中,社会领导力总是像传统的社区项目一样,是分布式的,你会成为一个领导者,是因为你通过努力工作赢得了它。

在商业化的开源中,贡献的开发者是公司的雇员,公司拥有他们的工作成果,他们以这种方式维护版权,公司可以拿走开发者对代码库的贡献权。基本上,在商业开放源码中,一直是公司在运行和拥有既定的控制和指导机制。 

 

劳动经济学

劳动经济学是一个大词,在这里讨论的是开发人员的职业。正如我们所知,开发人员有一个路径,他们可以从user开始,成为contributor,committer。如果它是一个基金会运行的项目,他们甚至可能成为项目管理委员会(PMC)成员,或领导者,甚至可能是具有广泛监督和辅导责任的基金会成员。

 

 

从雇主角度看,如果你是一个雇主,你看到一个软件开发人员忙碌于开源, 这对雇主来说意味着很多潜在的东西。

 

首先,在招聘的讨论中,雇主会看到你是一个有技术能力的人,你在开源方面很活跃,雇主可以看到你在公开场合写的代码,这意味着他们可以在一般情况下验证你的技术能力。

 

在技术能力之外,我们也需要认识到,开源项目是社会系统,有同行的存在,如果,他们接受你的贡献,那么,证实你的工作是好的,你得到了同行的确认,如果你能从贡献者变成提交者,对雇主的暗示是, 这个人和其他人相处得很好,你的社会能力有一个同行的确认。如果你在一个开源项目中担任领导角色,这也是同行对你的领导能力的确认,所有这些都使你比一般人更有可能成为一个合格的未来雇员,这就消除了招聘讨论中的不确定性。

 

最后,如果你所从事的开源项目,以及你或你的开发者在其中有权力和影响力的地位,那么,雇主当然可以利用这一点来引导他们自己对项目的贡献,影响项目的方向等等,将社区作为一种资源引导到雇主希望他们去的地方。

 

<

##-考研第三十三周总结-

...子,整体感觉难度中等但我得分率不高,粗心+知识点不牢固,线代失分多知识还不够体系化数学:做完历年真题基础篇错误内容英语:手机背单词每天英语:将上一周做的卷子听了配套讲解的课程政治&... 查看详情

-考研第三十三周总结-

...子,整体感觉难度中等但我得分率不高,粗心+知识点不牢固,线代失分多知识还不够体系化数学:做完历年真题基础篇错误内容英语:手机背单词每天英语:将上一周做的卷子听了配套讲解的课程政治&... 查看详情

#2018-2019-120165230《信息安全系统设计基础》第三周学习总结(代码片段)

2018-2019-120165230《信息安全系统设计基础》第三周学习总结教材学习内容总结存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来。有效地址的计算方式Imm(Eb,Ei,s)=Imm+R[Eb]+R[Ei]*sISA:指令集体系结构,它定义了处理... 查看详情

2018-2019-120165214《信息安全系统设计基础》第三周学习总结(代码片段)

201652142018-2017-1《信息安全系统设计基础》第三周学习总结教材学习内容总结1、实际上gcc命令调用了一系列程序,将源代码转化成可执行代码。2、存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来。3、ISA:指... 查看详情

2018-2019-120165333《信息安全系统设计基础》第三周学习总结

2018-2019-120165333《信息安全系统设计基础》第三周学习总结教材学习内容总结程序的机器级表示:计算机系统的两种重要抽象ISA(Instructionsetarchitecture):指令集体系结构,机器级程序的格式和行为。定义了处理器状态指令的格式... 查看详情

2018-201920165235《信息安全系统设计基础》第三周学习总结

2018-2019-1学号《信息安全系统设计基础》第X周学习总结教材学习内容总结尽量简单的总结一下本周学习内容尽量不要抄书,浪费时间看懂就过,看不懂,学习有心得的记一下教材学习中的问题和解决过程(一个模板:我看了这一... 查看详情

2018-2019-120165208《信息安全系统设计基础》第三周学习总结

2018-2019-120165208《信息安全系统设计基础》第三周学习总结教材学习内容总结第三章汇编语言汇编语言是直接面向处理器的程序设计语言机器级编程的两种抽象ISA(指令集体系结构或指令集架构)——定义机器级程序格式和行为... 查看详情

杨其菊201771010134《面向对象程序设计(java)》第三周学习总结(代码片段)

  《面向对象程序设计(Java)》第三周学习总结第一部分:理论知识 这周课程没有新进度,由于感觉对基础语法的不熟悉,复习了一遍前三章的细碎知识,学到一些之前不知道的原理: 1.计算机高级语言按程序的... 查看详情

2018-2019-120165228《信息安全系统设计基础》第三周学习总结(代码片段)

2018-2019-120165228《信息安全系统设计基础》第三周学习总结教材学习内容总结程序的机器级表示:计算机系统的两种重要抽象ISA(Instructionsetarchitecture):指令集体系结构,机器级程序的格式和行为。定义了处理器状态指令的格式... 查看详情

2018-201920165227《信息安全系统设计基础》第三周学习总结(代码片段)

2018-201920165227《信息安全系统设计基础》第三周学习总结学习目标理解逆向的概念掌握X86汇编基础,能够阅读(反)汇编代码了解ISA(指令集体系结构)理解函数调用栈帧的概念,并能用GDB进行调试学习任务必学内容阅读教材,... 查看详情

201723282018-2019《java软件结构与数据结构》第三周学习总结

201723282018-2019《Java软件结构与数据结构》第三周学习总结概述Generalization本周学习了第五章:队列。主要内容包含队列的处理过程、如何用对例如求解问题、各种队列的实现等。教材学习内容总结Asummaryoftextbook5.1概述队列是一种... 查看详情

第三周学习总结

    这一周用在学习上的时间还是比较多的,因为虽然有了C++的底子,但是还是花费了一些时间去熟悉如何用JAVA对类进行“描述”的。    在学习上比较详细的学习了第三章面向对象基本概念和第四... 查看详情

2018-2019-20172329《java软件结构与数据结构》第三周学习总结

2018-2019-20172329《Java软件结构与数据结构》第三周学习总结教材学习内容总结《Java软件结构与数据结构》第五章-队列一、概述1、队列是什么?队列是种线性集合,其元素从一端加入,从另一端删除;注:队列是按照先进先出的... 查看详情

2018-2019-120165205《信息安全系统设计基础》第三周学习总结(代码片段)

第三周总结寻址方式经历三代DOS时代的平坦模式,不用区分用户空间和内核空间,很不安全8086的分段模式IA32的带保护模式的平坦模式两个抽象指令集体系结构(ISA):定义了指令的相关规则,且多条指令是并发执行的,结果像... 查看详情

第三周学习进度总结

1:本周代码量:1000行左右,编写了一些简单的java程序和HTML程序 2:在课程方面学习了HTML在网页开发和编写方面的知识,并且亲手实验去验证。 3:同时我们还开了一门选修课,虽然是选修课,但讲的是javascript,对于web... 查看详情

java万字长文基础知识总结(下)-王者笔记《收藏版》(代码片段)

上一篇Java基础知识学习总结之(上)   下一篇Java集合容器篇面试题 (上)                                          目录三、计算机原理和操作系统 内存、CPU、硬盘? Linux基本命令... 查看详情

《信息安全系统设计基础》第三周学习总结(代码片段)

缓冲区溢出漏洞实验一、实验简介注意:实验中命令在xfce终端中输入,前面有$的内容为在终端输入的命令,$号不需要输入。命令上有#的内容为注释,不需要输入适用人群:有C语言基础会进制转换以及计算vim基本使用熟悉基本l... 查看详情

js万字整理javascript相关基础技术面试题总结-前端面试必备-基础知识总结-秋招冲鸭(代码片段)

文章目录1.变量声明与类型1.1varletconst区别1.2数据类型1.3值类型与引用类型的区别1.4typeof能判断哪些类型1.5判断数据类型的方式1.6`===`与`==`1.7truly变量与falsely变量1.8强制类型转换和隐式类型转换1.9语句... 查看详情