Skip to main content

开源的目的

 发信人: goodtudou (goodtudou), 信区: Programming
标  题: Re: 论开源
发信站: BBS 未名空间站 (Tue Aug 11 11:40:44 2020, 美东)

1:开源的目的
作为物联网大数据平台,TDengine属于基础软件,可以划到数据库、大数据工具的范畴
。对于用户而言,基础软件特别是数据库软件的迁移成本极高,因此对于新的基础软件
,即使性能和功能都超强,其推广也有很大难度。原则上来讲,新产品的推广销售成本
是市场成熟垄断产品的5倍以上,因此新产品的性价比要比市场现有产品好5倍以上,才
可能对它产生冲击。

开源是一种很好的推广方式,最典型的成功案例是Linux和MySQL。这两个产品在开源的
初期,技术和产品上与专业的Sun Solaris, Oracle等产品没有可比性,但由于开源免
费,受到开发者的欢迎,很多开发者也参与进去,因此形成了一定的用户群,而且用户
群逐步扩大,最终成为主流产品。


集群开源后,在GitHub趋势榜上连续5天霸榜

另外一方面,基础软件必须面向全球市场,如果仅限于中国市场,难以做大。由于盗版
,付费和服务的意识还未养成,中国市场基础软件的销售只占全球5%都不到,我们不能
无视海外巨大的市场。而且基础软件属于典型的技术产品,使用是没有国界地域之分的
。同时,对于操作系统、数据库这些软件,只有全球前三名才可能生存。因此涛思数据
从成立之日起,就决心瞄准全球市场。

而进军海外市场,市场推广更加困难,普通的开发者会对来自中国的基础软件有很多质
疑和不信任。开源是增加信任和消除质疑的最好方法。同时,开源可以吸引全球开发者
的关注,其中一部分还可以成为贡献者,是全球协作开发,吸引全球人才的最好方式。
数据库领域,大家熟悉的开源软件ClickHouse是俄罗斯人开发的,Redis是意大利人开
发的,但现在都已经成为全球流行的软件。

随着RedHat被IBM以340亿美元收购,MongoDB, ElasticSearch等成功上市,开源软件,
特别是Open Core的模式,已经被证明是一成功的商业模式。还有一面,目前市场上流
行的时序数据库都有开源社区版,如果我们没有,推广将更加困难。从这个角度来看,
不开源是不可能的。

总之,我们开源是为了解决市场推广的问题,目的是快速获得市场份额,甚至市场的垄
断地位,形成品牌。

TDengine 2.0 官网(www.taosdata.com)

2:License的选择
首先要明确一点的是,开源并不意味代码可以随意使用。使用者必须接受License里的
规定,否则就是违规。开源产品有很多License, 流行的有Apache, BSD, MIT, GPL等等
。我们选择的是AGPL,这个License是GPL上的增强版。GPL 属于dual license,如果要
免费使用,使用者的代码也必须开源,否则需要付费。AGPL是云计算的背景下出来的,
有更强的限制。

我们采用AGPL的目的是防止云厂商用开源代码提供服务,独占利润,而不是强迫其他使
用者开源他们的软件。因为云计算是趋势,市场占比越来越高,而且市场只会容纳几家
云厂商。如果云厂商自己组织一支专业的技术支持队伍,那么涛思数据将失去盈利的一
重要渠道。但我们乐意与云厂商合作,一起提供TDengine服务,共享利润。MongoDB就
是采用的AGPL,一年前,开始使用自己的带有更强限制的开源协议,其目的是不容许云
厂商免费使用。

还有一点需要明确的是,我们开源的协议是可以更改的,等我们有时间,我们将制定一
个仅仅限制云厂商使用的开源协议,只是已经release的版本按照当时的开源协议执行
即可。采用AGPL是我们目前这个阶段,最简单最合适的保护方式。

3:哪些需要开源?

开源有两种,一种是100%的开源,还有一种是部分开源。对于100%开源的,目前取得商
业成功的只有RedHat,而部分开源的则有很多家商业成功的公司。现在流行的是Open
Core, 就是将核心代码开源。

我们是一家要获得商业成功的公司,因此我们需要采取大家认同的商业模式Open Core
。那么对于TDengine而言,我们需要将真正有技术突破和核心的模块开源,包括:存储
引擎、查询计算引擎、RPC等等。如果这些核心模块不开源,难以说服开发者使用,因
为他们有很多可替代的选择。

2019年7月宣布开源的时候,从后续宣传、商业拓展的角度考虑,决定将集群闭源(注
:集群功能刚于2020年8月3日开源)。但在美国期间,与Steven以及众多公司的交流来
看,我们应该将其开源。原因有几点,1:我们的竞争对手InfluxData, Promethus,
TimeScale的开源版都不提供集群功能,那我们提供的话,产品将有更大的竞争力;2:
时序数据处理市场,还属于战国时代,产品的定义、市场格局还在不停的改变,还没到
定局的一天,因此现在开源利大于弊;3:我们要在这个群龙混杂的时代脱颖而出,必
须先人一步,敢做对手不敢做的事情。

原则上来讲,所有基本功能,特别是展现我们技术优势的模块都需要开源。

4:哪些无需开源?

哪些不需要开源呢?原则上是大客户才有需求的功能。对于大的企业客户,有不少需求
,没有什么技术挑战,也不是核心模块,可以自己开发,但限于人力和时间成本,乐意
采购。对于TDengine而言,有以下一些功能:
数据加密:数据文件加密保存
异地容灾:一个虚拟节点组可横跨几个机房
审计:查看DBA的各种操作记录
用户认证接口:支持LDAP、Active Directory等
多级存储:节省存储成本
多租户:一般只有大型企业或提供云服务的企业才有这个需求
系统监测:TDengine自身的监测要纳入到企业整体的监测体系,减轻运维压力
图形化后台管理界面

原则上来讲,辅助性的功能不需要开源。

5:开源之后,销售什么?

开源卖的是辅助功能:最基础的核心功能确实能用,而且用的很好。但任何一家大规模
的企业,作为IT负责人,一定要考虑数据的安全(包括容灾、备份、审计、加密、审计
等等),考虑运营维护的复杂度(与现有IT监测系统能否集成,是否有专业管理工具)
,这些功能,他们自己可以在开源版基础上开发,但是开发维护的成本一定是比购买原
厂的产品高。大型的互联网公司,比如谷歌, 阿里,腾讯等,他们因为数据规模巨大,
他们会乐意组织团队在开源版本上开发,因此,可以断定,这些巨无霸互联网公司不会
付费买我们产品。但我们依然需要鼓励他们采用,因为他们是标杆型客户,能起宣传作
用。

开源卖的是保险和服务:一家大企业的CIO/CTO根本不会为公司一年节省几百万的费用
,而让整个数据系统处于一个不可靠的状态。采用开源软件,确实好,但如果没有原厂
支持,出了任何技术问题,让整个系统宕机几分钟、甚至一个小时,就更不用说一天,
那损失是巨大的,甚至IT负责人都被撤职。没有人能保证软件不出问题,这个是所有IT
人的共识。因此只要是一个专业有经验的CIO/CTO,他一定会购买专业的产品和服务,
至少出问题时能找人背锅。因此销售过程中,明确告诉对方,只要是免费客户,我们只
能在GitHub或技术社区里提供服务,无法保证实时性。但对于付费客户,我们会有专人
服务,会实时反应。客户使用过程中,即使没撞到BUG,但怎么做最优配置、与其他系
统更好的集成,包括技术培训、软件升级等,只有原厂厂商最清楚,这也是我们可以提
供的服务。

6:开源后的销售策略

开源后,一般的客户使用开源版即可。但对于一些客户,需要使用我们闭源的功能,或
者只是想获得我们的技术支持,就需要购买我们的企业版。企业版的定价策略与传统软
件没有区别,但我们需要强调服务的价值,争取按照年服务费的方式销售。

但开源改变了销售的方式,一般的客户都成为了免费客户,让我们无利可赚。但是这些
免费客户形成了TDengine的庞大用户群,他们给TDengine带来了传播,给TDengine提供
了快速的市场反馈,而且无形中将我们竞争对手的市场空间大幅减小。

通过开源,我们获客的渠道主要来自线上渠道,而且主动咨询我们的客户已经对产品有
了一定的了解,PoC的环节也将大为缩短,直接的销售成本将大幅下降。从我们7月份开
源后的效果来看,三个月的时间,主动联系我们的客户已经有数百家。对于传统的2B软
件销售而言,这个数字是相当惊人的数字。

但是销售本身并没有改变,开源只是带来了大量有效的销售线索,我们仍然需要销售人
员与客户进行仔细的沟通。这种沟通,在我们品牌地位完全建立之前,除电话、微信沟
通外,还需要面对面的进行,详细了解他们的痛点、帮助他们解决,无捷径可走。

因此我们目前的销售策略是:线上引流,线下成交。

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...