I is for When Your Stack Learns to Share | 开放源码软件 ABCs
书呆子们,大家好!欢迎回到《开放源码软件 ABC》,在这里我们将一个字母一个字母地解读开放源码软件世界。我是泰勒,今天我们将探讨互操作性(I for Interoperability)--是的,这很拗口,但相信我,这东西至关重要。
让我给你描绘一下互操作性的重要性。你知道当你试图让两件技术产品相互对话,但它们基本上说的是不同的语言时的那种感觉吗?这就是我们要反对的。互操作性能让不同的系统友好相处,而不是在你试图连接它们时乱发脾气。
在开源世界中,互操作性是这样的--它不仅是一种功能,实际上还是一种信仰。为什么这么说呢?因为没有人愿意在自己的小圈子里构建软件。开源的全部意义在于共享和协作,这意味着你的东西需要与其他人的东西协同工作。
让我们真实地了解一下这一点的重要性。首先,如果没有良好的互操作性,无论你开始使用哪种技术栈,基本上都会被锁定。想更换数据库?祝你好运。需要集成新的服务?希望你喜欢从头开始编写自定义适配器。但有了适当的互操作性,你就可以像用乐高积木搭积木一样随意搭配工具。
在互操作性方面,开源社区已经取得了绝对的成功。就拿 HTTP 和 JSON 来说,它们并不是某个人随意编造的标准。它们是网络上几乎所有事物相互交流的支柱,而且深深植根于开源。
想了解互操作性的实际应用?看看容器吧。Kubernetes 和 Docker 的协同工作就像一堂大师课,让我们了解不同的工具可以如何相辅相成。或者看看 Electron,它能让你构建的桌面应用程序在任何地方都能运行,无论你使用的是 Windows、Mac 还是 Linux。这就是良好互操作性的力量。
但我们也不能假装这一切都是阳光和彩虹。让不同的系统协同工作是一件非常麻烦的事情。有时你会遇到相互竞争的标准,因为显然我们不能拥有美好的事物。版本兼容性可能是一场噩梦--处理过依赖性地狱的人都知道我在说什么。要让所有东西都能很好地运行所需的配置呢?有时感觉就像蒙着眼睛解魔方。
那么,如何才能不搞砸呢?首先,尽可能采用开放标准。是的,也许你可以建立自己的专有协议,但除非你有非常充分的理由,否则就......不要。编写清晰的文档--我指的是真正清晰的文档,而不是那种 "很明显这是如何工作的",让你想把笔记本电脑扔出窗外的文档。
测试也至关重要。你需要定期检查你的软件是否能与其他软件很好地配合,因为相信我,如果你不这样做,软件就会以各种奇妙的方式崩溃。多参与社区活动,这样你才能了解真正重要的标准和实践。
不过,让人感到困惑的是,他们认为互操作性只是让东西能一起工作。但互操作性远不止于此。它关乎创造可能性。当系统可以有效地相互对话时,你就可以创造出其他系统无法实现的东西。这就好比赋予开发人员超能力,但不是飞行或隐形,而是让不同的软件协同工作,而不用辞掉工作。
这是开放源码软件 ABC 中的第九个字母!下一次,我们将深入研究 JavaScript 框架的 J,因为显然,我们需要几百种不同的方法来构建网站。
在此之前,请保持代码的整洁和 API 的完善。
祝你平安