Протокол Kermit родился в 1981 году в Колумбийском университете. Фрэнк да Круз и Билл Кэтчингс придумали его, чтобы связать несовместимые DEC-20 и IBM mainframes. Поэтому Kermit сразу умел работать с системами, которые переваривали не больше 96 байт за раз, передавать 8-битные файлы по 7-битным линиям, перекодировать ASCII, EBCDIC и разные Unicode и не падать на ненадёжных serial-линиях. К 1982 году его портировали на MS-DOS и Unix. Флагманом стала C-Kermit — реализация на C с поддержкой TCP, интерактивным CLI, скриптовым языком с чертами shell, Lisp и expect и оптимизациями для быстрых линий: jumbo packets, sliding windows, streaming modes.
Kermit успел полетать на МКС, собирал данные с датчиков во время ураганов, работал в почтовых системах и на производстве Boeing 787. Джон Гёрзен использует его как ssh-обёртку для передачи файлов через вложенные ssh, sudo, su, как BBS-клиент и для обмена с калькулятором HP 48GX. С помощью Kermit по-прежнему шлют прошивки во встраиваемые устройства, а фанатам ретротехники он наверняка пригодится. Даже при общем TCP/IP перекинуть большой файл между Linux, Windows, macOS, Android и iPad непросто. Гёрзен просто поднимает Kermit, на Windows — форк ckwin, и гонит файлы по LAN. Для просмотра локальных IP в C-Kermit 11 добавили команду show interfaces.
Колумбийский университет долго держал проект на самофинансировании; коммерческая лицензия не пускала C-Kermit в дистрибутивы. В 2011-м, через 30 лет после старта, университет закрыл проект, но выложил C-Kermit под BSD. Фрэнк да Круз продолжил поддерживать его уже вне университета и занимался этим до выхода на пенсию в 2025 году. Гёрзен, мейнтейнер Debian, начал патчить старый код. Преобразования символов и переносов строк в C-Kermit сегодня только мешают — из-за них бывает порча данных. Он починил кучу проблем безопасности, включая память и защиту от злонамеренного удалённого хоста. Добавил IPv6 с условной компиляцией и fallback для сетей без реальной поддержки IPv6. Тестов стало почти 2000: unit-тесты и Python end-to-end. Гёрзен нашёл баги, которым десятки лет, включая FIONREAD на macOS, баги pty-драйвера NetBSD и ошибки в самом протоколе. Проверил совместимость с gkermit, ekermit и прошлым релизом C-Kermit 9.0.302.
История проекта почти не знала VCS, пока Джеффри Альтман не импортировал релизы в Git. Гёрзен убрал отключённый код за #ifdef COMMENT, и строк в C-Kermit стало меньше. Работа вышла за рамки Debian-патчей, поэтому появился проект Open Kermit. CI гоняет тесты на Linux x86_64/arm64, macOS, FreeBSD, NetBSD, OpenBSD и собирает бинарники, включая статический Linux-сборник на musl libc. C-Kermit 11 посвящён Фрэнку да Крузу: он участвовал в проекте 44 года, дольше любого другого основателя open source. Ричард Столлман начал GNU Emacs в 1984-м, но отошёл от дел примерно в 2008-м. Kermit соединял системы от космической станции до карманных калькуляторов и до сих пор остаётся рабочей лошадкой: прошивки в радио и файлы по serial. Спасибо, Фрэнк.