NXT 프로젝트의 이론적 토대는 견고하게 다져졌다. 화이트보드 위의 다이어그램은 더 이상 추가할 것이 없어 보일 정도로 완벽했다. 하지만 그것은 어디까지나 이상적인 설계도일 뿐이었다. 이제는 이 설계도를 현실 세계의 코드로 구현해야 할 때가 왔다.
드미트리는 팀을 다시 소집했다. 이번 회의의 주제는 단 하나, ‘구현’이었다.
“우리가 설계한 NXT는 웹 API입니다. 자바스크립트를 통해 개발자들이 사용하게 되죠. 하지만 그 자바스크립트 호출의 이면에서는 누군가가 실제 하드웨어와 대화해야 합니다. Vulkan, Metal, DirectX 12와 직접 소통하며 우리의 약속을 지켜줄 강력한 엔진이 필요합니다.”
그 엔진은 크로미움 브라우저의 심장부에 이식될 C++ 구현체여야 했다. 웹의 최전선에서 들어오는 수많은 명령을 받아, 각기 다른 운영체제의 네이티브 API로 번역해 주는 복잡하고 정교한 번역기.
“이 프로젝트는 NXT 자체만큼이나 중요합니다. 어쩌면 더 중요할지도 모릅니다. 우리의 모든 이론이 이 구현체의 성능과 안정성에 달려있으니까요.”
드미트리가 말을 이었다.
“우리는 이 구현체를 처음부터 새로 만들 겁니다. 그리고 몇 가지 중요한 원칙을 세워야 합니다.”
그가 화이트보드에 첫 번째 원칙을 적었다.
- 보안 (Security)
“이것은 타협할 수 없는 최우선 과제입니다. 우리는 웹이라는 열린 공간에서 동작합니다. 구현체의 아주 작은 허점이라도 시스템 전체를 위협하는 보안 구멍이 될 수 있습니다. 모든 입력 값은 철저히 검증되어야 하고, 메모리 접근은 엄격하게 통제되어야 합니다.”
웹 API가 네이티브 하드웨어에 더 깊이 접근할수록, 보안의 방벽은 더욱 견고해져야 했다. 그것은 날카로운 칼을 다루는 외과의사의 섬세함을 요구하는 작업이었다.
- 이식성 (Portability)
“이 구현체는 윈도우, macOS, 리눅스, 안드로이드, 그리고 크롬OS 위에서 모두 동일하게 동작해야 합니다. 각 플랫폼의 네이티브 API라는 다른 언어를 구사하면서도, 겉으로는 완벽하게 동일한 NXT API를 제공해야 합니다. 추상화 계층의 설계가 무엇보다 중요합니다.”
이것은 단순히 코드를 복사-붙여넣기 하는 수준이 아니었다. 각 운영체제와 드라이버의 미묘한 특성까지 고려한 맞춤형 설계가 필요했다.
- 독립성 (Stand-alone)
“우리는 이 구현체를 크로미움에 종속시키지 않을 겁니다. 필요하다면 누구든 이 엔진을 가져다가 자신의 네이티브 애플리케이션에 사용할 수 있도록 독립적인 라이브러리로 만들 겁니다. 그렇게 함으로써 더 많은 개발자가 우리의 코드를 테스트하고 개선에 기여할 수 있게 될 겁니다.”
이것은 구글의 프로젝트를 넘어, 더 넓은 오픈소스 생태계와 함께 호흡하겠다는 의지의 표명이었다.
모든 원칙을 설명한 드미트리는 잠시 숨을 골랐다. 이제 가장 중요한 것이 남아있었다.
“이 위대한 여정을 함께할 프로젝트의 이름이 필요합니다.”
팀원들의 눈이 반짝였다. NXT는 어디까지나 W3C에서 논의하기 위한 가칭이었다. 이제 그들의 땀과 열정이 담길 실제 프로젝트의 이름이 정해지는 순간이었다.
드미트리가 미소를 지으며 말했다.
“우리가 지금 하는 일은 웹 그래픽의 긴 밤을 끝내고 새로운 새벽을 여는 일입니다. 그래서 이 프로젝트의 이름을 ‘Dawn’이라고 정했습니다.”
Dawn. 새벽. 여명.
그 이름이 회의실에 울려 퍼지는 순간, 모두가 그 안에 담긴 무게와 희망을 느꼈다. 그들은 단순히 C++ 코드를 작성하는 것이 아니었다. 웹의 새로운 시대를 여는 새벽의 빛을 한 줄 한 줄 빚어내고 있었다.
그날 이후, 크로미움의 코드 저장소에는 ‘dawn’이라는 새로운 디렉터리가 생성되었다. 그리고 첫 번째 커밋(Commit)이 기록되었다.
Initial commit for Dawn, a C++ implementation of NXT.
그것은 짧은 한 줄의 기록이었지만, 수년간 이어질 대장정의 시작을 알리는 출사표였다. 화이트보드 위의 개념들은 이제 실제 파일과 함수로 생명을 얻기 시작했다. 드미트리와 그의 동료들은 이제 막 동이 트기 시작한 새벽의 어스름 속으로, 기꺼이 첫발을 내디뎠다. 그리고 그들은 자신들이 혼자가 아니라는 것을 곧 알게 될 것이었다. 웹의 다른 한편에서도, 또 다른 새벽을 준비하는 움직임이 시작되고 있었기 때문이다.