拥抱 Snap:Canonical 和 Slack 的访谈
对于像 Canonical 和 Slack 这样的公司来说,今年是重要的一年。对于 Canonical 创建的用于支持第三方应用程序的技术——特别是 snap 软件包,今年也是重要的一年。
我相信你们大多数人,甚至所有人,都听说过这个软件包管理器。事实上,它至少从 2014 年就已存在,但最初是围绕 Canonical 的 Ubuntu 手机操作系统开发的。现在,尽管手机操作系统已被取消,但 snap 软件包继续在服务器和桌面领域的操作系统中占据主导地位。
什么是 Snap?“snap”应用程序包是一个自包含的软件包,虽然它最初设计为托管在 Ubuntu 上,但该软件包可以在各种其他 Linux 发行版上运行。这不是您的传统 APT 或 YUM 管理器托管 DEB 和 RPM(或其他)软件包格式。
再次强调,snap 软件包的吸引力在于它们是自包含的(即容器化的)。它们被设计为自动更新且安全运行。snap 软件包与其依赖项捆绑在一起,这使其无需任何修改即可在所有其他主要的 Linux 发行版上运行。它也不依赖于任何软件包管理器或应用商店。但是,不要误解——软件包管理器或应用商店仍然可以托管一个或多个 snap 软件包;然而,snap 软件包不依赖于该管理器。
Snapcraft 是软件开发人员以 Snap 格式打包其软件程序的官方工具。
与 Canonical 和 Slack 的对话今年早些时候,1 月 18 日,Canonical 宣布了 Slack 的第一个 snap 版本。但是,为什么这个公告如此重要?我最近有幸与 Canonical 的 Evan Dandrea 和 Slack 的 Felix Riesberg 进行了对话。他们给了我想要的答案。
Evan 在 Canonical 的团队构建了平台,旨在让每个人的生活更轻松——即 Snapcraft。而 Felix 的团队利用相同的平台将出色的应用程序(如 Slack)带到您的 Linux 桌面。
首先,对于那些不熟悉 Slack 的人来说,它是一个企业软件平台,允许团队和企业(各种规模)进行有效沟通。它组织有序、易于访问,更重要的是,它比电子邮件提供了更好、更高效的沟通。Slack 不仅限于专业用途;它也可以用于更个人化的用途。
访谈Petros Koutoupis: 为什么选择 snap?
Evan Dandrea: 传统的软件包管理工作良好——在一定程度上。您看到的是由工程师团队精心策划并直接来自源代码的软件集合。此外,一次更新会影响多次更新。软件包必须是开源的,而传统的软件包系统对于专有应用程序效果不佳。维护该软件包非常令人头疼且难以跟上,可能需要长达六个月的时间才能将更新发布给用户。
Snap 软件包重构了这个模型以进行扩展。开发人员无需筛选数千个应用程序(包括依赖项)并逐个验证。在这个模型下,软件开发和发布的重点从发行版转移开,控制权交还给软件开发人员,从而在开发人员和用户之间建立更直接的联系。
snap 模型允许最终用户审查软件发布者,而无需通过 Linux 发行版。这可以实现更高质量的应用程序,并使这些应用程序更具可移植性。最初针对 Ubuntu 的任何内容都不必在 Ubuntu 上使用。
Felix Riesberg: 我们 [在 Slack] 提供 Debian 软件包作为替代方案,并且没有计划取消该方案。但我们选择 snap 的原因是它大大减少了更新软件应用程序带来的麻烦。开发周期缩短且更加频繁。我们能够更快地将更新后的桌面应用程序提供给用户。这与其说是基于功能的论点,不如说是一个安全论点。软件并非完美。Snap 软件包使更新过程非常快速和容易。版本控制对于 Debian 软件包来说也是一个挑战。Snap 软件包消除了这种痛苦。它还帮助我们消除了处理版本化依赖项以及在同一发行版的多个版本中重建这些相同软件包的负担。
无论是 Snap 还是 DEB,归根结底,我都会构建我的客户需要和想要的东西。在 Slack,我们不想剥夺用户的这些选择。我确实相信,当您希望一项技术取得成功时,snap 软件包可能是更好的选择,但我也不认为剥夺任何东西会是正确的方法。
PK: Felix,使用 snap 软件包,您能够多久为您的应用程序用户提供更新?
FR: 大约两到三天。
PK: 与传统的软件包系统相比,情况如何?
FR: 有时我们的用户会被卡住。并非所有用户都会运行 apt-get update
。除非应用程序发出尖叫声,或者我们给他们一个横幅(显示在应用程序中)表明不再支持某个版本,否则更新发生的频率会降低,甚至永远不会发生。此外,在某些版本的传统软件包中,库和依赖项可能太旧,无法支持新功能和错误修复。
PK: snap 软件包在最新的 Ubuntu 18.04 中集成度如何?
ED: 它今天已经非常集成——集成得如此深入,以至于您根本不知道您是从 snap 软件包还是 DEB 文件安装软件包。即使是传统的 APT 也适用于 snap 软件包。由于这种集成,搜索 PPA 所花费的时间大大减少。只需浏览您想要的内容并安装即可。就这么简单。
PK: snap 软件包和整个 Snapcraft 生态系统如何更好地帮助软件开发人员?
ED: 大多数人可能没有意识到的是,snap 软件包在 Ubuntu 16.04 之前就已存在。从那时起,snap 软件包的使用量一直在增长,并且采用情况持续良好。它现在是一项成熟的技术。为了说明这一点,过去一个月中已经安装了超过一百万个 snap 软件包。
当涉及到软件开发人员和提供商时,第三方往往更喜欢 Ubuntu 生态系统,并且由于 snap 软件包具有跨发行版兼容性,同一批开发人员可以轻松地将其游戏、应用程序等推送到其他 Linux 发行版。
FR: 我想补充一点,Slack 能够如此迅速地迁移到 snap 软件包的原因之一是 Canonical 的帮助。在整个开发过程中,他们对我们的请求非常支持和响应迅速。这真是太棒了。Canonical 从始至终都非常乐意提供帮助。
ED: [对 Felix 说。] 那是因为我们不想浪费您的时间。我们只是想帮助您完成您需要做的事情。我们想通过露面和帮助来创建开发者外展活动。
PK: Evan,Snapcraft 的未来会是什么样子?
ED: Snapcraft 将更加自动化,因为它会在发现漏洞时代表开发人员重建软件包。
今天,如果您构建并推送到我们的应用商店,清单将发送给 Canonical。当发现您的依赖项存在安全漏洞时,Canonical 将发送电子邮件通知您。在未来,我们设想我们将自动触发新的构建,为您解决此类漏洞。作为开发人员,您只需审查/测试构建,点赞并推送新构建的软件包到“稳定”分支。但是,应该注意的是,我们仍在评估此功能,尚未在内部对此做出承诺。
PK: 先生们,我谨代表 Linux Journal 感谢你们抽出时间与我们交流,并与我们的读者分享你们的想法和经验。
要了解更多关于 Snapcraft 的信息,请访问此处,要了解更多关于 Slack 及其出色的协作平台的信息,请访问此处。