7. 지금까지 우리가 알고 있는 것

여기까지 설명하면서 우리는 X가 어플리케이션 프로그램을 클라이언트로 하는 서버-클라이언트 아키텍처를 가지고 있다는 것을 알 것이다. 이러한 서버-클라이언트 시스템에서 우리는 몇 개의 사용가능한 윈도우 매니저를 알고 있으며 이것이 화면을 관리한다는 것을 안다. 우리가 원하는 일을 수행하기 위해서 우리는 몇 가지 다른 툴킷을 이용하여 프로그래밍한 클라이언트 프로그램이 필요하다는 것도 알것이다.

이 시점에서 아마 혼란이 시작될 것이다. 각각의 윈도우 매니저는 서로 다른 방법으로 클라이언트에 접근하고 행동양식과 장식도 각기 다르며 또한 클라이언트가 어떠한 툴킷을 이용하는가에 따라 달라진다. 개발자가 어플리케이션을 만들기 위해 하나의 툴킷을 이용해야 한다는 법이 없기 때문에 사용자는, 물론 가정이지만, 서로 다른 툴킷을 사용한 외양과 행동이 조금씩 다른 여러 개의 프로그램을 구동하는 것이 가능하게 된다. 어플리케이션 사이의 일관된 양식이 없으므로 이것은 혼란을 일으키게 된다. 만약에 당신이 아데나 위젯으로 짜여진 프로그램을 사용해 본 적이 있다면 Gtk로 짜여진 것과는 많이 다르다는 것을 알 수 있을 것이다. 또한 외양과 느낌이 다른 어플리케이션을 사용한다는 것이 혼란스러울 것이다. 이것은 무엇보다도 GUI환경의 장점에 반하는 것이다.

기술적인 관점에서 본다면 많은 툴킷을 사용하는 것은 자원을 낭비하는 것이다. 현대의 운영체제는 동적공유라이브러리(dynamic shared libraries)를 지원하는데 이것은 만약 내가 Gtk를 이용한 2-3개의 어플리케이션과 Gtk의 동적 공유 라이브러리 버전을 갖고 있다면 이 2-3개의 어플리케이션은 디스크와 메모리에서 Gtk를 공유할 수 있다는 것이다. 자원을 절약하는 것이다. 그럼에도,예를 들어 설명하자면, 내가 Gtk 어플리케이션과 Qt 어플리케이션과 아데나 기반 프로그램과 Netscape같은 Motif기반 프로그램, FLTK나 XForms를 이용한 프로그램을 갖고 있다면 나는 6개의 서로 다른 라이브러리를 메모리에 적재해야 한다. 자원을 낭비하게 되는 것이다. 한가지 기억해야 할 것은 이 모든 툴킷이 기본적으로 같은 기능을 갖고 있다는 것이다.

또 다른 문제가 더 있다. 윈도우 매니저마다 프로그램을 구동하는데 방법이 다르다는 것이다. 어떤 것은 메뉴를 갖고 있고 어떤 것은 그렇지 않으며 명령박스를 열어야 하는 것과 키를 조합해야 하는 것도 있고 명령을 입력하기 위해 xterm을 열어야 하는 것도 있다. 다시 말해서 표준이 없기 때문에 혼란스러워지고 있는 것이다.

마지막으로 그 동안에 다루지 않았지만 GUI 환경에서 생각할 수 있는 부가요소들(niceties)이 있다. 설정 유틸리티나 컨트롤 패널 또는 그래픽컬한 파일 매니저 같은 것들로 당연히 이러한 것들은 클라이언트 애플리케이션으로 만들어질 수 있다. 그래서 자유소프트웨어 세계에서는 정말 많은 파일 매니저와 시스템 설정 프로그램이 상이한 소프트웨어 구성으로 기억하기에도 벅찰 만큼 많이 있다.