머릿 속의 다음 인터페이스 진화의 강력한 후보 목록에 xgl(과 compiz)이 자리잡았다. 그래픽 하드웨어 가속을 이용한 인터페이스 구현은 새로운 것이 아니다. 가까이는 MacOSX에서의 Quartz 하드웨어 가속이 있고, 앞으로 나올 windows vista도 DirectX 가속을 이용한 화면을 구현한다. 그런데도 xgl과 compiz의 손을 들어주고 싶다. 이유 하나는 앞의 두 OS의 경우는 인터페이스의 발전은 있었지만 인터페이스의 진화는 없었다고 생각하기 때문이고, 다른 이유는 xgl은 '모두가' 사용할 수 있어야 한다는 기준에 부합되기 때문이다.
15년쯤 전에윈도우 3.0에서 램상주 프로그램 (요새로 따지면 서비스나 데몬의 개념) 이 아닌데도 동시에 여러 개의 프로그램이 한 화면에서 서로 간섭하지 않고 돌아갈 수 있다는 것을 보고 충격을 받았었다. '아 이제 컴퓨터를 사용하는 사람들의 생각이 바뀌겠구나'
지금 보면 우스울지도 모르겠지만 당시엔 인터페이스의 혁명이었다.
매킨토시처럼 비싸지 않으면서도 그래픽 인터페이스를 지원했던 마이크로소프트 윈도우는 이후 15년동안 PC세계와 사람들을 바꾸었다. 그리고 15년이 흘렀다. 패러다임의 전환이 생길 때가 되었고, 언제나 궁금했다. 어떤 방식으로 인터페이스의 혁신이 이루어질까?
Geometry
인터페이스 진화의 가능성을 처음으로 보인 경우는 MacOSX의 인터페이스였다. 사실 진화 자체로만 보면 MacOS X는 전혀 새로운 부분이 없다. 극단적으로 말하는 경우, 그냥 기존의 GUI에 눈이 즐거운 효과들(eyecandy)이 더해진 것으로만 볼 수도 있다.
MacOS X에는 중요한 의미가 하나 있다. Unix커널의 기반에서도 GUI를 이렇게 만들 수 있다는 가능성.
하지만 MacOSX 에서 바로 알 수 있는 점이 있었다. 이제는 Unix 기반의 운영체제에서도 GUI를 저 정도까지 사용할 수 있겠구나 하는 가능성을 볼 수 있었다.(뒤에서 이 의미를 다루도록 해보겠다) 또한 데스크탑 인터페이스에 하드웨어를 통한 3차원 가속을 구현한 최초의 운영체제이기도 했다.
가장 처음 '진화'의 후보가 될 것이라고 느껴진 인터페이스는 sun의 Looking Glass 였다. 기존의 CDE(common desktop environment)를 대신하여 리눅스에 3차원 데스크탑 환경을 도입하겠다는 목표로 개발되었으며, 계속 발전하고 있다. 2001년에 계획을 발표한 후 2004년에 처음 선보인 데모 영상은 엄청났다. 인터페이스에 최초로 geometry를 도입하였으며, 다른 인터페이스들의 개발에 지대한 영향을 미쳤다.
화면 안 객체뿐만 아니라 배경또한 geometry를 가지고 있다. 안에서 이동하면 배경의 산에 가까이 갈 수 있다던가, 구름이 천천히 흘러가거나 하는 효과들이 있다.
Looking glass 더보기..
그렇지만 사용자층을 넓히기에는 문제가 있었다. 우선 자바 기반으로 짜여져 있기 때문에 시스템의 사양이 매우 좋아야 한다. (windows vista보다는 좋지 않아도 된다) 설치가 까다로운 면이 있으며, 하드웨어를 설정하는 것이 어렵다. 그리고 아직까지 그다지 안정적인 편이 아니다.
하지만 Looking glass 덕분에 Microsoft는 결국 미루고 미루던 인터페이스의 개선을 시작하였다. 비스타는 DirectX를 기반으로 하여 사용자 환경의 3D 가속을 시작하였다. 베타버전이나 CTP에서 선보인 기능들은 eyecandy 수준이고 하드웨어 요구사항은 살인적이지만, 더 좋은 제품이 나오면 잘 베껴 줄테니 기대하고 있다.
그리고 이제부터 이야기할 xgl / compiz와 aiglx / metacity 가 있다. 그 이전에 컴퓨터에서의 '인터페이스 구현' 에 대한 이야기를 간단하게 해 보겠다.
유닉스와 윈도우: 그래픽 인터페이스 구현의 차이
마이크로소프트 윈도우와 유닉스 계열 (Linux를 포함한 SunOS, Solaris, HP-UX등등...) 은 그래픽 인터페이스 구현 방법이 완전히 다르다. MS 윈도우의 경우 API들은 GUI의 하부구조로 완전히 통합되어 있으며, 인터페이스 계층과 API, 프로그램 계층은 완벽한 종속 관계로 이루어져있다.
반면 유닉스 계열은 발전의 역사를 따라 완전히 다른 개념에 의하여 만들어진 그래픽 인터페이스를 가지고 있다. 예를 들어 유닉스에서는 웹 서비스를 돌리기 위하여 웹 서버를, FTP 서비스를 하기 위하여 FTP 서버를 데몬이라는 형태로 실행한다. 처음 유닉스 계열에 GUI가 생길 때, 그래픽 출력을 위해서 이를 담당하는 X서버가 추가되었다. 프로그램들은 그래픽 출력을 위해 출력할 내용을 X서버로 전송하고, X서버는 각 프로그램들 (클라이언트가 된다)에서 요청한 출력 내용을 그래픽으로 뿌려주는 역할을 담당하게 된다. 따라서 X서버가 다른 컴퓨터에서 돌아가고 있는 경우, 다른 컴퓨터의 클라이언트가 출력을 요청하면 X서버가 설치된 컴퓨터에 그 결과가 나오게 된다. 이처럼 출력 부분이 완전히 분리되어 있는 점은 여러명의 사용자를 지원하는 경우에는 매우 유리하다.
그렇지만 사용자의 입력을 받거나 사용자에게 그래픽 결과를 출력하는 경우, X서버와 프로그램 사이에 통신이 필요하기 때문에 병목현상이 생긴다. 결과적으로 Unix X서버 인터페이스의 응답 속도가 MS 윈도우 계열에 비하여 느려지게 된다. 또한 프로그램마다 통일된 인터페이스의 형태가 존재하지 않기 때문에, 출력 인터페이스의 형태가 어느정도 통일되어 있는 윈도우와 비교하면 일관된 형태를 보여주지 못한다.
그런데 시간이 흘렀다. 기술의 발전은 여러가지를 바꾼다. 단일 사용자 전용이었던 윈도우는 윈도우 NT, 윈도우 2000을 거쳐 윈도우 XP가 되었다. WNT의 커널은 굉장히 잘 만들어졌다. 하지만 원래의 구조를 짧은 시간동안 다중사용자용으로 바꾸는 과정에서 overhead가 생겼다. 일반적으로 Windows NT계열은 새로운 사용자 한 명당 약 20메가의 메모리를 더 필요로 하게 된다. 반면 유닉스 계열은 그러한 추가적 로드가 거의 필요하지 않다.
문제가 되었던 X서버의 병목현상은 시간이 흐르면서 별 의미가 없게 되었다. 발전하는 기술은 정보들이 쏘다닐 수 있는 길을 크게 넓혀 놓았다. 인터페이스의 통일성도 Gnome과 KDE라는 걸출한 데스크탑 환경의 등장과 함께 좋아지기 시작했다. '대충 출력만 되면 된다'는 개념때문에 오랜 시간동안 버려져 있던 X서버는 개인사용자가 많은 리눅스의 등장과 함께 발전의 기미를 보이기 시작했다.
여기서 재미있는 점이 하나 생긴다. 그래픽 입출력이 독립된 서버의 구조를 가지고 있는 것은 뒤집어 말하면 운영체제의 전체 구조를 건드리지 않고 그래픽 출력 부분을 쉽게 개선할 수 있다는 의미가 된다. opensource X서버의 구현을 목표로 시작된 단체인 x.org는 복잡하던 X서버를 기능별로 모듈화하였다. 21세기가 되고, X서버의 모듈화가 어느정도 성과가 이루어졌다. 그리고 한결같았던 출력 부분에 갑자기 3차원 데스크탑의 구현이 시작되었다. 시스템 전체에 걸쳐있는 레이어를 수정해야 하는 MS윈도우에게는 쉽지 않은 일이지만.
xgl
2004년에 xgl의 아이디어가 공개된다. 기존의 X서버(X11)가 2차원 표현에 기반하여 만들어졌다면, xgl은 X서버 자체를 3차원 표현 기술의 하나인 openGL환경 위에서 구현하자는 생각이었다. 아이디어는 공개되고, 메일링 리스트에서 개발은 확인할 수 있었지만 빠른 진척은 없었다. x서버를 재구성하는 것이 쉬운 것도 아니고, x서버 위에서 돌아가는 윈도우 매니저들과의 호환성을 보장할 수 없었기 때문이다. (x서버가 그래픽 출력만을 담당한다면 윈도우 매니저는 x서버를 이용하여 응용프로그램들의 창을 그리고 조정하는 역할을 한다.)
그런데 2006년 초 갑자기 수세리눅스를 제작하는 Novell에서 xgl과 함께 xgl을 지원하는 윈도우 매니저(compiz)를 내놓는다. compiz는 xgl을 기반으로 3차원 데스크탑 인터페이스를 지원하고 있다. 초기버전이라고 말하지만 그렇게 치부하기에는 엄청나게 안정적이다.
xgl의 데스크탑 회전.
xgl 데모동영상 보러가기 (by linuxedge)
xgl을 인터페이스 혁명의 처음인 동시에 강력한 후보로 꼽겠다. 첫번째 이유는 범용성이다. 지금까지 두 대의 컴퓨터에 설치해 보았다. 한 대는 애슬론 xp2000+/radeon 9550이고, 다른 한 대는 P4 1.8기가/Geforce 4 MX 이다. 두 대 모두 아주 부드럽게 돌아간다. MacOSX는 매킨토시 하드웨어만 지원하고, Looking Glass와 Windows Vista는 Geforce 4 MX에선 아예 돌아가지도 않는다. 2만원도 되지 않는 그래픽카드에서 잘! 돌아갈 수 있는 3차원 데스크탑 환경은 현재로서는 xgl이 유일하다. (현재 geforce 2 이상에서는 돌아간다고 알려져 있다) 게다가 그 품질은 그들보다 훨씬 뛰어나다.
두번째 이유는 사용하는 사람의 생각을 바꾸는 점이다. 유닉스 계열에서는 가상 데스크탑이 일반화 되어 있다. 그렇지만 데스크탑이 여러개라는 개념이지, 그 데스크탑들이 연속 되어 있다는 개념은 받기 힘들었다. (애플릿의 작은 그림으로만 확인할 수 있을 뿐이었다) 하지만 xgl은 데스크탑의 전환을 시각화시켜 사용자에게 커다란 데스크탑 영역을 사용하고 있다는 실감을 준다. (위의 사진은 4개의 가상 데스크탑을 사용하는 화면이기 때문에 육면체이다) 게다가 그 데스크탑 사이에서의 응용프로그램 이동이나 전환을 탁월하게 시각화한다. 며칠 사용해 본 결과로는 데스크탑에 대하여 완전히 다른 접근 방식을 가지게 하는 효과가 있었다. (데스크탑을 고르게 다 쓰는 것은 빙산의 일각일 뿐이었다)
또한 맥의 익스포제 기능이나 비스타의 창전환 기능들은 기본으로 지원하는 상태에서, 창에 물리적 속성을 부여한다. MacOSX에서의 대쉬보드 in/out 효과와 크게 구별되는 점은 그러한 속성 부여가 외양 치장이 아니라 무한한 가능성을 담고 있기 때문이다. 예를 들어, 이 창은 '쫄깃하다' 거나, 이 창은 '딱딱하다' 와 같은 속성을 느낄 수가 있다. (써보면 안다) 게다가 모든 기능이 플러그인 추가로 더해 질 수 있다는 점은 앞으로의 가능성에 무게를 더욱 실어준다. (실제로 발표 나흘만에 임의의 창을 원하는만큼 투명화할 수 있는 기능을 추가하는 플러그인이 개인 사용자에 의하여 나왔다)
윈도우가 지금의 위치를 가지게 된 이유 가운데 하나가 '값이 싼 GUI' 라는 점을 상기해 볼 때, xgl이 앞으로의 데스크탑 운영체제의 판도 변화에 어떠한 영향을 미치게 될 지 생각해 볼 가치가 있다. '기능에 비하여 엄청나게 오버된' 현재의 시스템 요구사양으로 윈도우 비스타의 경쟁력이 얼마나 있을까? (개인적으로 비스타의 최고의 라이벌은 윈도우XP가 될 것이라고 확신한다) 발전하고 편해지는 리눅스/ 유닉스 계열의 OS가 윈도우가 버벅거리는 사이 다시 한 번 전장에 나섰다. 이번엔 어떤 결과가 나올 것인가?
xgl 창 전환하며 스크린샷 한 장. 리눅스용 한글 2005와 firefox가 실행중이다.
사용중인 xgl 스크린샷 보기..