X Window Systemプロトコルとアーキテクチャ
Bob ScheiflerとJim Gettysは設計にあたって、Xの基本原則を以下のように定めた(Scheifler/Gettys 1996)。
実際のアプリケーションでどうしても必要という場合以外は、新機能を追加するな。
システムが何でないのかを定義することは、何であるのかを定義するのと同じように重要である。あらゆるニーズに答える必要はない。むしろ、互換性を維持した状態で拡張可能にしておけ。
1つでも例を挙げて一般化したほうが、全く例を挙げずに一般化するよりもマシである。
問題が完全に把握できないときは、解決策も提供しないのが最善の方法である。
作業の10%について90%の効果しか得られないときは、単純な解法を使え。
複雑さは可能な限り分離せよ。
ポリシーよりも機構を提供せよ。特にユーザインタフェースのポリシーはクライアント側に任せておけ。
先頭の原則は、X11の設計中に「具体的アプリケーションがそれを必要としていることを知っている場合に限って、新たな機能を追加せよ」に修正された。X はだいたいにおいてこれらの原則に従ってきた。リファレンス実装は拡張性と改良を視野に入れて開発されており、1987年当時のプロトコルとほぼ完全な互換性を維持している。