WebKit - KHTML 분신의 귀환

IT 2009. 6. 20. 06:58

WebKit Inside

며칠 전 삼성전자는 JET 모바일폰을 발표했는데 Dolfin 브라우저를 사용한다고 소개되었습니다.  한 번에 5개 윈도까지 오픈할 수 있다고 합니다.  다른 현란한 기능도 많이 있고 멋진 휴대폰 같습니다.

Jet Image

Samsung Mobile Phone Jet


Samsung Mobile Phone Jet
( 삼성전자 Jet 소개 웹사이트에서 발췌함 )


지난 2월 PDA 와 스마트폰으로 유명한 Palm 에서는 Palm webOS 라는 리눅스 기반의 스마트폰 플랫폼을 발표했습니다.  이름에서 알 수 있듯이 웹 기술을 접목한 OS 인데 가볍고 빠르다는 평가를 받으며 업계에서 주목 받고 있습니다.  내장된 브라우저는  RTSP, H.263, H.264 비디오 포맷을 지원한다고 합니다.

File:Palm webOS Launcher.png

Parm 의 webOS


Google 은 작년에 Windows 용 웹브라우저인 크롬을 발표하였습니다.  크롬은 간결한 UI와 빠른 속도로 사용자들의 호응을 얻었습니다.  http://marketshare.hitslink.com/report.aspx?qprid=0  를 보면 현재 크롬은 MS의 인터넷익스플로러, Mozilla의 파이어폭스, Apple의 사파리 다음으로 4번째로 많이 사용되는 브라우저가 되었습니다.  최근에는 리눅스용 크로미엄이 쓸만해져서 저는 리눅스에서도 즐겨 사용하고 있습니다.


Google Chrome Screenshot    Google Chrome Icon

구글의 크롬 브라우저와 로고


Google 은 2007년말에 안드로이드 라는 모바일 플랫폼을 발표하면서 브라우징 기능을 기본 제공하고 있습니다.


안드로이드 에뮬레이터 화면


브라우저 점유율 3위인 Apple 의 사파리 브라우저와 4위인 Google 의 크롬은 동일한 layout 엔진을 사용하고 있습니다.  Apple 은 사파리 브라우저를 Mac OS X 뿐 아니라 Windows 용으로도 출시하더니 아이폰과 아이팟터치 에도 기본 제공하고 있습니다.

    

애플의 사파리 브라우저와 로고


이렇듯 데스크 탑과 모바일 기기에 돌아가는 브라우저를 여러 거대 업체에서 만들었습니다.  독립 브라우저로 발표하기도 하고 플랫폼에 끼워 조용히 내놓기도 합니다.  
그런데 방금 소개한 브라우저들은 공통점이 있습니다.  layout 엔진, 렌더링 엔진 또는 웹 콘텐츠 엔진으로 불리며 오픈소스프로젝트로 개발되고 있는  WebKit 입니다. ( http://www.webkit.org  )

WebKit 은 브라우저 기능 개발자들에게 인기가 많습니다.   Adobe 의 RIA 런타임환경인 AIR 에서도 WebKit 엔진을 사용합니다.  리눅스에서 많이 쓰이는 GNOME  브라우저인 Epiphany는 Gecko 엔진에서 WebKit 엔진으로 교체할 것이라고 합니다.  KDE 의 Konqueror 브라우저의 최근 버전은 KHTML 엔진을 기본 제공하면서도 WebKit 엔진을 옵션 형식으로 추가 지원하고 있습니다.  

이제는 WebKit 엔진 사용이 더 이상 뉴스거리가 되지 않는 모양입니다.  삼성의 JET 모바일 폰은 WebKit 3.2 엔진을 적용했는데 여러 다른 현란한 기능들에 비해 웹 컨텐츠 엔진이 특별히 주목받지는 않고 있습니다.  저는 오늘 WebKit 을 조금 자세히 알아보려 합니다.


Compatibility

브라우저 수가 많아졌는데도 웹 페이지의 호환성 문제는 그렇게 커지지 않았습니다.  오히려 10년전의 IE 대 넷스케이프의 투톱 시대보다도 layout 호환성 문제는 좋아 진 듯 합니다.

첫째, IE 를 제외한 대부분의 브라우저 들은 오래전 부터 표준을 준수하는 것을 특징으로 내세우고 있었습니다.  이런 추세에 de facto 표준인 IE 도 최신 버전 부터는 웹 표준 규격을 상당히 준수 하고 있습니다.  웹 표준 측정도구인 ACID 테스트 점수는 브라우저 엔진 개발시 성능지표로 이용되고 있는 듯 합니다.  브라우저 엔진들의 acid 점수 경쟁을 볼 수 있습니다. ( http://en.wikipedia.org/wiki/Acid3 )

그리고, 브라우저는 많아도 호환성을 좌우하는 주목할 만한 layout 엔진은 4개 정도 입니다.   IE엔진(Trident), 파이어폭스엔진(Gecko), 사파리엔진(WebKit), 오페라엔진(Presto) 입니다.  웹 표준 준수율로 보면 IE엔진을 제외한 나머지 엔진들의 호환성 차이는 거의 없는 편입니다.

이제는 레이아웃 호환성 문제 보다는 어떤 엔진 또는 기능을 채용해서 성능을 얼마나 개선 했는지를 내세우는 것이 추세 같습니다.  물론 우리나라에서는 Active X 호환성 문제가 큰 이슈겠지요.

호환성을 뜻하는 그림은 아니지만...


WebKit Origins

- KHTML

애플은 리눅스 KDE 의 KHTML 브라우저 엔진을 사파리 개발을 위해 Mac 에 포팅했습니다.  따라서 WebKit 은 KHTML 엔진의 분신(fork)이라고 할 수 있습니다.

KHTML 은 KDE 프로젝트로 개발된 HTML layout 엔진으로 역시 오픈소스 입니다.  앞에 잠시 언급했던 Konqueror 브라우저의 엔진이기도 합니다.  khtmlw 또는 KDE HTML Widget 이라고 불리는 엔진에 리팩토링과 유니코드 지원등을 하면서 1998년 11월에 나왔는데 처음 버전은 W3C DOM 이나 scripting 등도 지원되지 않았습니다.

한편, 1998년 3월 넷스케이프는 브라우저의 소스를 오픈 하였습니다.  1999년 KHTML 프로젝트는 선택의 기로에 섰습니다.  이대로 개발을 계속할 지 아니면 오픈소스인 모질라 코드를 사용할 지 결정하고 최우선 순위로 scripting 지원을 추가해야 했습니다.  

David Garrick in Hamlet, I, 4
햄릿

- To Be or Not To Be

당시의 모질라 코드는 한 때 TOP 이었던 넷스케이프의 소스였습니다.  그리고 새로운 오픈 소스 브라우저를 처음 부터 만드는 것은 결코 만만한 프로젝트가 아닙니다. 

그 당시에 저는 모질라 코드에 거는 기대가 컸었습니다.  따라서 제가 KHTML 의 향방을 결정해야 했다면 기존의 코드를 버리고 모질라 코드를 활용하고 모질라 진영과 힘을 보태서 함께 더 좋은 것을 만들어 공유하자고 했을 겁니다.  만약에 그렇게 되었다면 지금의 WebKit 은 전혀 다른 모습이 되어있겠죠.

이 때 라스 크롤( Lars Knoll ) 이라는 개발자의 공헌에 의해 프로젝트의 향방이 결정됩니다.  라스 크롤은 내부적으로 표준 W3C DOM 을 사용하도록 변경하느라 완전히 다시 작성된 KHTML 라이브러리를 1999년 8월에 공개하였습니다.  곧이어 10월에 해리포텐( Harri Porten )의 KJS 통합으로 scripting 도 지원하게 되었습니다.

이로써 WebKit 이 될 새로운 KHTML 이 나타났습니다.

출처: 종의 기원 (wikipeida)



WebKit Borns

애플의 매킨토시에서는 넷스케이프나 MS 익스플로러가 기본으로 제공되었습니다.  매킨토시 운영체제를 만들어 제공하면서도 브라우저는 만들지 안았던 것이죠. Mac OS X 를 만들고서도 웹 브라우저는 IE 5.0 맥 버전을 번들로 넣었습니다.  2003년 1월 드디어 사파리라는 웹브라우저를 KHTML 를 기반으로 만들었다고 발표합니다.

애플은 WebKit 의 소스를 오픈했습니다.  WebCore 와 JavaScriptCore 로 분류되는데 이것은 KHTML 과 KJS 를 Mac OS 에 맞게 개발한 후 맥 스타일의 이름을 붙인 것입니다.  애플에서 1년간 개발하여 개선된 KHTML 소스는 여러 이유로 KHTML 오리지널에 merge 되지 못하고 WebKit 으로 불리는 별도의 소스 버전을 가지게 됩니다.

그러니까 WebKit 은 KHTML 의 클론으로 시작했습니다.


WebKit Grows

노키아는 WebKit 을 사용하여 S60 휴대폰을 위한 웹브라우저를 만들었습니다.  iPhone OS 에 채택되어 iPhone, iPod Touch 의 브라우저에 사용되고 Windows 용 사파리에도 사용됩니다.  구글에 의해 안드로이드 플랫폼에서도 사용되며 삼성의 휴대폰에도 들어갔습니다.

Mac 에 포팅되었던 WebKit 은 이제 다양한 플랫폼에서 응용되고 있습니다.  그러면서도 JavaScriptCore 는 더 성능 좋은 것으로 대체되고 있습니다.  애플의 SquirrelFish 와 구글의 V8 이 그렇습니다.  웹 표준 호환성, 성능, 멀티플랫폼 이 대표적 특징이 되어가고 있습니다.  KDE 의 KHTML 로는 이루지 못한 것입니다.

     사진출처: mighty mouse (wikipedia)


WebKit Returns Home

WebKit 의 모태는 KHTML 과 같이 리눅스의 KDE 의 Konqueror 브라우저 입니다.  WebKit 은 이제 GTK+ 에 포팅되어 리눅스에서 돌릴 수 있으며  chromium 리눅스 버전을 통해서도 WebKit 을 돌려 볼 수 있습니다.  WebKit 은 모태인 KDE 의 Konqueror 에서도 돌아갑니다.  다른 브라우저에 들어가면 스포트라이트를 받는 WebKit 이지만 Konqueror 브라우저에서는 조상이자 사촌격인 현재의 KHTML 을 밀어내지 못하고 옵션기능으로 옆에 존재할 뿐입니다.

    

KDE 의 Konqueror 브라우저와 로고



The Motion Picture

스타트렉의 첫 번째 영화판인 THE MOTION PICTURE 가 생각납니다.  업그레이드 되어 지구의 능력을 뛰어 넘는, 지구를 위협하는 미지의 물체인 VGER 와 KDE 의 WebKit 을 비교하곤 합니다.  스포일러가 될까봐 이만 생략합니다.


The Motion Picture
( 영화에서 모션픽쳐는 미지의 움직이는 물체를 뜻합니다. )


WebKit 은 10년전 한 사람의 코딩 기여로 시작하여 커뮤니티와 기업(애플)의 공헌을거쳐 태어났습니다.  여러 플랫폼에 포팅되어가면서 발전하여 현재는 다양한 운용체제와 디바이스에서 동작되고 있으며 IE 를 위협하는 브라우저군의 한 축을 이루고 있습니다.  다시금 리눅스에서 돌아가도록 포팅되는 WebKit 을 보면 태어나서 성장하고 이리 저리 돌아다니는 생명체 같다는 느낌을 줍니다.


감사합니다.


( 게제된 사진의 출처는  http://en.wikipedia.org/  입니다. )


WRITTEN BY
tinysun

,