カーミット (プロトコル)
技術
カーミットプロトコルは、全二重および半二重／8ビットおよび7ビットのシリアル通信の上で、システム／媒体の非依存の形式で、テキストファイルとバイナリファイルの転送の機能を提供し、数百の異なるコンピュータ／オペレーティングシステムの上に実装されている。全二重通信を使用した場合、スライディングウィンドウプロトコルによる選択的な再送が使用され、優れた性能とエラー回復を実現する。コロンビア大学のカーミットソフトを適切に実装すれば、ZMODEM、YMODEM、XMODEMのようなほかのプロトコルと同等か、より優れた性能を実現することができる。RS-232C上での通信では、XMODEMのようなプロトコルは、256種類の文字コードをすべて転送する必要があるが、カーミットはいくつかのASCII制御コードを転送しないので、統計多重化を構成できる。
歴史
カーミットは1981年にコロンビア大学で開発され、学生はマイクロコンピュータ(当初はCP/Mが動作するIntertec Superbrain)のリムーバブルメディアで、IBMのメインフレームやTOPS-20オペレーティングシステムが動作するDECのDECSYSTEM-20からのファイルを使用することができた。IBMメインフレームはEBCDICキャラクタセットを使用し、CP/MとDECはASCIIキャラクタセットを使用していたため、2種類のキャラクタ間での文字コード変換は初期のカーミットに組み込まれた。
それぞれのCP/Mマシンは多数の異なるフロッピーディスクのフォーマットを使用していたので、あるCP/Mマシンのフロッピーディスクが、通常は他のCP/Mマシンでは読むことができなかった。非常に遅いボーレート（エラー回復が組み込まれていないため）でのPIPにより、ヌルモデムケーブルで、小さい簡易版のカーミットを一つのCP/Mマシンから別のマシンに転送した。もしそれができないならば、非常に小さい簡易版カーミットプロトコルが、CP/MのデバッガであるDDTを使用し、2K以内のバイナリでハンドコーディングされた。このようにして準備した簡易版のカーミットによって、フル機能のカーミットをダウンロードすることができた。フル機能のバージョンにより、あらゆるCP/Mのアプリケーション／データを転送することができた。
誕生から20年以上にわたって、カーミットプロトコルは世界的なデータ通信のデファクトスタンダードとなり、単純な学生の宿題から、国際宇宙ステーションでの互換性問題の解決までのタスクに使用された。それは幅広い範囲のメインフレーム、ミニコンピュータ、マイクロコンピュータに移植された（C-Kermit はHello Worldの次に多く移植されたプログラムといわれている）。多くのバージョンはオリジナルの TOPS-20 のカーミットに基づいたユーザインタフェースを持っている。MS-DOSバージョンのカーミットは1983年に開発された。後に実装されたカーミットのいくつかは、シリアル通信だけでなく、ネットワーク通信にも対応している。
現在サポートされている実装は「C-カーミット」（UnixおよびOpenVMS用）と「カーミット95」（Windows 95以降のWindowsおよびOS/2）だが、他のバージョンも同様に利用することができる。今でもカーミットプロトコルがブートストラップとして使われることがある。そして、その伝説的な移植性についての出所の怪しい話がある：「あなたのトースターの中にマイクロチップがあるならば、どこかの誰かがおそらくカーミットを移植している」。
初期のカーミットはコロンビア大学で開発され無料で配布されたが、1986年に開発を引き継ぐカーミットプロジェクトが設立され、商用利用に課金を開始した。このプロジェクトは経済的に自立している。
マペットと著作権
カーミットは、マペットの カーミット (Kermit The Frog) にちなんで名づけられた。Macintosh版のプログラムのアイコンは、Kermit the Frogを描写したものであった。おそらくは商標問題を避けるためにバクロニムが作られた( KL10 Error-Free Reciprocal Microprocessor Interchange over TTY lines )。
カーミットは公開されたプロトコルであり、だれてもカーミットを元にしてプログラムを作ることができる。しかし、いくつかのカーミットのソースコードはコロンビア大学に著作権がある。