2011년 7월 6일 수요일

GNOME3에서 주목해야할 기술!


GNOME3가 공식 출시된지 두어달이 지났습니다. 우분투11.04에서 GNOME3 대신 Unity를 선택하는 바람에 우분투 사용자가 많은 국내에서는 GNOME3를 사용하는 사용자가 많지 않을 것으로 예상합니다. 대신 최신 Fedora를 설치하면 GNOME3를 사용할 수 있습니다.

GNOME3에서는 GNOME Shell이라는 Window Manager가 새롭게 개발되었고, 상당수의 코드가 GObject Introspection기술를 이용하여 JavaScript로 개발되었습니다. 이번 글에서 이러한 기술에 관하여 간단하게 소개해볼까 합니다.

GNOME Shell
GNOME Shell은 프로그램을 실행하고, 윈도를 전환시키고, 윈도가 전환될 때나 작업 환경이 변경될 때, 각종 효과를 만들어 냅니다. 기존 GNOME2의 데스크탑, 메뉴, Panel을 대치한다고 보면 됩니다.

http://live.gnome.org/GnomeShell/Technology
위 아키텍쳐를 보면 GNOME Shell은 크게 Windows Manager, Compositing Manger 역할을 하는 Mutter와 Shell Toolkit으로 구성된 것을 알 수 있습니다. Mutter는 기존 GNOME Desktop의 Window Manager인 MetaCity의 Core를 포하고 있습니다. 서로 다른 Process로 분리된 Window Manager와 Composting Manager를 하나로 프로그램으로 통합한것입니다. Clutter는 화면을 구성하는 UI와 Animation을 구현하기 위해 사용됩니다. 실제 Mutter와 Shell Toolkit은 GObject Introspection과 JavaScript Binding을 통해 JS로 사용이 가능합니다.

Clutter
Clutter는 GPU 가속을 지원하는 3D기반의 2D Animation 엔진입니다. 직접 OpenGL API를 사용하지 않아도 쉽게 3D 효과를 UI에 적용할 수 있습니다. Stage와 Actor라는 개념을 제공하여, 직관적으로 Animation을 구현하고, 각 Actor에 3D 효과를 적용할 수 있습니다.

Mutter
Mutter는 GNOME Desktop의 새로운 Window Manager입니다. Clutter로 Compositing Manager기능을 함께 구현하여, 사용자에게 Compositing Manager를 선택할 자유를 제한했다고 약간의 논란이 있었습니다. 즉, Compiz 사용자는 Mutter를 사용할 수 없는 것이이죠. 아마, 그 이유 때문에 우분투도 GNOME-Shell을 사용하지 않는 것으로 알고 있습니다.

GObject Introspection
GObject Introspection은 다양한 언어에서 GObject기반 library에 쉽게 binding할 수 있도록 지원합니다. 지금까지는 API가 변경되면 binding을 수정해야했지만, 이제는 더 이상 그럴 필요가 없습니다. 좀 더 자세한 내용은 지난 GNOME3 Launch Party에서 발표된 슬라이드 자료를 참고하세요.

위와 같이 GNOME3에 Window Manager가 변경되는 등 많은 변화가 있었고, Clutter, GObject Introspection과 같은 기술로 구현되어 있습니다. 각각의 기술 또한 다양하게 활용될 수 있으므로 자세하게 살펴볼 수 있는 기회를 갖도록 하겠습니다.

고맙습니다~

댓글 없음:

댓글 쓰기