보안이라는 가장 큰 산을 넘자, WebGL 워킹 그룹에는 잠시나마 안도와 낙관의 분위기가 감돌았다. 이제 남은 것은 합의된 청사진에 따라 세부적인 사항들을 채워나가는, 비교적 순탄해 보이는 길뿐이었다.
하지만 그들은 곧 깨닫게 되었다. 진짜 전쟁은 지금부터라는 것을.
악마는 디테일에 있었다. 그리고 그 디테일 속에는 각 회사가 추구하는 서로 다른 비전과 이해관계가 칼날처럼 숨어 있었다. 기술적인 논쟁의 이면에는 보이지 않는 정치의 그림자가 짙게 드리워지기 시작했다.
그 첫 번째 충돌은 아주 사소해 보이는 주제, ‘에러 처리(Error Handling)’에서 시작되었다.
OpenGL에는 glGetError()
라는 함수가 있다. 개발자가 이 함수를 호출하면, 이전에 실행된 명령어들 중 오류가 있었는지 확인할 수 있다. 워킹 그룹은 당연히 이 기능을 WebGL에도 포함하기로 했다. 문제는, 이 에러를 ‘언제, 어떻게’ 확인하게 할 것이냐였다.
구글 크롬팀의 엔지니어가 먼저 포문을 열었다.
“성능이 중요합니다. 개발자가 매 프레임, 모든 gl
함수를 호출할 때마다 브라우저가 내부적으로 오류를 확인하고 상태를 기록하는 것은 상당한 오버헤드를 유발합니다. 특히 루프 안에서 수천 번씩 호출되는 gl.drawArrays()
같은 함수에서는 치명적일 수 있습니다.”
그의 주장은 실용적이었다. 웹을 네이티브 애플리케이션에 버금가는 플랫폼으로 만들고 싶었던 구글에게, 성능 저하는 용납할 수 없는 타협이었다. 그는 개발자가 필요할 때만, 예를 들어 개발 단계에서 디버깅 목적으로만 glGetError()
를 호출하고, 상용 버전에서는 이 검사를 최소화할 수 있는 유연한 구조를 제안했다.
그의 말이 끝나자마자, 애플의 엔지니어가 즉각 반박하고 나섰다.
“안정성과 예측 가능성이 우선입니다. 만약 개발자의 실수로 잘못된 인자를 넘겼는데, 브라우저가 아무런 오류도 알려주지 않고 그냥 넘어가 버린다면 어떻게 됩니까? 화면에는 아무것도 그려지지 않거나, 완전히 깨진 이미지가 나타날 겁니다. 개발자는 원인을 찾기 위해 몇 시간을 헤매게 될 겁니다.”
그의 목소리에는 타협의 여지가 없었다. 애플에게는 사용자가 마주하는 모든 경험이 통제되고 안정적이어야 했다. 예상치 못한 오류로 브라우저 탭이 멈추거나 이상하게 동작하는 것은 그들의 철학에 반하는 일이었다. 그는 모든 WebGL 함수가 호출될 때마다 브라우저가 유효성을 검사하고, 오류가 발생하면 즉시 상태를 기록하여 glGetError()
를 통해 언제든 확인할 수 있어야 한다고 주장했다.
회의실의 공기가 다시 팽팽해졌다.
성능의 구글, 안정성의 애플.
두 거인의 서로 다른 우선순위가 정면으로 충돌한 것이다.
블라디미르는 이 신경전의 본질을 꿰뚫어 보고 있었다. 이것은 단순히 glGetError()
라는 함수 하나에 대한 논쟁이 아니었다. WebGL을 ‘최고의 성능을 내는 전문가용 도구’로 볼 것인가, 아니면 ‘누구나 안전하게 사용할 수 있는 보편적인 기술’로 볼 것인가에 대한 철학의 대립이었다.
모질라의 입장은 그 중간에 있었다. 웹은 전문가와 초심자 모두를 위한 공간이어야 했다.
“두 분의 의견 모두 일리가 있습니다.”
블라디미르가 중재에 나섰다. “그렇다면 이렇게 하는 것은 어떻습니까? 기본적으로는 애플의 제안처럼 모든 함수의 유효성을 검사하여 안정성을 확보하되, 구글의 우려처럼 성능 저하가 심각한 특정 함수들에 대해서는 개발자가 ‘성능 우선 모드’와 같은 옵션을 선택할 수 있도록 하는 겁니다.”
하지만 이 타협안은 더 복잡한 논쟁을 낳았다. ‘성능 우선 모드’를 표준에 명시하는 것은 또 다른 파편화를 낳을 수 있다는 우려가 제기되었다.
결국, 오랜 논쟁 끝에 그들은 ‘기본적으로는 엄격하게 검사한다’는 애플의 안에 손을 들어주었다. 웹 플랫폼의 기본은 신뢰와 안정성이라는 대의에 대부분이 동의했기 때문이다. 구글의 엔지니어는 못마땅한 표정이었지만, 더 이상 반대하지는 않았다.
하나의 논쟁이 끝났지만, 블라디미르는 이것이 시작에 불과함을 직감했다. 앞으로 텍스처 포맷, 셰이더 정밀도, 리소스 관리 등 수많은 안건들 위에서 오늘과 같은 신경전이 끊임없이 반복될 터였다.
WebGL 워킹 그룹은 더 이상 순수한 기술자들의 모임이 아니었다. 웹의 미래라는 거대한 판 위에서, 각자의 깃발을 든 기업들이 치열하게 수 싸움을 벌이는 전략의 장으로 변해가고 있었다.