C‑Kermit 11 Release – First New Version in 15 Years Revives a 45‑Year‑Old Protocol

C‑Kermit 11이 제공하는 내용과 왜 중요한가

C‑Kermit 11은 15년 만에 처음으로 나온 flagship Kermit 구현의 새 버전으로, 45년 된 직렬 파일 전송 프로토콜을 현대 보안, 네트워킹, 테스트 표준에 맞게 끌어올립니다. 이 출시는 SSH‑랩핑, 임베디드 펌웨어 업데이트, 크로스플랫폼 LAN 전송과 같은 현대적인 사용 사례에 Kermit을 적용 가능하게 하면서도 legacy 시스템에서 실행할 수 있는 역사적 능력을 유지합니다.


역사적 배경: 1981년 직렬 브리지에서 오늘날의 네트워크 세계로

  • 1981년에 Frank da Cruz와 Bill Catchings는 이질적인 메인프레임(DEC‑20, IBM) 간에 노이즈가 많은 직렬 링크를 통해 신뢰할 수 있는 파일 전송을 가능하게 하기 위해 Kermit 프로토콜을 만들었습니다.
  • 1982년까지 Kermit은 MS‑DOS와 Unix로 포팅되었고, C 구현(C‑Kermit)은 사실상의 참조가 되어 TCP 지원, 인터랙티브 CLI, Lisp 유사 스크립팅 언어를 추가했습니다.
  • Kermit은 국제 우주 정거장, 허리케인 센서 데이터 수집, Boeing 787 제조, 임베디드 장치 펌웨어 업데이트와 같은 고위험 임무에 사용되었습니다.
  • 2011년 컬럼비아 대학이 Kermit 프로젝트를 취소한 후, 코드는 BSD 라이선스로 재라이선스되었고 Frank da Cruz가 2025년 은퇴할 때까지 유지 관리되었습니다.

수십 년 된 C 코드베이스의 현대화

보안 및 신뢰성 향상

  • 수많은 메모리 안전 버그를 수정하고 악의적인 원격 익스플로잇에 대한 보호를 추가했으며, 이는 나중에 scp에 적용된 패치의 보안 강화와 유사합니다.
  • 모호한 기본 문자 집합 변환을 바이트 identique 바이너리 모드로 대체하여 과거의 데이터 손상 사례를 제거했습니다.

네트워킹 업그레이드

  • 시스템이 IPv6 연결이 없을 때를 대비한 런타임 폴백과 함께 조건부 IPv6 지원을 추가했습니다.
  • 로컬 IP 주소를 나열하는 새로운 show interfaces 명령(C‑Kermit 11)을 도입하여 LAN 기반 전송을 간소화했습니다.

테스트 인프라

  • 약 2,000개의 케이스를 다루는 Python 기반 엔드‑투‑엔드 테스트 스위트를 구현하여 gKermit, eKermit, 그리고 마지막 전체 릴리스(C‑Kermit 9.0.302, 2011)와의 호환성 검사를 포함했습니다.
  • macOS FIONREAD 오동작과 NetBSD PTY 드라이버 문제와 같은 플랫폼별 버그를 발견하고 수정했습니다.

코드베이스 정리

  • 역사적 릴리스를 Git으로 가져오기(원래 Jeffrey Altman가 수행)와 죽은 #ifdef 블록 제거를 통해 총 라인 수를 줄였습니다.
  • Linux(x86_64, arm64), macOS, FreeBSD, NetBSD, OpenBSD에서 빌드하고 musl 기반 리눅스 정적 바이너리를 생성하는 현대적인 CI 파이프라인을 채택했습니다.

커뮤니티 반응 및 토론에서의 통찰

"I enjoy working in a legacy C codebase" – John Goerzen (출시의 저자) 저자는 코드의 나이에도 불구하고 VMS, OS/2, pre‑ANSI 컴파일러를 위한 설계가 예기치 못한 우아함을 주었다고 언급합니다.

"I’m a gray‑beard and still use Kermit regularly for embedded development" – voakbasda (HN 댓글) 시리얼 콘솔 자동화를 위한 지속적인 관련성을 강조합니다.

"C‑Kermit can be used as a powerful SSH wrapper" – donflamenco (HN 댓글) Zmodem 없이 열린 SSH 세션 위에서 인라인 파일 전송이라는 실제 사용 사례를 확인합니다.

"Kermit source code remains the high‑water mark… for how many different, incompatible, non‑standard platforms one piece of software can support" – jonathaneunice (HN 댓글) 프로젝트의 역사적 이식 가능성 성과를 강조합니다.

"There’s not as much demand for gKermit now that C‑Kermit is BSD‑licensed and tiny" – John Goerzen (HN 댓글) 경량 gKermit 포크가 관심을 덜 받을 수 있는 이유를 설명합니다.


출시 자산 및 참여 방법


Frank da Cruz에 대한 헌정

C‑Kermit 11은 1981년 설계부터 2025년 오픈소스 인수까지 44년 동안 Kermit과 직접적으로 관련된 Frank da Cruz에게 헌정됩니다. 헌정 노트는 다른 오픈소스 프로젝트에서 이렇게 장기간 창시자 참여가 있었던 사례가 없다고 언급합니다.


레거시 프로토콜의 미래에 대한 출시의 중요성

  • 보존: 코드를 현대 VCS로 이동하고 CI를 추가함으로써 프로젝트는 역사적으로 중요한 프로토콜을 비트‑로트로부터 보호합니다.
  • 상호 운용성: 업데이트된 기본값과 IPv6 지원으로 Kermit은 레거시 하드웨어(예: HP 48 계산기)와 현대 네트워크 사이의 다리 역할을 계속할 수 있습니다.
  • 보안: 메모리 안전 및 원격 코드 실행 위험을 해결함으로써 펌웨어 플래싱 및 센서 데이터 수집과 같은 중요한 환경에서 Kermit 사용을 안전하게 만듭니다.
  • 커뮤니티 활력: 오랜 사용자와 신규 사용자 모두의 열정적인 반응은 추가 개발을 지속할 수 있는 건강한 생태계를 보여줍니다.

결론

C‑Kermit 11은 보안 결함 수정, IPv6 추가, 테스트 스위트 현대화, 코드베이스 정리를 통해 45년 된 파일 전송 프로토콜을 활성화하여, 빈티지 애호가와 현대 개발자 모두에게 실용적인 도구로 Kermit이 남도록 보장합니다.

Sources