웹킷(Webkit)의 탄생
웹킷의 역사는 1998년으로 거슬러 올라간다. 당시 애플은 사파리 웹 브라우저에 탑재할 렌더링 엔진으로 KHTML을 눈여겨 보고 있었다. KHTML은 오픈소스 커뮤니티인 KDE(K Desktop Environment)가 Unix와 Linux용으로 개발한 브라우저 렌더링 엔진이다. 2001년 6월 25일 애플은 KDE의 KHTML(레이아웃 엔진)과 KJS(자바스크립트 엔진)를 포킹하여 새로운 브라우저 개발을 위한 프로젝트를 시작한다. 이 프로젝트가 바로 웹킷이다. KHTML은 깔끔한 설계, 가독성 높은 코드를 자랑했다. 웹표준도 준수했다. 게다가 누구나 수정해서 새로운 제품을 만들 수 있는 오픈소스였기 때문에 자사의 브라우저를 만드는 데 시간을 절약하고 싶었던 애플에게는 최고의 토대였던 셈이다. 이후 애플은 웹킷을 OS X로 이식하면서 KHTML을 WebCore, KJS는 JavaScriptCore로 이름을 바꾼다.
프로젝트 시작 후 2년간 애플과 KDE는 위태위태한 갈등의 시간을 보낸다. 오픈소스 커뮤니티는 개방과 협력, 자유, 열정을 원동력으로 한다. 하지만 커뮤니티의 모든 구성원이 그런 것은 아니다. 참여자들이 이러한 특성을 이해하고 있어야 커뮤니티가 잘 돌아갈 수 있다. 이윤을 추구하는 기업으로서 오픈소스 커뮤니티와는 다른 고유 문화를 가지고 있는 애플에게 오픈소스 도전은 결코 쉬운 일이 아니었다.
애플이 웹킷 프로젝트를 진행하는 동안 KDE도 KHTML 프로젝트를 계속 진행했다. 애플이 WebCore의 코드를 변경하면, KDE가 변경 사항을 KHTML에 반영했다. WebCore와 KHTML의 개발 플랫폼이 서로 다르기 때문에 이 작업은 쉬운 일이 아니었다. 애플은 WebCore를 만들면서 자사 제품에 특화된 기능을 많이 넣고 싶어했고, 실제로 KHTML의 많은 코드를 비밀리에 변경했다. 이로 인해 KHTML과 WebCore 간 코드 호환성 문제가 발생하기 시작했다. 엎친 데 덮친 격으로 애플의 폐쇄적인 태도가 KDE를 더 어렵게 만들었다. 심지어 애플은 코드를 변경하면서 문서 작성도 제대로 하지 않았다. 애플이 변경한 코드를 KDE 개발자가 확인하려면 비공개 서명을 해야하는 등 복잡한 절차를 거쳐야했고, 웹킷의 버그 관리 데이터베이스는 외부에서 접근할 수 없었다. KDE 개발자들은 WebCore의 변경 내용을 KHTML에 반영하는 데 애를 먹었다.
KDE는 오픈소스 정신에 어긋나는 애플의 태도가 마음에 들지 않았다. KDE 개발자인 Cristian Tibrina는 자신의 블로그에 사파리와 KHTML의 관계를 쓰라린 실패로 규정하는 글을 올렸다. 웹킷 탄생 초기 애플에게 우호적이었던 KDE 개발자들도 하나둘 불만을 토로했다. 애플은 좋은 오픈소스 구성원이 되고자 노력했지만, KDE의 눈에 들기에 부족했다. 이런 이유로 2003년 1월 샌 프란시스코에서 열린 맥 월드 엑스포의 키노트 기조 연설에서 스티브 잡스가 WebCore를 오픈소스로 선언했을 때, 오픈소스 커뮤니티 진영의 반응은 그저 냉랭했다.
하지만 갈등은 시간이 지나면서 사그러들었다. 먼저 손을 내민 것은 애플이었다. 좋지 않은 분위기를 부담스러워 한 애플은 KDE 측에 상호 협력관계 증진을 위한 논의를를 할 것을 제안했다. 이후 웹킷 팀과 KHTML 개발자 간의 협업이 증가했고, 많은 KHTML 개발자가 웹킷 리뷰어, 커미터가 되었다. KDE가 캉커러(Konqueror) 4.1 이후 버전에 웹킷을 탑재하고 있다는 사실을 볼 때 둘의 관계가 개선되었음을 짐작할 수 있다.
오픈소스 웹킷의 오늘과 내일
2005년 7월 월드와이드 개발자 컨퍼런스에서 애플은 웹킷을 오픈 소스로 만들겠다고 발표한다. 이 발표는 많은 모바일 제조사의 관심을 끌었다. 발표 4개월 후인 2005년 11월, 노키아는 웹킷으로 만든 브라우저를 탑재한 휴대전화 S60을 출시하면서 가장 빠르게 움직였다.
스마트폰과 HTML5의 등장은 웹킷의 인기에 불을 붙인다. 2007년 1월 애플이 아이폰을 출시하며 모바일 생태계를 뒤흔들었다. 여기에 HTML5가 등장하면서 웹 과 모바일 플랫폼이 사업적으로 중요한 영역이 되자, 많은 기업의 관심이 웹킷에 쏠렸다.
그 중 대표적인 기업인 구글은 웹킷이 성장하는 데 지대한 영향을 끼쳤다. 구글은 2007년 11월 웹킷을 기반으로하는 기본 브라우저를 탑재한 안드로이드 운영체제를, 2008년 3월에는 웹킷을 이용해서 만든 크롬 브라우저를 발표한다. 안드로이드는 스마트폰 OS 시장에서, 크롬은 웹 브라우저 시장에서 각각 점유율을 높여가며 웹킷 성장의 견인차 역할을 했다. 구글은 여기에서 더 나아가 2009년 7월, 크롬OS 프로젝트를 발표하며 MS와 애플이 지배해 온 PC OS 시장에 도전장을 던진다. 크롬OS는 저사양 넷북에서 고사양 PC까지 아우르는 것을 목표로 하는 웹OS로서 웹킷을 기반으로 한다. 브라우저를 벗어난 웹킷, 애플에게 칼날을 겨눈 웹킷. 크롬OS의 등장은 세간의 큰 관심을 끌었다.
웹킷은 이 밖에도 RIM의 블랙베리(BlackBerry) 기본 브라우저, 어도비 크리에이티브 수트(Adobe, Creative Suite) CS5, 삼성 타이젠(Tizen) OS, 아마존 킨들(Amazon, Kindle) e-book 등 다양한 영역으로 활동 반경을 넓히며 꾸준히 성장한다. 2010년 5월에는 기존의 웹킷을 새롭게 설계해서 웹 콘텐츠와 애플리케이션 UI와 서로 다른 프로세스에서 처리하는 것을 목표로 하는 웹킷2 프로젝트가 탄생했다. 이 프로젝트는 2014년 5월 현재 진행중이다. 2005년에 처음 애플이 웹킷을 오픈 소스화 했을 당시에 익스플로러가 사실상 시장을 독점하고 있었고, 웹킷을 탑재한 브라우저는 사파리 단 하나였다는 것을 생각해보면 웹킷의 성공은 분명 대단한 일이다.
하지만 높은 인기가 항상 좋은 것은 아니며, 때로는 독이 되기도 한다. 웹킷이 그렇다. 웹킷은 상업적인 목적을 가진 회사의 참여율이 월등히 높다는 점에서 다른 오픈 소스와 다르다. 웹킷에 가장 많은 기여를 한 애플과 구글은 서로 다른 목표와 방향성을 가지고 있다. 이는 다른 참여 기업들도 마찬가지다. 여러 이해관계를 웹킷이라는 하나의 그릇에 담으려다보니 코드가 점점 복잡해졌다. 빌드 시스템이 증가했고, 개발 속도는 느려졌다.
결국 2013년 4월 구글은 웹킷을 포킹하여 새로운 브라우저 렌더링 엔진 블링크(Blink) 개발을 선언하고, 크롬 28버전에 블링크를 탑재한다. 크로미움 프로젝트 공식 블로그는 웹킷에서 블링크로 넘어간 이유를 “웹킷이 여러 아키텍처를 지원하면서 웹킷과 크로미움 프로젝트의 복잡성이 증가했고, 이에 따라 집단 혁신 속도가 저하되었기 때문”이라고 밝혔다.
웹킷의 양대 커미터 중 하나인 구글의 이탈은 웹킷 커뮤니티에 큰 충격을 주었다. 오페라 진영도 웹킷을 버리고 블링크에 합류했고, 삼성은 모질라(Mozilla)와 차세대 브라우저 엔진 서보(Servo)의 공동 개발을 발표했다. 월간 커밋수도 전에 비해 눈에 띄게 줄었다. 하지만 상황을 부정적으로 단정하기는 어렵다. 웹킷의 인기가 한 풀 꺾인 것은 사실이지만 크롬을 지원하기 위해 웹킷에 추가했던 코드를 제거함으로써 포트를 줄인 점은 오히려 긍정적이다. 게다가 다른 포트를 지원하지 않는 블링크가 웹킷의 대안이 될 수 있을지는 아직 미지수다.