云计算正在“抹杀”开源?

【编者按】开源之初,无数开发者满怀热情,无偿分享自己的代码,希望为世界贡献自己的一份力量。然而当开源加入商业模式,开发者们慢慢意识到,事情不太对劲。开源代码带来的丰厚回报富了别人的腰包,自己却连句谢谢都没捞着。于是有人提出疑惑:我是否还要继续当雷锋?

英文:Death of an Open Source Business Model

参考链接:https://joemorrison.medium.com/death-of-an-open-source-business-model-62bc227a7e9b

作者:Joe Morrison

编译 | 弯月  责编 | 张文

出品 | CSDN(ID:CSDNnews)

两年前,数据库制造商 Redis Labs 将公司开发的 Redis 模块从 AGPL 迁移到将 Apache v2.0 与 Commons Clause 相结合的许可证,并对销售许可证涵盖软件做出限制。RedisLabs 的联合创始人兼首席技术官 Yiftach Shoolman 表示:“多年来,云提供商通过销售基于开源项目的云服务,可从中获利数亿美元,可这些项目实际上并不是他们自己开发的,比如 Docker、Elasticsearch、Hadoop、Redis 和 Spark 等。这阻碍了社区投资开发开源代码,因为任何潜在的好处都归云提供商而不是代码开发人员或他们的赞助商。”

不久以后,MongoDB 也宣布:其开源许可证从 GNU AGPLv3 切换到 Server Side Public License (SSPL)。新协议要求以 MongoDB 为基础提供商业化的云计算服务也必须开源其程序代码

关于修改开源协议的风波可谓一波未平一波又起。近日,有关新版 Mapbox GL JS 专有化的消息震惊了很多人(官方 2.0.0 的更新日志表示:“mapbox-gl-js is no longer under the 3-Clause BSD license.”)。

Mapbox 是为 Foursquare、Pinterest、Evernote、《金融时报》、天气频道、优步科技等公司的网站提供订制在线地图的大型供应商。Mapbox GL JS 自 2014 年首次发布以来,广泛受到了 Web 开发人员的欢迎。如今,Mapbox 仍然拥有 800 多个开源项目,就代码库的活跃状态而言,在 Github 上名列前 40 名。

虽然,这些公司修改开源协议的原因众多,但其中的一个共同点便是:云计算

 

RedisLabs 和 Mongo DB 的经历

 

为何 Mapbox 会做出这样的决定?首先我们来了解一下 Mongo DB 和 Redis Labs 这两家公司的经历。

大约两年前,Ben Thompson 撰写了一篇精彩的文章《AWS, MongoDB, andthe Economic Realities of Open Source》(https://stratechery.com/2019/aws-mongodb-and-the-economic-realities-of-open-source/)。文章的内容可以大致总结为:每当一款开源软件流行起来,云提供商就会利用这些开源代码构建出同等的服务,然而,这些云提供商在获利之后不会对开源社区做出任何回馈,甚至连句谢谢都没有。更糟糕的是,面对这种情况,开源软件根本没有还手之力。

为了维护自身的利益和发展,Redis Labs 和 MongoDB 相继修改了开源协议。虽然两家的此举引发了很多人的抨击,但是事实证明之后两家的发展非常迅速。8月,Redis Labs 发表消息说,获得了 Bain Capital Ventures 和 TCV 近 1 千万美元的投资,公司市值超过了 10 亿美元。而 MongoDB 的市值从那以后也增长了 275%。

图:来自 Google 财经

 

Mapbox 的困境

 

与 Redis Labs 和 MongoDB 的经历相似,Mapbox 的产品代码被微软的云服务提供商 Azure 复制到了他们的服务中使用。

去年,Azure 宣布 Azure Maps 采用了 Mapbox GL JS,宣称其是关键性的服务。Mapbox甚至在公司博客上发布了这则消息。

虽然 Azure 宣布 采用 Mapbox GL JS 是一件好事,但也成了 Mapbox GL JS 重新考虑是否保持开源的导火索。毕竟,在竞争极其激烈的云计算世界中,一旦某个云提供商开始提供某个服务,很快其他云提供商就会纷纷开始效仿。很快, Mapbox 就发现自己也面临与 Mongo 和 Redis 类似的困境,将自己数万亿美元投入的研发成果拱手让给其他科技巨头。

然而,与 Mongo 和 Redis 不同,Mapbox 并没有修改产品的开源许可,而是进行了一刀切。旧版的 Mapbox GL JS 仍然是一个非常成熟的实用工具库,仍然保留原始的许可。新版本虽然对外公开(所有代码均发布在 Github 上),但已不再是开源。

可能有人会认为这是一场悲剧,因为这会导致社区对新版本的贡献下降。但请不要忘记, Mapbox GL JS 的主要开发都来自 Mapbox 员工。虽然该项目吸引了全球很多热心的工程师,融合了很多人的付出,一旦转为专有,这些热心的工程师都会非常难过。但是,Mapbox 的此举也是为了生存,相信每个人都能理解。

 

开源的美好时光

 

曾几何时,我真的相信即便开源自己的代码,各个公司仍然能够取得成功。开源是互联网文明高度发展的新兴产物,毕竟有那么多无私的开发人员在默默地为开源做贡献,很多人都以为开源做过贡献而感到自豪,甚至可以成为个人简历中的闪光点。

然而,如今我有点开始怀疑了。虽然我仍然相信开源是造福全世界的强大力量。但科技巨头一味地投机取巧,利用开源软件攫取巨额利润,却不知回报开源社区。在一次又一次的失望之后,人人都开始感到自危。

虽然我们都感到很悲哀,但不得不承认云计算正在抹杀开源。

  • 80
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值