웹 포킹: 더 단순하고 문서 중심적인 인터넷을 위한 선언문

현대 웹은 연결된 하이퍼텍스트 문서 시스템에서 클라이언트 측 애플리케이션의 거대한 생태계로 진화했습니다. 이러한 진화는 우리가 당연하게 여기는 풍부한 상호작용을 가능하게 했지만, 그에 따른 막대한 대가도 치렀습니다. 천문학적인 복잡성, 엄청난 자원 소비, 그리고 소수의 거대 기업만이 준수하는 브라우저를 유지할 수 있을 정도로 높은 진입 장벽이 그것입니다.

"On forking the Web"라는 제목의 도발적인 제안에서, Rodrigo Arias Mallo는 웹의 원래 의도인 인간 지식의 교환을 되찾는 유일한 방법은 명세(specification)를 효과적으로 "포킹(fork)"하는 것이라고 제안합니다. 불필요한 요소를 제거하고 기본 원칙으로 돌아감으로써, Mallo는 가볍고 예측 가능하며 기업의 독점을 방지할 수 있는 웹을 구상합니다.

포킹된 웹의 핵심 기둥

Mallo의 대안적 명세에 대한 비전은 지난 30년 동안 HTML을 괴롭혀온 "복잡성 증가"를 방지하기 위해 설계된 몇 가지 엄격한 제약 조건 위에 구축되었습니다.

1. 극도의 단순함과 크기 제약

다양한 범위의 클라이언트가 최소한의 노력으로 구축될 수 있도록 명세를 짧게 유지해야 합니다. Mallo는 급진적인 제약을 제안합니다. 전체 명세가 .tar.gz로 압축되었을 때 클래식 플로피 디스크의 크기인 1.44 MiB 이내에 들어와야 한다는 것입니다. 이는 표준이 오늘날과 같은 수 메가바이트 규모의 거대 괴물로 성장하는 것을 방지합니다.

2. "Living Standards" 대신 의미론적 버전 관리

현재 웹은 명세가 거의 매주 변경되는 "Living Standard" 모델을 따릅니다. 이는 독립적인 개발자가 지속적인 업데이트 없이 완전히 준수하는 클라이언트를 구축하는 것을 거의 불가능하게 만듭니다.

대신, 제안된 포크는 엄격한 의미론적 버전 관리(예: 1.2.3)를 사용할 것입니다. 발행된 버전은 불변하며, 오타는 패치 버전을 높이고, 새로운 기능은 마이너 버전을 높이고, 중대한 변경 사항은 메이저 버전을 높입니다. 이를 통해 개발자는 인쇄된 표준 사본을 기반으로 준수하는 브라우저를 프로그래밍할 수 있으며, 그것이 영원히 준수 상태를 유지할 것임을 알 수 있습니다.

3. 엄격한 문법과 오류에 대한 무관용

현재 웹은 견고함(robustness)으로 정의됩니다. 브라우저는 "깨진" HTML을 렌더링하기 위해 극단적인 노력을 기울입니다. Mallo는 이것이 실수라고 주장합니다. 잘못된 코드를 수정하기 위해 브라우저가 "악마 같은 규칙"을 구현해야 하기 때문입니다.

새로운 제안에 따르면, 명세는 모호하지 않은 형식적 문법을 특징으로 합니다. 만약 페이지가 문법을 엄격하게 준수하지 않는다면, 클라이언트는 이를 렌더링하는 것이 금지됩니다. 이러한 변화는 저자들을 Markdown과 같이 더 단순하고 관대한대한 언어로 유도하는 동시에, 개발자들에게는 파서(parser) 로직을를 단순화할 것입니다.

4. 스크립팅의 제거

아마도 가장 논란이 되는 기둥은 클라이언트 측 스크립팅의 완전한 제거입니다. Mallo는 스크립팅을 추가한 것이 근본적인 실수였다고 단언합니다. 지도를 보여주기 위해 JavaScript VM을 실행하는 대신, 브라우저는 위치를 전용의 최적화된 네이티브 애플리케이션에서 열 수 있도록 표준화된 링크(예: Geo URI)를 제공할 것입니다.

위대한 논쟁: 견고함 vs. 경직성

이 제안은 기술적 관찰자들 사이에서 상당한 분열을 일으켰으며, 이는 "웹을 문서로 볼 것인가, 플랫폼으로 볼 것인가"라는 역사적 긴장 관계를 반영합니다.

"XHTML의 교훈"

비판가들은 엄격한 문법을 고수하는 것이 XHTML의 실패를 반복하는 것이라고 주장합니다. @TazeTSchnitzel 사용자가 지적했듯이:

"이것은 XHTML이 그랬던 방식이며, 그것은 완전한 재앙이었다... 'parser error'를 받는 것은 99% 작동하는 페이지를 받는 것보다 항상 더 나쁩니다. 끔찍하게 깨진 오래된 사이트들이 온라인에 남아 있고 읽을 수 있다는 사실이 웹의 가치 중 큰 부분을 차지합니다."

보안 및 샌드박스 트레이드오프

JavaScript를 제거하면 방대한 범위의의 security vulnerability와 추적 메커니즘을 제거할 수 있지만, 새로운 문제를 도입합니다. 바로 네이티브 클라이언트의 확산입니다.

@pibaker 사용자는 브라우저의 샌드박스가 웹을 위대하게 만드는 바로 그 요소라고 주장합니다. 사용자들이 자신의 기계에 무작위 바이너리를 설치하지 않고도 복잡한 게임이나 도구를 실행할 수 있게 해주기 때문입니다. 스크립팅 레이어가 없다면 웹은 정적 파일의 집합으로 돌아가게 되며, 모든 상호작용이 필요한 경우 별도의 애플리케이션을 요구하게 됩니다. 이는 일부 사람들에게 "Kafkaesque"하거나 "큰 퇴보"로 느껴질 수 있습니다.

표준 독점의 저항

포크를 위한 가장 설득력 있는 논거 중 하나는 "표준 독점(standard capture)"을 방지하는 것입니다. 독점적 엔티티가 표준으로부터 수익을 추출할 수 있다면, 경쟁자들의 진입 장벽을 높이기 위해 표준의 복잡성을 높일 채인이 있습니다. 명세를 아주 작게 유지하고 버전 관리함으로써, 제안된 포크는 웹을 기업의 놀이터가 아닌 공공 유틸리티로 다시 만드는 것을 목표로 합니다.

대안 및 중간 경로

전체 포크가 너무 급진적이라고 생각하는 사람들을 위해, 몇 가지 대안적 경로가 제안되었습니다:

  • Gemini Protocol: 많은 댓글 작성자들은 Gemini를 이러한 이상향의 기존 구현체로 지적했습니다. 이는 텍스트 교환을 위해 설계된 가볍고 실행 불가능한 프로토콜입니다.
  • "Web-Lite" 서브셋: 일부는 구현의 용이성과 점진적 향상(graceful degradation)을 목표로 하는 기존 HTML의 엄격하고 의미론적인 서브셋을 정의할 것을 제안합니다. 이를 통해 "lite" 브라우저가 현재 웹의 5%를 탐색할 수 있게 합니다.
  • 문서와 애플리케이션의 분리: 더 세분화된 접근 방식은 웹을 두 가지 레이어로 공식적으로 나누는 것입니다. 정보 전달을 위한 엄격한 문서 레이어와, 상호작용을 위한 별도의 기능 기반 애플리케이션 레이어(아마도 WebAssembly를 사용할 것임)로 나누는 것입니다.

결론

웹을 포킹하는 것은 현대 애플리케이션-웹의 편리함에에 익숙히 된 일반 대중에게는 실현 불가능한 일일 것입니다. 하지만, 철학적이고 기술적인 연습으로서, 이는 중요한 질문을을ite highlights a critical question: 우리는 글의 접근성과 지속성을 위해 상호작용형 앱의 편리함을 맞물려 바꾼 것인가? "네드(nerds)"와 기록 보관가들에게, 단순하고 버전 관리되는, 스크립트가 없는 웹으로의 회귀는 단순한 향수 여행이 아닙니다. 그것은 지속 가능한 디지털 미래를 위한 탐구입니다.

Sources