CUPS
3番目のカラムはファイルを変換するために支払うべき「コスト」を表し、フィルタ・システムがファイルを変換するときに別々のフィルタの組合せの中からどれを選ぶかを決定するための評価基準とされる。最後のカラムはデータを変換するためのフィルタプログラムを表す。よって、text/plain型のファイルはフィルタtexttopsによってコスト50でapplication/postscript型に変換できることになる。
フィルタシステムは、プリンターキューまたは印刷フィルタの名前、印刷ジョブのジョブ番号、ユーザ名、ジョブ名、印刷部数、その他印刷のオプション、ファイル名(標準入力からリダイレクトされた場合は不要)の引数とともに入力データを受け取る。その後、上述のようにMIMEデータベースを用いて入力データの型と使用されるフィルタを決定する。例えば、画像データが検出されればそれ用の特定のフィルタで処理され、HTMLのデータならまた別の特定のフィルタで処理される。これらのデータはその後PostScriptデータに変換されるか、直接ラスタデータに変換しうる。PostScriptデータへ変換された場合には、プレフィルタと呼ばれるさらなるフィルタが適用され、これは印刷するページ範囲の指定や、複数のページを1ページに埋め込むN-Upモードの設定などプリンターに特定のオプションを加えることができるようにPostScriptデータにたいして別のPostScript変換プログラムを適用する。
CUPSはまず、Easy Software Productsのマイケル・スイートとアンドルー・ゼンフトによって1999年の秋に作成された。最初のリリース版が公開されるまでのアルファ版とベータ版に2年間を要している。初期にはlpd (line printer daemon) を用いるよう開発努力が傾けられたが、ときとしてプリンターとの相性が悪いためにIPPも代替としてサポートされた。CUPSはすぐさま、Red Hat LinuxなどいくつかのLinuxディストリビューションで標準の印刷システムとして採用された。Apple ComputerはMac OS X v10.2のデフォルトの印刷システムとして2002年3月にCUPSを採用している。2007年2月にアップルは主たる開発者であるマイケル・スイートを雇用し、CUPSのソースコードを取得している。2019年12月20日、マイケル・スイートは自身のブログでアップルを退職したことを発表した。 2020年にはOpenPrinting organizationによりプロジェクトがフォークされ、マイケル・スイートはそこでCUPSの開発を継続している。
CUPSは当初、"Common UNIX Printing System" と呼ばれていたが、UNIX商標の法的な懸念からCUPS 1.4より "CUPS" と短縮されるようになった。
すなわち、スケジューラはクラス内で最初に利用できるプリンターを選び出してジョブをそのプリンターへと送る。ジョブモジュールは、最終的な変換と印刷のために印刷ジョブをフィルタやバックエンドの処理へと送ることで印刷ジョブを管理する。またそれらフィルタやバックエンドからのステータスメッセージも監視している。
スケジューラのコンフィギュレーションモジュールはCUPSのデータ構造を初期化するとともに設定ファイルを解析し、CUPSプログラムをスタートさせる。コンフィギュレーションモジュールは設定ファイルを処理している間はCUPSサービスを停止させ、処理が完了するとサービスを再開させる。
ログ・モジュールはアクセス、エラー、ログ・ファイル操作のスケジューラの事象のログを取り扱い、一方メインモジュールはタイムアウトとクライアントからの接続に対するI/Oリクエストの送出を受け持ち、またシグナルを監視し、必要に応じサーバの設定ファイルの再読み込み、さらに子プロセスのエラーと終了を取り扱う。
スケジューラで用いられているその他のモジュールには、印刷デバイスが理解できる形式に印刷データを変換するときのフィルター処理に用いられるMIME型と変換データベースを取り扱うMIMEモジュール、PPD (Postscript Printer Description) ファイルのリストを扱うPPDモジュール、システムで利用可能なデバイスのリストを扱うデバイスモジュール、CUPS内のプリンターとPPDを扱うプリンターモジュールがある。