1. 前言

去年 10 月,IdentityServer 的两位创建者和维护者 Dominick Baier 和 Brock Allen 宣布,他们当前的商业模式本质上是不可持续的,因此他们将使用互惠公共许可(Reciprocal Public License,RPL)的付费许可模式,并在一家新公司 Duende Software 下提供 IdentityServer5。

近期,微软宣布他们的 ASP.NET 6 模板将继续包含 Duende 的 IdentityServer 依赖项。IdentityServer 曾经是一款使用宽松的 Apache 2.0 许可的免费开源产品,并且是 ASP.NET 开发人员常用的处理 OpenID 和 OAuth 2.0 令牌的工具,因此多年来微软的ASP.NET 模板一直会默认包含该库。如今, 微软的流行模板中包含的 IdentityServer 要求年收入超过 100 万美元的用户每年最少支付 1,500 美元的许可费。

.NET 社区非常有风度地回应了这则公告,他们仔细考虑了自己在通过支持独立软件供应商,促进 .NET 开源生态系统创新发展方面的作用,并认同 IdentityServer 通过年费的形式征收许可费用,从而维护代码库的行为非常可取,因为这总好过维护者放弃项目。

然而,.NET 社区的众人陷入了恐慌,他们要求与.NET开源软件的经理讨论一些模板中包含的代码。最糟糕的问题在于,.NET开源软件生态系统真正的管理者乃是微软。

如今,围绕微软、IdentityServer 以及免费与付费“开源”软件的话题讨论层出不穷,因此我决定在本文中一起来探讨一下.NET开源软件的免费午餐结束,对用户来说意味着什么。

2. 人心不足蛇吞象

每当看到人们滥用免费/定价过低/未经授权的资源时,我就会想起一句俗语:人心不足蛇吞象。

虽然从小商店偷一块糖果不会被起诉,但是如果有人抢银行,那么一定会被绳之以法。

说起开源,如果维护者只需要支持少量的用户,而且需求都很类似,那么其实成本并不高,但一旦项目达到临界点,而且用户的要求超出了维护者的提供意愿,那么必须有一方付出代价。

IdentityServer 的用户实在是贪心了。在过去的十年里,大多数IdentityServer用户都在贪婪地享用免费的晚餐,如今账单来了。

不难想象,微软的这个帖子(https://github.com/dotnet/aspnetcore/issues/32494)中出现了各种观点:

  1. 这是一项必不可少的服务,微软应该收购Duende,并再次免费提供 IdentityServer;
  2. 没有人阅读 Duende 的定价条款中有关“任何年收入低于 100 万美元的公司或非营利组织都可以免费使用IdentityServer”的规定,因此很多人在抱怨;
  3. 为仍在Apache 2.0下免费开源的IdentityServer4做贡献,实在是太难了;
  4. 也许微软应该使用其他产品来代替IdentityServer,例如 https://github.com/openiddict/openiddict-core ,或 https://github.com/simpleidserver/SimpleIdServer ,这样免费的午餐就可以持续下去,直到这些项目也遇到与IdentityServer相同的可持续性问题。

而对于微软选择在某些模板中包含 IdentityServer,而不是包含采用了 RPL 条款的核心库,人们的反映也很荒谬。

当突然要求开发人员每年支付 1,500 美元、4,000 美元或其他费用来购买“关乎到业务”的服务时,他们就马上开始哭穷。

要知道,开发人员的专业知识不是能用金钱买到的,而且购买一个优秀的、经过实战考验的、文档完善的、高度可重用的解决方案,比如由领域专家构建的 IdentityServer,不仅比你自己花钱雇开发人员来做这件事便宜得多,而且风险也比较低。如果应用程序中身份验证和授权错误之类的关键问题出错,那么肯定会让你付出惨重的代价。

如果你是公司软件这一领域的负责人,而且在为 Duende 区区几美元的许可成本而苦恼,那么请你帮个忙,辞职走人吧,因为你根本没资格胜任这个职位。

我怀疑网上的有些人抱怨许可成本和装穷,其实与成本无关,而是与采购部门有关。

3. 采购部门的不满

开源技术传播如此迅速,且产生了如此巨大的价值的最大原因之一是,无需许可,任何人都可以采用、使用、修改和重新分发经过审查的开源软件,而无需考虑部门预算。

但是,一旦维护人员开始收费,作为他们的专业知识和经验的补偿,则开发人员就只能与采购部门交涉,获得批准才能购买这些产品。

采购部门审批机制的存在是为了彻查供应链中每个供应商的“风险”。通常采购机构都不会产生任何有意义的结果,只会让双方之间的交易变得更加昂贵和困难,因此软件开发人员都不希望牵扯到这个环节。

对于 .NET 开发人员遇到的这种困境,我并不是特别难过。毕竟,这主要是他们的错。

4. 免费午餐结束

虽然你可以一直免费使用开源项目,但一旦他们决定收费,你就只能任由他们摆布了。

就 IdentityServer 而言,我认为新版本的付费条款已经非常慷慨了:对 IdentityServer 开源软件的支持将一直持续到 2022 年 11 月!

换作是其他项目,可能会完全放弃,任由用户自生自灭。

开源软件在 .NET 生态系统中的流行度越来越高,而且这种趋势只会随着时间的推移而加速,因此.NET 中的可持续性问题会更加普遍。几年前,微软就曾经为了用户承担起所有费用,并提供免费的库,结果只让.NET 生态系统陷入了一团混乱,我们不能再重蹈覆辙。

免费午餐已经结束,你清醒一点吧。

当你选择各种包和技术来维护和构建.NET 应用程序时,就应该做好付费的心理准备。因为这是避免未来意外和供应链冲击的唯一方法:现在就将其算入成本。

你应该养成向上游依赖项贡献价值的习惯,通过直接向你使用的项目做贡献、捐款,或者是其他更好的形式,从维护者手中购买增值产品和服务。另外,你也可以通过博客文章、视频和课程来帮忙推广他们的项目。如果你的业务软件中使用了某个产品,那么就应该通过各种途径回馈,然而,大多数用户都没有选择这么做。

与开源软件项目建立良好的交换价值循环是“开源可持续性危机”的必然结果,每个人都可以因此而受益。因此,现在就开始行动吧,为开源项目做贡献,因为这些项目的持续发展最终也会触及你的自身利益。

原文作者:Aaron Stannard

原文标题:.NET Open Source: What Happens When the Free Lunch Ends?

原文链接:https://aaronstannard.com/dotnetoss-free-lunch-ends/

译者 | 弯月 责编 | 欧阳姝黎 | 出品 | CSDN(ID:CSDNnews)

译文标题:.NET 开源的免费午餐结束了?

译文链接:https://www.sohu.com/a/472062543_115128