转自:https://blog.yugabyte.com/why-we-changed-yugabyte-db-licensing-to-100-open-source/ 主要说明了YugaByte 100%开源的原因,以及与

其他开源软件的比较

We are excited to announce that YugaByte DB is now 100% open source under the Apache 2.0 license. This means previously closed-source, commercial, enterprise features such as Distributed Backups, Data Encryption and Read Replicas are now available in the open source project and are completely free to use. Same applies to upcoming new features like Change Data Capture and 2 Data Center Deployments. The result of this change is that we no longer have a Community Edition and an Enterprise Edition of YugaByte DB. There is only one edition of YugaByte DB now and that is fully open source.Additionally, we are announcing the release of our previously closed-source management software under a source available, free-trial-only license from the Polyform Project. These changes are effective as of the 1.3 release that became generally available today.

“Developers increasingly turn to PostgreSQL as a logical Oracle alternative as they move away from the monolithic database for microservices-based applications running on multiple clouds. However, PostgreSQL was not built for dynamic cloud platforms and open source alternatives are restricted. YugaByte DB fills this gap by supporting PostgreSQL’s feature depth for modern cloud infrastructure. And by making the database 100% open source, YugaByte DB removes other roadblocks to adoption and has made itself very attractive to developers building business-critical applications and operations engineers running them on cloud-native platforms.”

— Matt Asay, columnist and Head of Developer Ecosystem at Adobe

Industry observers and open source experts will note that our change goes against the recent trend of database and data infrastructure companies abandoning open source licenses for some or all of their core project. The following image summarizes how our change compares against the changes made by MongoDB, Cockroach Labs, Confluent (the primary commercial company behind Apache Kafka) and Elastic in 2018-19.

This post details our reasoning behind the change in the context of our goals for the YugaByte DB OSS project and also YugaByte as a commercial OSS company.

Why Open Source At All?

Over the years, open source has proven to be the most successful approach to develop and distribute business-critical infrastructure software. On day 1, it removes a user’s barrier to entry because the software comes with absolute freedom, thus making exponential adoption growth a real possibility. This adoption then powers the rapid feedback loop necessary for high-velocity, collaborative, community-driven development of feature-rich software while maintaining high quality and reliability. Security hardening, ecosystem integrations, extensibility frameworks and other enterprise features naturally get stronger as a result of this approach.

Can proprietary infrastructure software with a freemium tier achieve the same? Yes it can, but it would take a significantly longer period of time for the software to mature to the same level. Also, the loss of collaborative development and slower feedback loop means that there is a higher probability of the software never achieving market traction and thus fading away into oblivion.

Recent Open Source Licensing Changes

As we previously outlined in “Building a High Growth Business by Monetizing Open Source Software”, open source software and for-profit motive are not at odds with each other. A healthy commercial business is a must-have for continued investment in open source, especially in the context of single-vendor OSS projects. The net result is still more OSS than otherwise possible! To the purists who say OSS projects cannot start out as single vendor, we ask if they can imagine a world without MongoDB, Elastic, Confluent, Databricks, Redis Labs, InfluxData, HashiCorp and many more commercial OSS companies.

There are three non-mutually-exclusive models of monetizing open source infrastructure software.

  • Service, Support & Training
  • Open Core
  • Managed Service

While #1 and #3 are clearly understood, the open core monetization model is where much of the recent licensing debate has focused on. For database and data infrastructure companies, open core has traditionally meant reserving a certain class of “enterprise” features for a separate commercial edition. This class of features usually includes add-on capabilities such as the ability to build new data models, backup the data stored, secure data in-flight and at rest through encryption, multi-datacenter replication and more. Management software that sits outside the core and offers automated cluster creation, scaling, upgrades, backups and monitoring is also usually included in this class. A managed cloud service can be thought of as hosted management software with built-in cloud infrastructure orchestration. With this background information in hand, we are ready to analyze the recent licensing changes of the four companies we described earlier. We will see that each case is unique in its own right even though they all look the same to the casual observer.

MongoDB: AGPL to SSPL for Core DB

In October 2018, MongoDB changed the license of its core database from AGPL to SSPL. Since SSPL is not a OSI-approved license, this change essentially meant that MongoDB is now proprietary software. While AWS offering a competing DB-as-a-Service was cited as the reason, the reality is that this change was never about AWS. As the January 2019 launch of MongoDB-compatible AWS DocumentDB proved, MongoDB’s original AGPL license had indeed served the purpose of deterring AWS from hosting MongoDB as-is. MongoDB’s innovation has always been in its query language. AWS had to rebuild a server for that query language and run it on a Aurora-like storage architecture. This was a repeat of the approach followed by Azure Cosmos DB for its MongoDB-compatible API launch in 2017. It is unimaginable that the smart people at MongoDB did not understand these dynamics. We believe they still went ahead with SSPL because they wanted to hurt the multiple smaller MongoDB hosting providers that have sprung up over the years and migrate that portion of the managed cloud business over to their own Atlas service. No surprise that mLab, arguably the largest of such providers, agreed to get acquired by MongoDB only a week before the SSPL announcement. But what about the blowback from the open source community? Simple answer is that MongoDB is now big enough that it no longer has to pretend it cares about the spirit and ethics of open source.

Cockroach Labs: Apache 2.0 to BSL for Core DB

In June 2019, Cockroach Labs changed the license of its core database from Apache 2.0 to Business Source License (BSL) that was first created/adopted by MariaDB in 2016. BSL too is not approved by OSI and hence CockroachDB is now proprietary software. Again the reason provided was the threat of AWS offering a competing managed cloud service. However, the reality is that CockroachDB is not yet at the levels of adoption where AWS would be interested. So why did Cockroach Labs make the change? We believe the answer lies in the fact that painting AWS as a threat is good for press coverage and calling out Amazon Aurora, the fastest growing AWS service, as competition is good for market positioning. And what about open source community blowback? The calculation here seems to be that the number of detractors would be small and new users would not necessarily care once the brouhaha dies down.

Confluent: Apache 2.0 to CCL for Enterprise Features

Confluent is the primary commercial company behind Apache Kafka, a massively popular streaming platform. In December 2018, it announced that it is changing the licensing of some of its enterprise features from Apache 2.0 to Confluent Community License (CCL). CCL is a source available license that disallows features to be used by a managed service that competes with Confluent’s commercial offerings. Since Apache Kafka is an Apache 2.0-licensed OSS project managed by the Apache Source Foundation (ASF), it can be hosted by any cloud provider without issues. AWS had already announced its Managed Streaming for Kafka (MSK) service in November 2018 before the Confluent announcement. So Confluent’s stated rationale of disallowing AWS from profiting off Confluent-developed enterprise features indeed makes sense.

Elastic: Closed Source to Elastic License for Enterprise Features

AWS has been offering its Elasticsearch service since Oct 2015. So AWS was not the stated reason for Elastic’s licensing changes in Feb 2018. Elastic released the source code for X-Pack, its previously closed-source commercial software, under a new source available license called Elastic License (EL). Elastic did so to promote the collaborative development and rapid feedback loop that we previously mentioned. Both Apache 2.0 (aka OSS) and Elastic License code reside in the same GitHub repo and build targets are available to build pure OSS code as well as the OSS+EL code. Like all recent source available licenses, Elastic License disallows competition from managed services.

DB Monetization is Dead, Long Live DBaaS Monetization

Keeping aside the recent licensing trends for a minute, can we learn anything from the history of OSS DB monetization? Yes we can. First is to understand the reasons behind the success of Amazon Aurora in monetizing the massive adoption of both PostgreSQL and MySQL. Second would be to do the same for MongoDB Atlas which has successfully monetized the massive adoption of MongoDB. Databricks and AWS EMR monetization of Apache Spark are other examples from the data analytics market. In all cases, efforts to monetize the OSS directly were marginally successful but efforts to monetize the cloud service have been wildly successful. The insight here is users take a long time to build trust with a business-critical DB but once that trust is established, they are willing to pay top $$$ for the convenience of the cloud DB-as-a-Service (DBaaS) especially when their adoption reaches scale.

We at YugaByte believe that if AWS wants to build a managed service based on an OSS project, there is almost nothing that can be done to stop it — competition from AWS is simply the price to pay for developing OSS. Restrictive licensing including AGPL can slow down AWS but cannot stop it so the real impact of such licensing is lower user adoption. And even if AWS builds a service, that becomes a great validation of the staying power of the OSS project and gives users more confidence that their investment will remain protected through multi-party competition. But this means that a commercial OSS company now has to compete with AWS on the merits of an exceptional DBaaS experience and not on the merits of the core OSS DB. The company to emulate here is Elastic which highlights its differentiation against AWS in excellent detail here.

OSS Projects vs. Commercial Products

Given the above insights, we decided to not only make YugaByte DB 100% OSS but also draw a clear line of separation between the OSS DB project and our commercial DBaaS offerings. Effective immediately, the self-managed DBaaS features of the previous Enterprise Edition are rebranded into our YugaByte Platform offering. We are also announcing the Early Access Program for YugaByte Cloud, our fully-managed DBaaS offering on AWS and Google Cloud.

The source code for YugaByte Platform is now available in the same GitHub repository as YugaByte DB under the Polyform Free Trial License 1.0 (PFTL). Given the free-trial-only usage restriction PFTL imposes on users, it does not meet the definition of Open Source and hence YugaByte Platform should be treated as proprietary software. The default build target in the GitHub repository generates only the OSS binary to ensure that users who are not interested in the PFTL-based commercial DBaaS features can continue to have a frictionless experience. For users interested in collaborating with the committers on the commercial features, this change allows a more open forum to work together including discussing issues, offering design feedback and even submitting their own fixes upstream. This approach is similar to that of Elastic with the notable exception that YugaByte DB’s enterprise features are OSS while Elastic’s are not.

Oracle for the Cloud

We have never been shy of acknowledging our ambition of becoming the Oracle for the Cloud.However, many before us have tried and failed to do so. What makes us different? The difference lies in the truly world-class strength of our team and the clarity with which we as a team are pursuing our ambition. We see three essential execution vectors to achieving our ambition.

1. Oracle-like Depth in Distributed SQL

With so many ex-Oracle database engineers in the team, it is clear to us that application developers will give Oracle-like importance to a new database only if the client language of the database provides Oracle-like data modeling agility while ensuring high-performance queries. This is where YugaByte SQL (YSQL) comes in. YSQL reuses PostgreSQL’s query layer as-is but runs on top of DocDB, YugaByte DB’s Google Spanner-inspired distributed document store. This combination gives YSQL two unique strengths that ensure an Oracle-like depth can be experienced by developers.

  • Support for a wide-range of existing PostgreSQL constructs such as stored procedures, functions, triggers, extensions and more. This covers the “SQL” depth aspect of Distributed SQL where existing enterprise-grade SQL is designed to work on distributed storage architecture with high performance and reliability.
  • Upcoming support for new SQL constructs to define co-partitioned tables, row-level geo-partitioning as well as enhancements to SQL drivers for topology-aware routing to ensure high performance queries. This covers the “Distributed” depth aspect of Distributed SQL where SQL gets enhanced to exploit the underlying distributed storage architecture to the maximum potential.

2. PostgreSQL-like Massive OSS Adoption

Simply having Oracle-like depth in Distributed SQL is not enough. Developers must be able to experience this depth in the context of their own applications. This means delivering broad as well as deep integrations with application development frameworks, object relational mappers as well as installers for any cloud infrastructure. Developer evangelism efforts to bring the benefits of these integrations to the respective communities have to be undertaken. PostgreSQL has become massively popular over the years by following this approach. As a distributed incarnation of PostgreSQL, we are well positioned to execute a similar adoption approach.

3. Aurora-like DBaaS Monetization

Without an effective monetization strategy that enables continuous re-investment into the OSS project, the OSS project risks atrophy in the long run. As we highlighted previously, DBaaS-driven monetization is the way to go. Amazon Aurora is the poster child for highly successful fully-managed DBaaS. However, enterprises also need the additional flexibility to self-manage the DBaaS on their own infrastructure if they so desire. That is exactly what YugaByte Cloud and YugaByte Platform are designed to do.

Summary

YugaByte DB with its Google Spanner-inspired storage architecture and PostgreSQL-based query layer is built to provide modern applications with Oracle-like depth in distributed SQL, but on cloud native infrastructure. With the licensing changes highlighted in this post, we want to enable engineering teams to move faster than ever before towards such cloud native applications. We understand that many will find our vision too ambitious and some may even find it impossible. Rather than argue with such observations, we agree that the burden of proof is on our shoulders. Watch this space for our progress, you will be pleasantly surprised

Why We Changed YugaByte DB Licensing to 100% Open Source的更多相关文章

  1. 100 open source Big Data architecture papers for data professionals

    zhuan :https://www.linkedin.com/pulse/100-open-source-big-data-architecture-papers-anil-madan Big Da ...

  2. yugabyte docker-compose 运行试用

    以前运行yugabyte 使用的是yb-docker-ctl,现在直接可以方便的使用docker-compose 运行了 pull image docker pull yugabytedb/yugab ...

  3. 电子技术中的dB

    (所有内容来自网络: http://www.mscbsc.com/askpro/question13066) dB是功率增益的单位,表示一个相对值 分贝是用来表示 "功率"的数量对 ...

  4. Cocon90.Db调用方法

    Cocon90.DB 使用说明 开源库:https://github.com/Cocon90/Cocon90.Db Sqlite位置:https://www.nuget.org/packages/Co ...

  5. 有用的 Mongo命令行 db.currentOp() db.collection.find().explain() - 摘自网络

    在Heyzap 和 Bugsnag 我已经使用MongoDB超过一年了,我发现它是一个非常强大的数据库.和其他的数据库一样,它有一些缺陷,但是这里有一些东西我希望有人可以早一点告诉我的. 即使建立索引 ...

  6. PayPal高级工程总监:读完这100篇论文 就能成大数据高手(附论文下载)

    100 open source Big Data architecture papers for data professionals. 读完这100篇论文 就能成大数据高手 作者 白宁超 2016年 ...

  7. 基于binlog来分析mysql的行记录修改情况(python脚本分析)

          最近写完mysql flashback,突然发现还有有这种使用场景:有些情况下,可能会统计在某个时间段内,MySQL修改了多少数据量?发生了多少事务?主要是哪些表格发生变动?变动的数量是怎 ...

  8. CNCF CloudNative Landscape

    cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...

  9. 基于binlog来分析mysql的行记录修改情况

    https://www.cnblogs.com/xinysu/archive/2017/05/26/6908722.html import pymysqlfrom pymysql.cursors im ...

随机推荐

  1. 「UR#6」懒癌

    「UR#6」懒癌 妈妈我居然看了六个小时题解,快救救乌干达的可怜儿童吧. 接下来开始膜官方题解: ​ 其实就算有上面两个结论也不是很好想到任意复杂度的做法,关键在于要想到一个人是怎么推断自己的狗是不是 ...

  2. 初学zipkin搭建链路追踪服务注意事项

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/fsy9595887/article/det ...

  3. Scala 系列(一)—— Scala 简介及开发环境配置

    一.Scala简介 1.1 概念 Scala 全称为 Scalable Language,即"可伸缩的语言",之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长.Sc ...

  4. Quartz时间配置(周期任务)

     序号 说明  是否必填  允许填写的值 允许的通配符  1  秒  是  0-59    , - * /  2  分  是  0-59   , - * /  3 小时  是  0-23   , - ...

  5. .net core webapi通过中间件获取请求和响应内容

    本文主要根据中间件来实现对.net core webapi中产生的请求和响应数据进行获取并存入日志文件中: 这里不详细介绍日志文件的使用.你可以自己接入NLog,log4net,Exceptionle ...

  6. Entity Framework Codefirst的配置步骤

    Entity Framework Codefirst的配置步骤: (1) 安装命令: install-package entityframework (2) 创建实体类,注意virtual关键字在导航 ...

  7. 如何理解Android中的xmlns

    转发自:https://www.jianshu.com/p/6fcaffaeffd2 作为一名 Android 开发,我想大家对xmlns并不会陌生,因为在写布局文件(如下代码所示)的时候经常会碰到, ...

  8. js流程控制语句(三)

    如果在语句中需要声明变量时:最好给他们赋予初始类型值[js中变量声明使用var属于弱类型声明,若只声明则均表示为undefined,在后面语句计算中可能会产生错误计算];相应的类型变量需要如下方式进行 ...

  9. PL/SQL的结构

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用.PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/S ...

  10. JavaWeb 之 Filter 验证用户登录案例

    需求: 1. 访问一个网站的资源.验证其是否登录 2. 如果登录了,则直接放行. 3. 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录". 代码实现: import j ...