关于开源的更多胡言乱语

工程 | Rod Johnson | 2007年9月22日 | ...

在题为关于Interface21的胡言乱语的文章中,一位SourceLabs的员工不同意我的观点,即提交权限对于提供可靠的开源支持是必要的。

在我回复之前:我想再次明确我之前在上一篇博客中已经说过的事情,但似乎被一些人误解了:**Interface21 不希望阻止其他人从 Spring 中获利**。我们的往绩证明了这一点。我们欢迎其他人撰写关于 Spring 的文章并提供 Spring 服务。或者基于 Spring 开发产品,例如Matt Raible的AppFuse。我们祝愿他们取得成功。Spring 的成功部分归因于其周围生态系统的丰富性。作为技术人员和公司,我们一直以来并且始终会培养这种生态系统。

我的观点是对一家特定公司的一位特定个人做出的评论,他声称开源是由无偿的业余爱好者编写的,并且对开源 IP 的经济回报无关紧要。

回到博客

Rod 声称可靠的支持需要对源代码的提交权限。这对于世界上所有其他支持公司雇用的非工程师来说肯定是一个惊喜。有人需要做销售、运营业务、修复服务器、更新网站、寻找新客户等等。提交权限无法为你带来这些,谁会告诉我这些对于成功的支持公司来说不是必需的呢?
这当然**是**胡说八道。让我换个说法
Rod 声称可靠的汽车修理需要训练有素的技工。这对于世界上所有其他汽车修理厂雇用的非技工来说肯定是一个惊喜。有人需要做销售、运营业务、修理厂房、更新网站、寻找新客户等等。技工无法为你带来这些,谁会告诉我这些对于成功的汽车修理厂来说不是必需的呢?
当然,能够进行三级支持的提交者只是支持公司的一部分——没有人说过不同的话。但是,就像汽车修理厂一样,如果你没有能够处理棘手问题的人,其他所有事情都无关紧要。例如:我通常去哪家汽车修理厂保养汽车,接待员效率高、友好(而且漂亮)。这很好。等候区有舒适的沙发、咖啡和有趣的阅读材料。但是,接待员和实体环境只是机器的一部分,该机器从根本上向我保证训练有素的技工可以修理我的汽车,并且拥有所有必要的设备并可以获取所有必需的零件。

以销售人员为例。如果没有销售人员,你就无法发展软件业务。但是,如果你有销售人员,但没有人能提供真正的客户价值,你就没有可持续的业务。(从短期业务角度来看,这很有吸引力——考虑到我们每年数百万美元的工程预算,我可以看到一家不需要进行此类规模投资的公司所具有的吸引力。)

尽管 Rod 想让你相信,但我(或任何其他人)都可以凭借 Spring 使用的 ASF 许可证提供高质量的 Spring 支持。你不需要是 Spring 提交者就可以修复其中的错误,也不需要 Interface21 的许可或认可即可使用它。如果有一个错误影响了你的生产服务器,我可以自己找到代码中的错误,与客户沟通,并确定最佳解决方案:补丁、变通方法、客户端代码更改等。我可以做到这一点,因为我可以访问重要的源代码——客户正在使用的那个——并且因为我通过仔细而乏味地准备工作了解了客户的需求。
胡说。我已经阐述了业务模式可持续性的论点。让我们从纯粹的技术角度来考虑问题。关于开源的一些基本要点
  1. 非提交者无法保证任何内容进入项目代码库。
  2. 提交权限是赢得
  3. 提交权限代表一种承诺
  4. 并非所有提交者都平等。承诺和获取持续存在。
  5. 可靠且可持续地完成某件事需要深度。
让我们更详细地了解一下。
  1. 非提交者无法保证任何内容进入项目代码库。 这是不言而喻的。他们可以贡献补丁,但无法保证补丁会被接受。这可能会导致你的客户使用需要在产品的下一个版本中重新检查的补丁解决方案,这可能会阻止客户获得软件演进的全部好处。即使错误报告是正确的并且补丁确实执行了有用的操作,我们通常也会发现,整天使用该软件的提交者会选择不同的、更好的方法来修复错误。客户也面临同样的问题。客户不希望使用软件的派生版本。
  2. 提交权限是赢得的。 提交权限是通过与社区的长期互动、证明的技术技能、提交高质量的补丁、持续承诺的证据以及不仅出于经济利益而修补偶尔的错误,而是为了促进产品演进的愿望而赢得的。例如,现在,我想你的销售副总裁会阅读此交流,担心在销售场合遇到棘手的问题,并说“我们能不能只找一个 Spring 提交者”?但这并不会改变这样一个事实,即你已经拥有 2 年(或你的公司成立多久)的时间来表达对推动 Spring 发展的兴趣,并且一直满足于让其他人承担所有繁重的工作,只要你试图坐在收银台旁。
  3. 提交权限代表一种承诺。 对开源项目的承诺就像养狗一样;一旦你选择养狗,你就不能在 6 周后厌倦它并抛弃它。否则,你就是在让别人替你收拾烂摊子。
  4. 并非所有提交者都平等。 在每个开源项目中,都会形成提交者权限的层级结构。负责人可能经常重写来自初级提交者的提交;无法保证他们的更改会原封不动地保留下来。在任何运作良好的软件项目中都会发生完全相同的情况。
  5. 可靠且可持续地完成某件事需要深度。 为了提供关键任务的 24x7 支持,你需要多人能够修复软件并作为一个团队工作。

声称你可以提供与实际编写代码的人相同的支持质量是荒谬的。你将多快找到修复错误的最佳方法?这些人整天都在研究它,并且进行了最初的设计。让我们考虑一个具体的支持问题。一位 SourceLabs 的员工甚至附和 Spring 用户报告的问题。该问题由 Juergen Hoeller 解决:Spring(和 Interface21)的联合创始人。

你不需要是 Spring 提交者就可以修复其中的错误,也不需要 Interface21 的许可或认可即可使用它。
这是文章中几个稻草人论点中的另一个。我在哪里说过你需要我们的许可或认可才能使用 Spring?

查看你的网站,似乎 SourceLabs 对开源项目的贡献比 OpenLogic 多(尽管对 Spring 的贡献肯定不多)。这使得你不同意我的帖子令人惊讶。

但它再次回到了我的主要观点:即使这种试图在不深入参与项目的情况下从支持中获利的方法能够奏效(它无法可靠地奏效),你除了在出现问题时(并且你有一个付费客户)之外,对项目没有任何贡献。你没有为推动软件发展做出任何贡献;你依赖于其他人来做到这一点,以便你有一些东西可以获利。你希望这些人足够天真,愿意免费这样做,并且你完全回避了需要大力推动项目发展以进行创新并满足其用户群不断变化的需求。再说一次,如果其他人这样做,那很好。

良好的支持意味着你与客户建立了个人关系。你知道他们的需求、他们正在使用的其他软件、他们最关心的事情,并且与他们建立了信任纽带,让他们相信你会一直陪伴他们。这远远超出了给他们一个寻呼机号码并说“如果它坏了,请打电话给我”。
显然。所有这些都很重要,并且是完整图景的一部分。这与当前的讨论无关,因为没有人说过不同的话。我们的客户对我们所有的服务都给予了极高的评价:支持、培训和咨询。
Interface21 的任何人都不能认真地声称积极参与完整的 Java 企业级堆栈的其他部分;Spring 尽管很强大,但它是一个框架,而不是一个堆栈。它无法提供企业客户所需的一切,并且仅支持 Spring 对于也需要 Hibernate 或 Struts 帮助的公司来说是不够的。事实上,Rod 必须说,如果你确实需要 Java 解决方案其他部分的帮助,Interface21 无法提供帮助,因为他们不控制这些项目的源代码。

Interface21 所做的是诚实地告诉客户它能提供什么,不能提供什么,以及它可以在哪些方面提供可靠的支持,哪些方面无法提供。我还应该指出,我们在企业 Java 领域拥有无与伦比的技术人才(请查看我们的团队页面),并且深度参与了越来越多的项目。据我从您的网站了解,SourceLabs 仅对 Apache Commons 做出了重大贡献:这几乎不是企业核心,而且仅通过一个人完成。所以,从本质上讲,您是在抱怨我对自己声称的能力过于谦虚。
我希望 Interface21 不是仅仅害怕来自那些了解正确提供支持比拥有 SVN 账户复杂得多的公司的竞争。
我们拥有许多满意的客户,我们的支持销售额创下季度新高,并且拥有非常强大的企业交易渠道,因此我们并不害怕竞争。我之前的博文中解释了为什么我们真的能够提供正确的支持,以及我们的全球化支持模式。据我所知,Interface21 的规模是 SourceLabs 的数倍,并且发展速度快得多,因此您根本没有资格对我们指手画脚。哦,鉴于您个人可以提供一流的 Spring 支持,我以为您会知道 Spring 框架的代码库是 CVS,而不是 SVN。
当然,Rod。你想为 Spring 销售支持,尽管去做吧。在市场上尽可能地发挥你的优势,但它毕竟是一个市场。如果你想争论说对提交者的控制使你成为最佳的支持选择,尽管去做,但正如我上面所说,这是一个相当薄弱的论点。
当然这是一个市场。我从未说过不是。我只是在解释为什么我们的 Spring 支持是无与伦比的。

你想为 Spring 销售支持,尽管去做吧。作为 Spring 的创始人兼联合负责人,我感谢您的许可。这真是慷慨。

但这与我的主要观点无关,我的主要观点是,要以可持续的方式可靠地支持开源,并且能够确保长期生产企业级开源软件,您不能仅仅试图从支持收入中获利:您必须投入大量努力和投资。

我认为每个人的立场在这一点上已经反复说明,并且我认为延长讨论没有太多价值。

我欢迎人们围绕 Spring 或其他任何东西赚钱。我只是认为任何企业都应该公开其所能提供的范围和质量。

获取 Spring 时事通讯

通过 Spring 时事通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您快速提升技能。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部