웹키트

WebKit

애플에서 개발하는, 웹 브라우저 및 운영체제에도 쓰이는 레이아웃 엔진의 일종.
홈페이지

KDE의 Konqueror에서 사용하는 KHTML이라는 엔진에서 파생되었으며, BSD 라이선스를 따라 소스 코드가 공개되어 있다.

전반적으로 파이어폭스게코에 비해 빠른 게 특징.[1]

사파리, 오페라, 구글 크롬 등의 브라우저부터 iOS, 안드로이드, 블랙베리, 타이젠과 같은 운영체제까지 안 들어가는 곳이 없을 정도다.

오페라 10의 프레스토와 함께 Acid3 테스트에서 100점을 획득한 엔진이기도 하다.[2]

차기 프로젝트로 웹키트 2.0이 있다.(사파리 6.0부터 장착되었다.) 웹키트2 소개(원문) 웹키트2 소개(번역문)

웹키트 2는 기존 웹키트와 호환되지 않는 API 가 일부 존재한다. 웹키트 2에서는 엔진 자체에 프로세스 제어 기능과 샌드박스 기능이 들어간다. 반응성, 안정성, (웹프로세스를 샌드박스화함으로써) 보안성에 잇점이 생기고 멀티코어 CPU를 더 잘 활용할 수 있게 된다. 모든 세세한 프로세스 관리를 위한 API도 제공된다. 웹키트2는 웹키트의 새로운 API 레이어로 프로세스 분리 모델을 지원하기 위해 바닥부터 다시 설계되었다. 프로세스 분리 모델에서는 웹 컨텐트(자바스크립트, HTML, 레이아웃 등등)가 애플리케이션 UI와 분리된 프로세스에서 동작하게 된다. 이 모델은 구글 크롬에서 구현된 것과 매우 유사하긴 한데, 가장 큰 차이점은 프로세스 분리 모델이 프레임워크에 직접 구현되어 있어 다른 웹키트 클라이언트가 이 모델을 이용할 수 있다는 점이다. 크롬의 멀티 프로세스 방식과 웹키트2의 방식을 비교하면 크롬의 방식은 크롬에서만 잘 작동하며 다른 곳에서 쓰려고 하면 API를 재설계를 해야하고 웹키트2는 재설계가 필요없다. 한마디로 웹키트2는 다른 곳에 이식하기 쉽다.

2011년 7월 21일, 애플의 사파리 5.1 버전부터 웹키트2를 이용하기 시작했다.

애플은 웹키트2로 이전하였고 구글은 웹키트의 분기(fork)인 블링크로 이전하였으며, 당시 크로뮴의 웹키트를 탑재하기로 발표됐던 오페라 역시 이 블링크에 합류하였다. 이로 인해 웹키트가 반으로 쪼개지면서 웹 브라우저의 파편화가 우려되는 상황이다.

두 개의 엔진이 얼마나 다르냐면 프로세스 처리 구조부터 완전히 다르며 특히 블링크는 코드 베이스에서 7000개의 파일을 삭제했다. 애플과 구글의 관계가 서로 견제하는 분위기라 앞으로 코드의 차이는 심해질 수 있다. 다만 HTML5라는 아직 어떤 브라우저도 완벽 지원을 하지 못하는 허들 높은 표준안이 있으니 여기에 맞춰 나가기 위해서라도 호환성의 문제는 크지 않을 것이다. 오히려 과거 막장 브라우저의 대명사였던 인터넷 익스플로러와 기타 브라우저의 차이도 최근엔 줄어들었으면 줄어들었지 늘어나지는 않는 판이다.

한데 애플이 웹키트2를 만들면서 소스코드 커밋 리뷰를 애플 직원만이 할 수 있도록 변경해버렸다. 구글이 문제가 아니라 자유 소프트웨어 본연의 문제이기도 한 것. X.Org, LibreOffice, MariaDB와 같은 문제가 재현된 셈이다. 다만 예시의 프로젝트들은 소스 커밋 권한도 권한이지만 프로젝트의 운영 자체가 개차반이 된 탓이 큰 것이 원인이 되었지만 웹키트 같은 경우엔 Darwin과 마찬가지로 애플이 사활을 걸고 개발하는 프로젝트이기 때문에 소스 커밋의 개방성은 문제가 되더라도 성능 개선이 늦어진다던가 하는 문제는 발생하지 않는다. 하여튼 애플의 오픈소스들은 어째 죄다 소스만 오픈하고 커밋은 자기들끼리만 하지만 성능은 얄밉게 뽑아낸다는 것이 공통점일 듯.

  1. 대략 파이어폭스 3.6.x 버전까지는 자바스크립트 엔진 속도가 느렸기 때문에 반은 맞는 소리였다. 현재는 램누수 현상 등 여러 가지를 개선해가며 그 격차는 상당히 줄었다.
  2. 공식 버전만 가지고 따지면 웹키트가 먼저이고 비공식 버전까지 따지면 프레스토가 먼저.