Kermit 45 岁:C-Kermit 时隔 15 年重磅更新
Celebrating 45 Years of Kermit with the First New C-Kermit Release in 15 Years
作为 Debian 的维护者,我接手了拥有 45 年历史的 Kermit 项目。这是 C-Kermit 自 2011 年以来首次发布新版本。面对这个古老的 C 代码库,我不仅修复了数十年的安全漏洞和 Bug,还新增了 IPv6 支持及近 2000 个测试用例。从国际空间站到 HP 48GX 计算器,Kermit 曾连接无数异构系统。如今,在 Frank da Cruz 长达 44 年的坚守后,我们将其开源并持续维护,让这位计算界的隐形支柱继续在现代系统中发挥作用。
Frank 直接参与 Kermit 项目长达 44 年,从 1981 年的最初设计一直持续到 2025 年,他是唯一一位在开源项目中如此长久地保持创始人身份的人。
HN 评论区
50- jonathaneunice
我在 1989 年左右为 IBM 的 AIX 编译了 Kermit,以此研究"AIX 与其他 Unix 系统的兼容性如何"。在我的记忆中,Kermit 的源代码堪称一座丰碑,展示了单一软件能支持多少种不同、不兼容且非标准的平台。甚至比 Unix 本身还要多,因为它当时还能在 VMS 和各种非 Unix 系统上运行。我一生中从未见过如此多的 `#ifdef`,也从未见过如此复杂的"我到底是在这个平台还是那个平台上运行?它有这个功能还是那个功能?不对,那另一个功能呢?难道是 HP-UX?HP-UX 6?不对,是 7?不对,是 8?不对,那 VMS 呢?不对,SunOS 呢?不对,Unix System III 呢?"……如此这般,似乎永无止境。
Kermit 是那个时代可移植性的非凡丰碑。在那个年代,"可移植"往往意味着"我们已经单独适配了任何人曾经构建过、或者可能仍在使用过的每一种不兼容系统,无论其可能性多么渺茫"。
- chipotle_coyote
我主要记得在 BBS 时代基本忽略了 Kermit;等到"SuperKermit"出现时,它的性能已经能与 ZMODEM 相抗衡,但那时它看起来已经相当古老了。
后来,大约在 1991 年,一位朋友给了我他的大学 Unix 账号,让我可以玩玩 Gopher、Archie 和 TinyFugue(也就是 MUD/MUCK 等世界)。但有个前提:要从我的家用电脑连到他的账号,我得先拨号进入一个佛罗里达州的州级网络,该网络允许拨号接入并连接到各个大学校园的机器。这个网络运行在一台 IBM 小型机上。而且,它并没有直接连接到那台 Unix 机器,哦不。它连接到的是一台 VAX,而这台 VAX 与那台 Unix 机器处于同一个局域网中。
所以我得先拨号连到那台 IBM 机器,再从它连到 VAX,最后从 VAX 通过 telnet 连到 Unix 主机。
令人难以置信的是,这一切居然都能跑通,只是延迟有点烦人……但后来我试图从 Unix 机器往我的个人电脑传文件时,ZMODEM 不行,XMODEM 也不行。我想我还试过一两个别的方案,但已经忘了。
然后我想起了 Kermit,以及它那能搞定各种棘手连接的名声。它第一次尝试就成功传过去了。
- compiler-guy
Bill Catchings(那位协助 Frank da Cruz 制定原始规范并进行编码的本科生)至今仍在写博客。虽然他已经有一段时间没专门谈论 Kermit 了,但他有一两篇关于 Kermit 40 周年的有趣文章。
https://www.billcatchings.com/2012/04/frog-from-my-past.html
https://www.billcatchings.com/2013/11/kermit-oral-history-pa...
这里还有一个他提到的口述历史链接:
https://www.computerhistory.org/collections/catalog/10274641...
- donflamenco
一个很酷的功能是,你可以利用 C-Kermit 在开放的 SSH 会话中进行内联文件传输。虽然它无法在 screen/tmux 这类终端复用器上工作,但对于在客户端和远程主机之间快速传输文件来说非常实用。
远程主机只需要安装 kermit 或 zmodem(sz/rz),因为至少从 K95 版本开始就支持 zmodem 了。
有些付费的 SSH 客户端(如 SecureCRT)也具备基于 Zmodem 的这一功能。能在免费软件里拥有它真是太好了。
- rickydroll
天哪,这让我回忆涌上心头。我曾将 Kermit 移植到 Computervision 的 CGOS 环境中。它在用户社区中非常流行。在内部,它被用于通过终端集中器在系统间传输文件,当你不想走到机房、去翻找磁带、还要忍受 FUTIL 的时候,它就派上用场了。