WorldWideWeb

WorldWideWeb은 팀 버너스리가 1990년 CERN에서 개발한 최초의 웹 브라우저이자 그래픽 하이퍼텍스트 편집기이다. 단순히 웹 문서를 읽는 프로그램이 아니라, 문서를 화면에서 직접 편집하고 새로운 하이퍼링크를 만들 수 있는 브라우저-편집기(browser-editor)로 설계되었...

다른 이름Nexus
분류웹 브라우저, HTML 편집기, 하이퍼텍스트 편집기
개발자팀 버너스리
개발 기관CERN
최초 개발1990년
최초 공개1990년 12월 CERN 내부
인터넷 공개1991년
운영체제NeXTSTEP
프로그래밍 언어Objective-C
사용자 인터페이스그래픽 사용자 인터페이스
편집 방식WYSIWYG
지원 프로토콜 및 공간HTTP, FTP, NNTP/News, file
후속 명칭Nexus
최종 확인 버전Nexus 2.02
상태개발 종료

WorldWideWeb은 팀 버너스리가 1990년 CERN에서 개발한 최초의 웹 브라우저이자 그래픽 하이퍼텍스트 편집기이다. 단순히 웹 문서를 읽는 프로그램이 아니라, 문서를 화면에서 직접 편집하고 새로운 하이퍼링크를 만들 수 있는 브라우저-편집기(browser-editor)로 설계되었다. 오늘날의 정보 공간인 World Wide Web과 이름이 혼동되는 것을 피하기 위해 훗날 Nexus로 이름이 바뀌었다.[1]

팀 버너스리는 NeXTSTEP의 응용 프로그램 제작 도구, 그래픽 사용자 인터페이스와 텍스트 처리 객체를 활용해 WorldWideWeb을 수개월 안에 구현했다. 문서 표시에 사용되는 Text 객체를 확장하여 하이퍼텍스트 기능을 더했고, Objective-C와 Interface Builder를 이용해 메뉴와 창을 구성했다. 브라우저와 함께 최초의 웹 서버 소프트웨어인 CERN httpd도 개발되어, 클라이언트·서버·문서 형식·자원 주소·전송 프로토콜이 서로 연결된 최초의 실제 웹 환경이 만들어졌다.[2][3]

WorldWideWeb의 핵심은 웹을 처음부터 읽기 전용 매체가 아닌 읽고 쓸 수 있는 정보 공간으로 구현했다는 데 있다. 사용자는 문서를 열어 내용을 직접 수정하고, 다른 문서나 문서 내부의 위치를 표시한 뒤 선택한 텍스트에 링크를 연결할 수 있었다. 제목과 목록 같은 구조는 소스 코드를 직접 입력하기보다 문단 스타일을 적용하는 방식으로 작성되었으며, 저장할 때 초기 HTML 구조로 변환되었다.[4]

프로그램은 HTTP 공간뿐 아니라 FTP, 인터넷 뉴스와 로컬 파일 공간도 탐색할 수 있었다. 다만 당시 구현에는 HTTP PUT이 없었으므로 원격 웹 문서를 서버에 다시 저장하는 기능은 제공하지 않았고, 실제 편집 결과는 로컬 file: 공간에 저장해야 했다. 초기판은 당시 NeXT 컴퓨터의 흑백 또는 회색조 화면을 전제로 했고 이미지를 별도 창에 표시했으나, 후대 버전에서는 인라인 이미지와 확장된 문서 표시 기능이 추가되었다.[5]

NeXTSTEP에 강하게 결합된 WorldWideWeb은 많은 사용자에게 직접 보급되지는 못했지만, 웹의 최초 클라이언트 구현이자 웹 저작 도구였다. 이후 휴대성이 높은 Line Mode Browser와 여러 그래픽 브라우저가 등장하면서 웹 사용은 다른 운영체제로 확산되었고, WorldWideWeb의 네트워크 및 문서 처리 코드 일부는 libwww를 비롯한 초기 웹 소프트웨어의 기반으로 이어졌다. 현재 원본은 개발이 종료된 역사적 소프트웨어이며, CERN과 웹 역사 연구자들이 소스 코드·바이너리·스크린샷·현대적인 재현판을 보존하고 있다.[6]

역사

개발 배경

1980년대 말 CERN에서는 여러 나라와 기관에서 온 연구자들이 서로 다른 컴퓨터, 네트워크, 문서 형식과 정보 시스템을 사용했다. 가속기와 실험 장비, 인력, 소프트웨어, 회의 기록과 기술 문서에 관한 정보가 다양한 시스템에 흩어져 있었으며, 한 시스템에서 발견한 개념이나 인물의 정보를 다른 시스템에서 곧바로 이어서 찾기 어려웠다. 팀 버너스리는 이러한 문제를 계층형 데이터베이스 하나로 통합하기보다, 서로 독립적으로 관리되는 정보들을 링크로 연결하는 분산 하이퍼텍스트 체계로 해결하려 했다.

1989년 3월 작성된 《Information Management: A Proposal》은 변화가 잦은 대규모 조직에서 정보와 사람, 프로젝트의 관계를 추적하기 위한 시스템을 제안했다. 제안서는 중앙에서 모든 구조를 미리 결정하는 대신 각 문서와 개념을 비순차적으로 연결하는 모델을 설명했으며, 이후 1990년 제안에서는 원격 서버의 정보를 공통 인터페이스로 읽고 사용자가 새로운 문서와 링크를 만들 수 있는 단계까지 구체화했다.[7][8]

NeXT 컴퓨터의 도입

CERN은 프로젝트의 빠른 시제품 제작을 위해 NeXT 컴퓨터를 활용했다. NeXTSTEP은 객체 지향 응용 프로그램 프레임워크, Interface Builder, 화면의 서식 있는 텍스트를 직접 다루는 Text 객체와 일관된 데스크톱 사용자 인터페이스를 제공했다. 팀 버너스리는 다른 플랫폼에서라면 훨씬 오래 걸렸을 작업을 NeXT 환경에서는 수개월 안에 구현할 수 있었다고 설명했다.

WorldWideWeb은 기존 Text 객체를 하위 클래스화하여 링크와 앵커를 더하는 방식으로 만들어졌다. 운영체제가 메뉴, 창, 인쇄, 글꼴과 텍스트 편집의 상당 부분을 제공했기 때문에 개발자는 네트워크 자원 식별, 문서 가져오기, HTML 해석과 하이퍼링크 조작에 집중할 수 있었다. 이러한 선택은 빠른 개발을 가능하게 했지만, 프로그램이 NeXTSTEP의 사용자 인터페이스와 객체 체계에 강하게 의존하게 만드는 원인이기도 했다.[9]

1990년 개발

팀 버너스리는 1990년 말 WorldWideWeb의 최초 작동판을 완성했다. 프로그램은 문서를 표시하는 브라우저, 문서를 수정하는 편집기, 하이퍼링크를 생성하는 도구를 하나의 응용 프로그램에 결합했다. 동시에 HTTP 서버인 CERN httpd와 초기 HTML, 자원 주소 체계, HTTP가 함께 구현되면서 웹의 핵심 구성 요소가 실제로 서로 통신하기 시작했다.

초기 배포물에는 901225와 같은 날짜 표기가 남아 있으며, 이는 1990년 12월 무렵 프로그램이 사용 가능한 단계에 이르렀음을 보여 준다. 최초판은 완성 제품이라기보다 네트워크형 하이퍼미디어 브라우저·편집기의 시험판이었으며, 정보 창에도 알파 또는 테스트 버전임을 나타내는 문구가 표시되었다.[10][11]

CERN 내부 공개

WorldWideWeb은 1990년 12월 CERN 내부에서 웹 서버와 함께 사용되기 시작했다. 최초의 웹사이트는 웹 프로젝트의 목적, 사용법, 서버와 브라우저 소프트웨어, 기술 문서와 참여 방법을 연결하는 안내 허브 역할을 했다. WorldWideWeb을 실행할 수 있는 NeXT 사용자는 이 페이지들을 직접 열고 링크를 따라가며 새로운 분산 정보 체계를 시험할 수 있었다.

초기 배포의 목적은 많은 최종 사용자에게 완성된 제품을 제공하는 것보다 웹의 전체 구조가 실제로 작동함을 보여 주는 데 있었다. 문서, 링크, 클라이언트와 서버를 한 환경에서 빠르게 수정할 수 있었기 때문에 WorldWideWeb은 프로토콜과 사용자 인터페이스를 동시에 실험하는 기준 구현 역할을 했다.[12][13]

인터넷 공개

1991년 웹 프로젝트는 CERN 밖의 인터넷 사용자에게 알려지기 시작했다. 팀 버너스리는 웹 소프트웨어와 문서에 접근하는 방법을 외부 연구자와 하이퍼텍스트 공동체에 공개했으며, 인터넷을 통해 다른 기관의 서버와 클라이언트가 연결될 수 있게 했다. WorldWideWeb 자체는 NeXTSTEP을 필요로 했기 때문에 사용할 수 있는 사람이 제한적이었지만, 이 프로그램으로 작성되고 제공된 문서는 다른 웹 클라이언트에서도 접근할 수 있었다.

웹을 다양한 컴퓨터로 확산하기 위해 Nicola Pellow는 휴대 가능한 C 기반의 Line Mode Browser를 개발했다. 텍스트 터미널에서도 동작한 이 브라우저는 WorldWideWeb이 검증한 HTTP·HTML·URI 모델을 더 넓은 환경으로 옮겼고, 웹이 특정 워크스테이션의 응용 프로그램을 넘어 범용 네트워크 서비스로 성장하는 데 중요한 역할을 했다.[14][15]

Nexus로의 개명

초기에는 프로그램과 프로젝트가 모두 WorldWideWeb이라는 이름을 사용했다. 당시에는 이 프로그램이 웹을 볼 수 있는 유일한 브라우저였으므로 이름의 구분이 큰 문제가 아니었지만, 웹 자체와 다른 클라이언트가 늘어나면서 소프트웨어 이름과 정보 공간의 이름이 혼동되기 시작했다.

팀 버너스리는 프로그램을 나중에 Nexus로 개명했다. 띄어 쓰지 않는 WorldWideWeb은 응용 프로그램을, 띄어 쓰는 World Wide Web은 추상적인 정보 공간을 가리키는 관례도 이 구분에서 비롯되었다.[16]

개발 종료

WorldWideWeb/Nexus는 초기 웹 구조를 시험하고 실제 문서를 작성하는 도구로 계속 개량되었지만, NeXT 전용 응용 프로그램이라는 조건 때문에 주류 브라우저로 확산되지는 않았다. 웹 프로젝트의 공통 네트워크 및 문서 처리 코드는 점차 C 기반의 libwww로 분리되었고, Line Mode Browser, ViolaWWW, MidasWWW와 Mosaic 같은 다른 클라이언트들이 여러 운영체제와 사용자층을 담당했다.

보존된 자료에는 1991년의 0.13 시험 바이너리, 약 0.15로 표시된 소스 코드와 1994년 저작권 표기가 있는 Nexus 2.02 바이너리가 남아 있다. Nexus 2.02는 libwww를 사용한 후기 형태였으며, 이후 독립 제품으로서의 개발은 종료되었다. 정확한 모든 릴리스 계보가 완전하게 보존된 것은 아니므로 현재 알려진 버전 정보는 남아 있는 소스, 바이너리와 문서에 기반한다.[17]

보존과 재현

원본 WorldWideWeb은 실행 환경과 소프트웨어가 모두 오래되어 보존에 어려움이 있다. CERN의 2019년 재현 프로젝트는 확인 가능한 약 0.15 소스 코드를 확보했으나 그대로 컴파일하지 못했고, 대신 원본 NeXT 컴퓨터에서 실행되는 0.13 prerelease b 바이너리와 Nexus 2.02를 비교하여 기능과 사용자 인터페이스를 분석했다.

재현팀은 원본 창 배치, 회색조 화면, 메뉴, 글꼴, 링크 작성 절차와 편집 기능을 현대 웹 기술로 다시 구현했다. 재현판은 현대 웹사이트도 열 수 있고 편집 내용을 웹 저장소에 보관하지만, 원본 바이너리나 에뮬레이터 그 자체는 아니다. 따라서 역사 연구에서는 원본 소스와 바이너리, 당시 스크린샷, 실제 NeXT 하드웨어의 동작과 2019년 재현판을 서로 구분해 다룬다.[18][19]

설계

브라우저와 편집기의 통합

WorldWideWeb은 브라우징과 저작을 별개의 작업으로 나누지 않았다. 네트워크에서 불러온 문서와 로컬 문서가 동일한 문서 창에 표시되었고, 사용자는 읽던 화면에서 텍스트를 선택하거나 수정할 수 있었다. 링크를 여는 동작에는 두 번 클릭을 사용했는데, 한 번 클릭은 커서를 두거나 텍스트를 선택하는 편집 동작에 사용되었기 때문이다.

이 구조는 현대의 읽기 전용 브라우저와 별도 HTML 편집기의 조합보다 워드 프로세서에 하이퍼링크와 네트워크 접근을 결합한 형태에 가까웠다. 원격 문서를 직접 서버에 덮어쓰는 기능은 없었지만, 사용자 인터페이스 차원에서는 모든 문서를 편집 가능한 객체로 취급했다.[20]

읽기-쓰기 웹

웹 프로젝트의 1990년 제안은 독자가 새로운 자료와 링크를 만들 수 있어야 한다는 목표를 명시했다. 사용자가 기존 문서에 연결되는 주석, 오류 보고, 수정 문서나 관련 자료를 추가할 수 있다면 정보가 중앙 관리자의 개입 없이 계속 보완될 수 있다는 구상이었다. WorldWideWeb은 이 보편적 저작(universal authorship) 개념을 직접 구현한 첫 도구였다.

이 설계에서 웹은 완성된 출판물을 소비하는 매체가 아니라 공동으로 확장하는 지식 공간이었다. 이후 웹이 대중화되면서 브라우저의 편집 기능은 약화되고 별도 저작 도구와 서버 관리 인터페이스가 주류가 되었지만, 위키, 공동 문서 편집기와 콘텐츠 관리 시스템에는 읽기와 쓰기를 연결하려던 초기 철학이 다른 형태로 이어졌다.[21][22]

WYSIWYG 편집

WorldWideWeb은 초기 WYSIWYG HTML 편집기였다. 사용자는 HTML 태그를 소스 형태로 입력하는 대신 화면에 표시된 제목, 본문, 목록과 링크를 직접 조작했다. 문단에 Heading 1, Heading 2, List와 같은 스타일을 적용하면 프로그램이 저장할 때 대응하는 HTML 구조를 생성했다.

다만 현대적인 시각 편집기처럼 임의의 배치와 장식을 자유롭게 설계하는 도구는 아니었다. 당시 HTML은 문서 구조와 링크를 표현하는 제한된 언어였고, 스타일시트도 CSS 이전의 NeXT 텍스트 스타일 정의였다. WYSIWYG라는 성격은 최종 화면과 유사한 문서 상태에서 편집할 수 있다는 의미에 가까웠다.[23]

하이퍼텍스트 모델

프로그램은 문서를 노드(node), 연결 가능한 위치를 앵커(anchor), 노드나 앵커를 가리키는 값을 문서 참조 또는 URI로 취급했다. 링크 대상은 반드시 같은 파일이나 서버에 있을 필요가 없었으며, HTTP·FTP·뉴스·로컬 파일처럼 서로 다른 접근 방식의 자원을 동일한 링크 모델로 연결할 수 있었다.

사용자는 대상 문서 전체 또는 선택한 부분을 먼저 표시한 뒤, 작성 중인 문서에서 링크로 만들 텍스트를 선택하여 둘을 연결했다. 이 절차는 주소 문자열을 직접 복사하는 대신 브라우징 행위 자체를 링크 저작 과정으로 사용한다. 문서 내부의 특정 위치에는 식별자가 부여되어 URI 프래그먼트와 같은 세부 대상이 만들어졌다.[24]

NeXTSTEP과의 결합

WorldWideWeb의 창, 메뉴, 텍스트 표시, 인쇄, 글꼴과 편집 동작은 NeXTSTEP의 AppKit과 Text 객체에 의존했다. 응용 프로그램별 메뉴가 화면 왼쪽 위에 떠 있고 문서 창에는 내용이 넓게 표시되는 구성, 창 닫기 아이콘의 상태 변화와 단축키 처리도 NeXT 사용자 인터페이스 관례를 따랐다.

이 결합은 프로그램이 당대 기준으로 정교한 그래픽 편집 기능을 빠르게 제공하게 했지만, 다른 운영체제로 이식하려면 사용자 인터페이스와 텍스트 처리 계층을 다시 작성해야 함을 뜻했다. 이후 웹 프로젝트는 공통 기능을 libwww 같은 이식 가능한 라이브러리로 옮기고, 각 플랫폼의 브라우저가 별도 인터페이스를 구현하는 방향으로 발전했다.[25]

사용자 인터페이스

문서 창

각 웹 문서는 독립된 NeXTSTEP 창에 열렸다. 링크를 따라가면 같은 창의 내용을 교체하기보다 새 창이 생성되는 동작이 일반적이었으며, 사용자는 여러 문서를 나란히 열어 대상과 작성 중인 문서를 오가며 링크를 만들 수 있었다. 문서 제목과 창 상태는 사용자가 현재 다루는 노드를 식별하는 주요 수단이었다.

창의 닫기 상자에 깨진 모양의 X가 표시되면 문서가 수정되었지만 아직 저장되지 않았음을 뜻했다. 이러한 dirty 상태 표시는 브라우징과 편집이 같은 창에서 이루어져도 사용자가 저장 여부를 구분할 수 있게 했다.[26]

메뉴 구성

NeXTSTEP의 응용 프로그램 메뉴는 화면 왼쪽 위에 독립된 패널로 나타났다. WorldWideWeb의 기본 메뉴에서 정보 창, 탐색, 문서 작업, 찾기, 편집, 링크와 스타일 관련 하위 메뉴를 열 수 있었고, 인쇄와 페이지 배치 기능도 제공되었다. 문서 창 내부에 큰 도구 모음을 두지 않았기 때문에 내용 표시 영역은 비교적 단순했다.

메뉴 구조는 현대 브라우저의 파일·편집·방문 기록 메뉴와 HTML 편집기의 링크·서식 메뉴가 결합된 형태였다. 사용자는 메뉴 명령과 Command 키 단축키를 함께 사용하여 탐색, 링크 작성과 저장을 수행했다.[27]

탐색 기능

WorldWideWeb에는 현대 브라우저와 같은 상시 표시 주소 표시줄이 없었다. 임의의 자원을 열려면 Document 메뉴에서 전체 문서 참조를 여는 명령을 선택하고 별도 대화상자에 URI를 입력했다. 이미 열린 문서에서는 링크를 두 번 클릭하여 이동했으며, 링크 대상은 대개 새 창에서 열렸다.

Navigate 메뉴에는 Back, Next, Previous와 같은 명령이 있었다. 여기서 Next와 Previous는 단순한 시간순 방문 기록 이동만을 뜻하지 않았고, 링크 목록에서 한 링크를 따라간 뒤 원래 문서로 돌아가 인접한 다음 또는 이전 링크를 여는 탐색 방식에도 사용되었다. Home과 Help 같은 고정 목적지로 이동하는 기능도 제공되었다.[28][29]

문서 편집

편집 가능한 문서에서는 화면의 텍스트를 클릭해 커서를 놓고 일반 워드 프로세서처럼 내용을 입력하거나 지울 수 있었다. 별도의 소스 편집 모드로 전환할 필요가 없었고, 선택·복사·붙여넣기 같은 NeXTSTEP 텍스트 편집 기능을 사용할 수 있었다.

네트워크에서 불러온 문서도 화면에서는 수정할 수 있었지만, 원격 서버에 변경 내용을 저장할 수 있다는 의미는 아니었다. 원본을 바꾸지 않고 수정된 사본을 로컬에 저장하여 추가 작업에 사용할 수 있었다.[30]

링크 생성

링크 작성은 대상 표시와 출발 텍스트 선택의 두 단계로 이루어졌다. 대상 문서에서 Mark All을 사용하면 문서 전체의 URI가 기억되었고, Mark Selection을 사용하면 선택 영역에 식별자를 부여해 문서 조각의 URI를 기억했다. 그 뒤 작성 중인 문서에서 텍스트를 선택하고 Link to Marked를 실행하면 선택 영역이 링크가 되었다.

Link to New 명령은 선택한 텍스트를 아직 존재하지 않는 새 문서에 연결하고 새 문서 창을 만드는 흐름을 제공했다. 이 방식은 사용자가 먼저 파일과 주소 체계를 설계하기보다 글을 쓰는 과정에서 연결된 새 노드를 확장하도록 유도했다.[31]

스타일 지정

Style 메뉴에서는 문단을 일반 본문, 제목, 목록 항목, 주소, 예제와 같은 의미 있는 스타일로 지정할 수 있었다. 이 스타일은 화면의 글꼴·크기·들여쓰기·간격을 바꾸는 동시에 저장되는 HTML 태그를 결정했다. 사용자는 구조와 모양을 별도로 코딩하지 않고 문서 편집 과정에서 함께 지정했다.

프로그램은 스타일시트 파일을 불러와 같은 HTML 구조를 다른 글꼴과 간격으로 표시할 수 있었다. 기본 배포에는 default, compact, project, paper 스타일시트가 포함되었으며, 스타일 정의 파일을 복사하고 수정하면 사용자 정의 스타일도 만들 수 있었다. WorldWideWeb의 스타일 편집 패널은 완전하게 작동하지 않았고 후기 Nexus에서는 제거되었다.[32]

저장

수정된 로컬 문서는 일반 저장 명령이나 단축키로 기록할 수 있었고, 여러 창에서 바뀐 문서를 한꺼번에 저장하는 기능도 있었다. 저장 과정에서는 화면의 문단 스타일과 링크 객체가 초기 HTML 태그와 앵커 속성으로 직렬화되었다.

HTTP 원격 저장은 구현되지 않았으므로, 네트워크 문서를 수정한 경우 로컬 사본으로 저장해야 했다. 2019년 재현판의 Save a copy offline 기능은 이 역사적 제약을 현대 브라우저의 다운로드 방식으로 재현한 것이다.[33][34]

기능

웹 문서 탐색

WorldWideWeb은 URI가 나타내는 접근 방식에 따라 적절한 네트워크 또는 파일 처리 코드를 선택했다. HTTP 서버의 하이퍼텍스트, 익명 FTP로 접근 가능한 파일, 인터넷 뉴스 기사와 로컬 파일을 하나의 문서 인터페이스 안에서 열 수 있었다. NFS로 연결된 원격 파일도 로컬 파일처럼 접근할 수 있었다.

이러한 통합은 웹을 HTML 전용 저장소로 한정하지 않고 기존 인터넷 정보 공간으로 들어가는 공통 인터페이스로 만들려는 초기 구상을 반영한다. 각 자원은 서로 다른 프로토콜로 가져오더라도 화면에서는 링크 가능한 노드로 제시되었다.[35]

문서 작성과 수정

새 문서를 만들면 기본적인 제목과 본문 구조가 포함된 편집 가능한 창이 생성되었다. 사용자는 텍스트를 입력하고 문단 스타일을 지정한 뒤 링크를 추가하여 HTML 문서를 완성할 수 있었다. 작성자는 HTML 문법의 세부 표기를 알지 못해도 하이퍼텍스트를 만들 수 있었다.

기존 로컬 문서도 같은 방식으로 수정할 수 있었고, 네트워크 문서는 읽은 뒤 로컬 사본을 만들어 편집할 수 있었다. 이 기능은 웹 문서 저작을 전문 개발 도구가 아니라 일상적인 문서 편집 작업으로 만들려는 시도였다.[36]

하이퍼링크 생성

링크는 선택된 텍스트 범위와 기억된 대상 URI를 연결하는 객체로 취급되었다. 사용자는 대상 주소를 직접 타이핑하거나 복사하지 않고, 먼저 대상 문서를 열어 표시한 다음 작성 중인 문서로 돌아와 링크를 완성할 수 있었다.

링크 생성 기능은 단순한 파일 열기 기능과 WorldWideWeb을 구분하는 핵심이었다. 브라우징 중 발견한 자료를 즉시 자신의 문서와 연결할 수 있었기 때문에 정보 탐색과 지식 구조화가 하나의 연속된 작업이 되었다.

앵커와 문서 조각

Mark Selection은 문서 전체가 아니라 선택한 구간을 링크 대상으로 만들었다. 프로그램은 해당 위치에 식별자를 부여하고 문서 URI와 식별자를 결합한 참조를 기억했다. 다른 문서의 링크는 이 주소를 사용해 특정 부분을 가리킬 수 있었다.

이 방식은 현대 URL의 프래그먼트 식별자와 같은 목적을 가졌다. 문서가 큰 단위의 파일로 저장되어도 링크는 개별 개념, 제목이나 문장 수준으로 연결될 수 있었으며, 하이퍼텍스트의 세밀한 비선형 탐색을 가능하게 했다.[37]

스타일시트

WorldWideWeb의 스타일시트는 HTML 구조별 NeXT 텍스트 스타일을 정의하는 별도 파일이었다. default는 일반적인 표시, compact는 더 작은 들여쓰기, project는 큰 글꼴, paper는 세리프 계열 글꼴을 중심으로 구성되었다. 문서의 구조를 바꾸지 않고 표시만 바꿀 수 있다는 점에서 이후 CSS와 유사한 관심사를 다뤘지만 문법과 적용 모델은 서로 다르다.

스타일 정의에는 글꼴 이름과 크기, 줄 높이, 정렬, 문단 앞뒤 간격, 들여쓰기와 탭 위치가 포함되었다. 프로그램은 이 값을 NeXTSTEP 텍스트 객체에 적용했고, 목록의 글머리표 같은 일부 표현은 HTML 파서가 직접 삽입했다.[38]

글꼴과 문단 스타일

기본 화면은 NeXTSTEP에 포함된 Helvetica와 Ohlfs 계열 글꼴을 사용했다. 제목 1~6, 일반 문단, 목록, 용어 설명, 주소, 예제, 리스팅과 강조를 위한 스타일 이름이 정의되어 있었으며, 각 스타일은 특정 초기 HTML 태그에 대응했다.

당시 글꼴은 특정 크기의 비트맵 표현에 크게 의존했고 문자 집합도 현대 Unicode보다 제한적이었다. 따라서 같은 문서를 현대 브라우저에서 표시하면 글자의 비율, 굵기와 간격이 원본 NeXT 모니터의 모습과 달라질 수 있다.[39]

이미지와 멀티미디어

최초판 WorldWideWeb은 이미지 링크를 따라갔을 때 그림을 문서 본문에 섞어 표시하지 않고 별도 창에 열었다. 1993년 무렵의 스크린샷에 보이는 인라인 아이콘과 그림은 초기판 이후 추가된 기능이다. 따라서 WorldWideWeb은 처음부터 그래픽 사용자 인터페이스를 사용했지만, 초기 웹 문서의 본문은 주로 텍스트와 링크 중심이었다.

웹 프로젝트는 하이퍼미디어를 텍스트에 한정되지 않는 정보로 정의했으며, 링크를 통해 그림과 다른 형식의 자원을 열 수 있도록 설계했다. 다만 소리, 영상과 복잡한 멀티미디어 제작은 초기 프로젝트의 우선 목표가 아니었다.[40][41]

로컬 파일 처리

file: 공간은 WorldWideWeb의 저작 기능이 완전하게 작동하는 기본 영역이었다. 사용자는 로컬 파일을 새로 만들고 편집하며 HTML로 저장할 수 있었고, 파일 시스템 권한과 디렉터리 구조를 이용해 문서를 관리했다. NFS로 마운트된 파일도 같은 모델을 통해 여러 시스템에서 공유할 수 있었다.

로컬 파일을 웹 서버가 읽을 수 있는 디렉터리에 저장하면 작성한 문서를 HTTP로 공개할 수 있었다. 즉 편집기와 서버가 같은 파일을 바라보는 구성에서는 원격 저장 프로토콜 없이도 로컬 편집과 웹 게시가 연결되었다.

기술적 구조

Objective-C

WorldWideWeb은 Objective-C로 작성되었다. 객체 지향 메시지 전달과 NeXTSTEP의 클래스 체계를 이용해 문서 창, 메뉴, 텍스트 뷰, 링크와 네트워크 기능을 구성했으며, Interface Builder에서 만든 사용자 인터페이스 자원과 소스 코드가 함께 응용 프로그램을 형성했다.

후기 Nexus는 웹 접근과 형식 처리의 공통 부분에 libwww를 사용했다. libwww는 C로 작성된 재사용 가능한 웹 라이브러리로 발전하여 여러 초기 브라우저와 서버 도구가 프로토콜, URI와 데이터 변환 기능을 공유할 수 있게 했다.[42][43]

NeXTSTEP

NeXTSTEP은 Mach와 UNIX 기반 시스템 위에 객체 지향 그래픽 응용 프로그램 환경을 제공했다. WorldWideWeb은 AppKit의 창과 메뉴, 이벤트 처리, 인쇄, 붙여넣기판, 글꼴 및 서식 있는 텍스트 기능을 사용했다. 운영체제가 제공하는 기능 덕분에 브라우저는 복잡한 문서 편집 인터페이스를 짧은 기간 안에 갖출 수 있었다.

반대로 프로그램의 핵심 사용자 인터페이스 코드는 NeXTSTEP 클래스와 파일 형식에 묶였다. 소스 코드만 다른 UNIX 시스템에서 다시 컴파일하여 같은 프로그램을 얻을 수 없었으며, X Window System이나 Macintosh용 버전은 별도의 인터페이스 구현이 필요했다.

Text 객체의 확장

팀 버너스리는 NeXTSTEP Text 객체를 하위 클래스화하여 하이퍼텍스트 동작을 추가했다. 기존 객체가 담당하던 선택, 삽입, 삭제, 글꼴, 문단 스타일과 화면 배치를 유지하면서, 텍스트 범위에 앵커와 링크 정보를 연결하고 링크 활성화 동작을 삽입했다.

이 접근은 웹 문서를 별도의 렌더링 표면보다 편집 가능한 서식 텍스트로 취급하게 했다. 화면에 보이는 객체와 저장되는 문서 구조가 긴밀하게 연결되어 WYSIWYG 편집이 가능했지만, 브라우저의 문서 모델이 NeXT 텍스트 시스템의 능력과 제약을 함께 물려받았다.[44]

HTML 처리

보존된 소스의 HTML 파서는 입력 스트림을 상태 기계로 읽고 태그에 따라 텍스트와 스타일 스택을 변경했다. 당시에는 HTML에 정식 버전 번호가 없었으며, A, ADDRESS, DL, DT, DD, H1~H6, ISINDEX, LI, OL, UL, PRE, LISTING, TITLE과 같은 초기 태그를 인식했다. 알 수 없는 태그는 대체로 무시되었다.

지원 엔티티는 &, <, >, " 등 소수였고, 일부 실험적 태그는 파싱은 되지만 표시 코드가 완성되지 않았다. HTML 해석과 스타일 적용은 긴밀하게 결합되어 있었으며, 목록 기호와 줄바꿈의 일부는 파서가 직접 텍스트 출력에 삽입했다.[45]

URI 처리

WorldWideWeb은 문서 위치와 접근 방법을 하나의 문자열 참조로 표현했다. URI의 스킴을 분석하여 HTTP, FTP, 뉴스 또는 파일 처리기를 선택했고, 프래그먼트 식별자가 있으면 문서 안의 특정 앵커로 이동했다. 이러한 공통 식별 체계 덕분에 서로 다른 서버와 프로토콜의 자원을 같은 링크 문법으로 연결할 수 있었다.

사용자 인터페이스는 URI를 항상 노출하지 않았다. 링크 작성자는 대상 문서를 화면에서 표시하고 Link to Marked를 사용했으며, 임의의 URI를 직접 열 때만 전체 문서 참조 대화상자를 사용했다. 주소는 시스템의 기반 요소였지만 일상적인 편집 과정에서는 링크 객체 뒤에 숨겨졌다.[46]

HTTP

WorldWideWeb은 HTTP 서버에 문서를 요청하고 반환된 하이퍼텍스트를 표시하는 최초의 HTTP 클라이언트였다. 초기 HTTP는 오늘날의 복잡한 헤더와 상태 관리가 정착되기 전의 단순한 프로토콜이었으며, 브라우저와 CERN httpd는 빠르게 함께 수정되었다.

보존된 후기 소스에는 HTTP의 기본 포트 80과 이전 실험 포트 2784가 함께 정의되어 있다. 읽기 요청은 지원했지만 HTTP PUT을 통한 원격 저장은 구현되지 않았기 때문에, 편집 기능은 로컬 파일에 한정되었다.[47][48]

FTP

FTP 지원은 기존 인터넷 파일 저장소를 웹 인터페이스에서 탐색하기 위한 기능이었다. 사용자는 익명 FTP 서버의 문서를 URI로 열 수 있었고, 브라우저는 해당 자원을 가져와 형식에 맞게 표시하거나 로컬 파일로 전달했다.

이 기능은 웹이 새로운 HTTP 서버만을 위한 폐쇄된 공간이 아니라 기존 네트워크 자료를 연결하는 상위 탐색 계층이라는 초기 방향을 보여 준다. FTP 자원 역시 다른 문서에서 일반 하이퍼링크 대상으로 사용할 수 있었다.

NNTP와 인터넷 뉴스

WorldWideWeb은 news: 공간을 통해 인터넷 뉴스 기사와 뉴스그룹 자료에 접근할 수 있었다. 초기 웹 제안은 기존 뉴스 시스템을 하이퍼텍스트 정보원으로 활용하는 서버를 구상했으며, 브라우저는 뉴스 기사를 다른 웹 문서와 함께 탐색 가능한 노드로 다뤘다.

뉴스 지원은 당시 연구자들이 이미 사용하던 정보 교환 체계를 웹에 연결하는 역할을 했다. 사용자는 기사에서 HTTP 문서로, 웹 문서에서 뉴스 자료로 이동할 수 있었으며, 링크 체계가 특정 저장 프로토콜의 경계를 넘었다.[49]

file 스킴

file: URI는 로컬 또는 파일 시스템을 통해 접근 가능한 문서를 나타냈다. WorldWideWeb은 이 공간에서 읽기뿐 아니라 쓰기와 링크 편집을 지원했고, 로컬 디렉터리를 개인 하이퍼텍스트 저장소로 사용할 수 있게 했다.

초기 웹 서버와 같은 시스템에서 사용할 경우 파일 편집과 HTTP 게시가 자연스럽게 연결되었다. 반면 외부 서버의 file: 경로는 직접 접근할 수 없었으므로 공개 웹에서는 HTTP나 FTP 같은 네트워크 스킴이 필요했다.

편집 기능

직접 편집

문서 창의 본문은 정적인 렌더링 결과가 아니라 편집 가능한 Text 객체였다. 사용자는 한 번 클릭하여 삽입 지점을 두고 텍스트를 입력하거나 기존 문장을 선택해 교체할 수 있었다. 링크를 따라가는 동작을 두 번 클릭으로 구분한 것은 이 직접 편집 모델 때문이다.

직접 편집은 별도의 미리보기 단계를 없앴다. 작성자는 문서의 읽기 화면과 같은 글꼴, 문단과 링크 배치 속에서 수정 결과를 확인하며 작업할 수 있었다.[50]

링크 대상 표시

Mark All은 현재 문서 전체를 링크 대상으로 기억했고, Mark Selection은 선택한 부분을 앵커로 만들어 그 위치를 기억했다. 이 기억된 대상은 다른 창으로 이동해도 유지되어, 여러 문서를 오가며 링크를 만들 수 있었다.

대상을 먼저 표시하는 방식은 클립보드에 주소를 복사하는 것과 비슷하지만, 사용자에게 URI 문자열을 보여 줄 필요가 없었다. 링크 저작 과정은 문서 탐색과 선택이라는 그래픽 동작으로 표현되었다.

Link to Marked

작성 중인 문서에서 텍스트를 선택하고 Link to Marked를 실행하면 선택 범위가 마지막으로 표시한 대상에 연결되었다. 대표적인 작업 흐름은 대상 페이지를 열고 Command-M으로 표시한 뒤, 원래 문서에서 출발 텍스트를 선택하고 Command-L을 누르는 것이었다.

이 명령은 문서 전체와 프래그먼트 앵커 모두에 사용할 수 있었다. 링크의 주소와 식별자는 저장 시 HTML의 앵커 요소에 기록되었고, 화면에서는 링크 스타일과 활성화 동작으로 표현되었다.[51]

Link to New

Link to New는 선택한 텍스트에서 아직 작성되지 않은 새 문서로 연결을 만들었다. 프로그램은 새 창을 열고 문서 참조를 입력하도록 한 뒤, 출발 링크와 새 문서를 함께 생성했다.

이 기능은 문서 작성자가 먼저 모든 파일을 준비하지 않고 개념을 확장하는 순간 새 노드를 만들 수 있게 했다. 다만 초기 구현은 새 문서의 URI를 자동으로 정하지 않아 사용자가 직접 참조를 입력해야 했고, 팀 버너스리도 후대 설명에서 이를 불편한 점으로 지적했다.[52]

문서 구조와 스타일

작성자는 문단 스타일을 선택하여 제목, 일반 본문, 목록 항목, 주소와 예제 같은 구조를 지정했다. 이 구조는 화면의 서식뿐 아니라 저장되는 HTML 태그를 결정했으므로, 시각적 편집과 의미적 마크업이 하나의 조작으로 결합되었다.

초기 목록은 현대 HTML 편집기보다 제약이 많아 중첩 구조를 자유롭게 표현하지 못했다. 프로그램은 목록 스타일, 탭 위치와 글머리표를 이용해 단순한 항목 집합을 표시했고, 일부 태그와 강조 스타일은 버전에 따라 불완전하게 작동했다.[53]

저장 방식

로컬 문서는 파일 시스템에 HTML 텍스트로 저장되었다. 편집기의 Text 객체에 붙은 스타일과 앵커 정보가 태그로 변환되었으며, 저장된 파일은 WorldWideWeb뿐 아니라 이후의 다른 브라우저와 텍스트 편집기에서도 읽을 수 있었다.

수정된 창은 dirty 상태로 표시되었고, 단일 문서 저장 외에 모든 수정 문서를 저장하는 명령도 제공되었다. 이러한 구조는 여러 연결 문서를 동시에 열어 편집하는 작업에 적합했다.[54]

원격 편집의 제약

WorldWideWeb은 원격 HTTP 문서를 화면에서 수정할 수 있었지만 변경 내용을 원래 서버에 반영하지 못했다. HTTP PUT, 인증, 충돌 처리와 권한 관리가 구현되지 않았기 때문이다. 원격 문서의 수정본은 로컬 사본으로 저장하고 별도의 방법으로 서버 파일을 교체해야 했다.

따라서 프로그램이 구현한 읽기-쓰기 웹은 사용자 경험과 로컬 저작 측면에서는 완전했지만, 임의의 웹 자원을 네트워크를 통해 공동 편집하는 체계까지 제공한 것은 아니었다. 이 문제는 이후 WebDAV, 위키, 콘텐츠 관리 시스템과 웹 기반 편집 응용 프로그램에서 서로 다른 방식으로 다뤄졌다.

웹과의 관계

최초의 웹 클라이언트

WorldWideWeb은 HTTP 서버에서 하이퍼텍스트를 가져오고 URI 링크를 따라가는 최초의 웹 클라이언트였다. 당시에는 다른 웹 브라우저가 없었으므로 프로그램의 동작 자체가 HTML, HTTP와 URI 설계를 검증하는 기준이었다.

또한 최초의 클라이언트가 편집기였다는 사실은 웹의 원래 사용자 모델이 단순한 페이지 소비자에 한정되지 않았음을 보여 준다. 문서 읽기, 작성과 연결이 하나의 응용 프로그램 안에 존재했다.[55]

최초의 웹 서버와의 연동

팀 버너스리는 WorldWideWeb과 함께 최초의 HTTP 서버인 CERN httpd를 개발했다. 서버는 파일 시스템의 문서를 네트워크 요청에 응답하여 전송했고, 브라우저는 URI를 해석해 서버에 요청한 뒤 받은 내용을 파싱하여 표시했다.

클라이언트와 서버를 같은 개발 환경에서 함께 바꿀 수 있었기 때문에 초기 프로토콜 실험이 빠르게 진행되었다. WorldWideWeb이 사용자 인터페이스와 저작을 담당했다면, httpd는 문서를 다른 컴퓨터에 공개하는 네트워크 계층을 담당했다.[56]

최초의 웹사이트

최초의 웹사이트는 CERN의 NeXT 컴퓨터에서 제공되었으며 웹 프로젝트 자체를 설명했다. 사이트에는 World Wide Web의 개념, 브라우저와 서버 소프트웨어, 기술 문서, 온라인 정보원과 프로젝트 참여 방법으로 이어지는 링크가 배치되었다.

WorldWideWeb은 이 사이트를 작성하고 읽는 데 사용되었다. 최초 사이트의 역할은 단일 소개 페이지보다 웹 전체로 들어가는 색인과 설명서에 가까웠으며, 이후 다른 서버와 정보원이 추가되면서 링크의 중심점이 되었다.[57]

HTML과의 관계

WorldWideWeb의 편집 형식과 표시 형식은 초기 HTML이었다. 프로그램의 스타일 이름과 문서 객체는 제목, 목록, 주소, 미리 서식 지정된 텍스트와 앵커 같은 태그에 연결되었고, 파서는 네트워크에서 받은 HTML을 NeXT 텍스트 표현으로 변환했다.

초기 HTML은 WorldWideWeb 하나의 구현에서 시작했지만, 곧 Line Mode Browser와 다른 클라이언트가 같은 문서를 읽으면서 상호 운용 형식이 되었다. 알 수 없는 태그를 무시하는 관대한 처리도 오래된 문서와 새로운 브라우저가 공존하는 웹의 특성에 기여했다.[58]

HTTP와의 관계

HTTP는 WorldWideWeb이 원격 서버에 문서를 요청하기 위해 사용한 핵심 프로토콜이다. 브라우저는 URI에서 서버와 경로를 얻어 요청을 보내고, 서버가 반환한 표현을 문서 창에 표시했다. 초기 구현의 단순함은 새로운 서버를 쉽게 만들고 서로 다른 시스템의 정보를 빠르게 공개하는 데 유리했다.

WorldWideWeb의 원격 편집 제한은 초기 HTTP가 주로 읽기 요청에 초점을 두고 있었음을 보여 준다. 이후 HTTP는 메서드, 헤더, 상태 코드, 캐시와 인증을 갖춘 범용 응용 프로토콜로 발전했지만, 클라이언트가 URI의 자원을 요청하고 서버가 표현을 반환한다는 기본 구조는 유지되었다.

URI와의 관계

URI는 WorldWideWeb의 분산 하이퍼텍스트를 가능하게 한 주소 체계였다. 하나의 참조 안에 접근 방식, 호스트, 경로와 문서 내부 식별자를 표현함으로써 링크 작성자는 다른 컴퓨터와 프로토콜에 있는 자원을 연결할 수 있었다.

WorldWideWeb은 URI를 문서와 앵커 객체에 연결하고, 스킴에 맞는 접근 모듈로 전달했다. 이 분리는 정보의 이름과 실제 전송 방식을 구분하여 웹이 새로운 프로토콜과 서버를 수용할 수 있게 했다.[59]

지원 환경

NeXT 컴퓨터

WorldWideWeb은 NeXT 컴퓨터에서 실행되도록 개발되었다. 초기 개발에는 NeXT의 고해상도 그래픽 화면, 마우스, 객체 지향 개발 도구와 UNIX 네트워크 기능이 사용되었다. 이는 텍스트 터미널이 널리 쓰이던 시기에 정교한 그래픽 하이퍼텍스트 편집기를 구현할 수 있는 환경이었다.

그러나 NeXT 컴퓨터의 보급량은 일반 개인용 컴퓨터나 워크스테이션 시장 전체에 비해 적었다. WorldWideWeb은 웹 시연과 설계 실험에는 뛰어났지만, 사용자 수를 빠르게 늘리는 배포판으로는 적합하지 않았다.[60]

NeXTSTEP 의존성

프로그램은 Objective-C 언어만 사용한 것이 아니라 NeXTSTEP의 응용 프로그램 객체, 인터페이스 자원과 텍스트 시스템을 직접 사용했다. 따라서 소스 코드를 다른 UNIX에서 단순히 재컴파일할 수 없었고, 같은 사용자 경험을 이식하려면 대응하는 GUI와 서식 텍스트 계층을 다시 구현해야 했다.

이 제약은 기능을 빠르게 완성한 선택의 대가였다. 웹 프로젝트는 이후 이식 가능한 C 라이브러리와 텍스트 브라우저를 병행하여 프로토콜과 문서 형식은 공유하되 사용자 인터페이스는 플랫폼별로 구성하는 방향을 택했다.

초기 흑백 인터페이스

초기 NeXT 컴퓨터의 화면은 회색조였으므로 WorldWideWeb의 인터페이스도 검정, 흰색과 여러 단계의 회색을 중심으로 구성되었다. 메뉴와 창 테두리, 버튼, 문서 글자와 링크 구분은 색상보다 명암, 글꼴, 밑줄과 배치에 의존했다.

원본 모니터의 픽셀 종횡비와 비트맵 글꼴은 현대 LCD에서 보는 스크린샷과도 차이가 있다. CERN 재현팀은 실제 NeXT 화면에서 글자를 캡처하고 픽셀 형태를 추적하여 당시의 시각적 인상을 재현했다.[61]

이후 버전의 그래픽 기능

초기판에서는 이미지가 별도 창에 열렸지만 후대 WorldWideWeb/Nexus에서는 문서 안에 이미지를 배치하는 기능이 추가되었다. 1993년 무렵 스크린샷에는 CERN 아이콘과 그림이 텍스트와 함께 표시되며, 글꼴 크기, 정렬과 스타일 처리도 초기판보다 확장되어 있다.

후기 기능을 최초 1990년판의 능력으로 오해해서는 안 된다. 남아 있는 스크린샷, 소스와 바이너리는 서로 다른 시점의 버전을 나타내므로 기능을 설명할 때 해당 자료의 연도와 버전을 함께 확인해야 한다.[62]

이식성의 한계

NeXTSTEP 전용이라는 점은 WorldWideWeb의 가장 큰 보급 제약이었다. CERN과 외부 연구기관의 대부분 사용자는 UNIX 터미널, VMS, Macintosh나 다른 워크스테이션을 사용했으며, NeXT 응용 프로그램을 실행할 수 없었다.

이 때문에 WorldWideWeb의 인터페이스를 그대로 이식하기보다 Line Mode Browser와 각종 X Window 브라우저가 새로 개발되었다. 웹의 공개 규격과 공통 라이브러리가 특정 프로그램보다 중요해졌고, WorldWideWeb은 최초 구현과 저작 도구로서 역사적 위치를 남겼다.[63]

다른 초기 웹 브라우저와의 관계

Line Mode Browser

Line Mode Browser는 Nicola Pellow가 CERN에서 개발한 휴대 가능한 텍스트 기반 웹 브라우저이다. NeXTSTEP의 그래픽 환경이 필요했던 WorldWideWeb과 달리 여러 종류의 컴퓨터와 단순한 터미널에서 실행할 수 있었으며, 링크 번호와 키보드 명령으로 탐색했다.

이 브라우저는 이미지 표시와 WYSIWYG 편집 기능을 제공하지 않았지만 웹의 독자층을 크게 넓혔다. WorldWideWeb이 웹의 전체 개념과 고급 저작 인터페이스를 검증한 시제품이었다면, Line Mode Browser는 같은 문서와 프로토콜을 최대한 많은 시스템에 전달하는 보급용 클라이언트였다.[64]

Erwise

Erwise는 1992년 핀란드 헬싱키 공과대학교 학생들이 X Window System과 Motif를 사용해 개발한 초기 그래픽 웹 브라우저이다. NeXTSTEP에 묶이지 않은 UNIX 워크스테이션용 그래픽 클라이언트로 만들어졌으며, 여러 글꼴과 창 기반 탐색을 제공했다.

W3 프로젝트의 당시 평가는 Erwise를 완성도가 높은 브라우저로 보면서도 일부 X 서버에서의 호환성 문제와 제한된 바이너리 배포를 기록했다. WorldWideWeb의 직접 편집 중심 설계와 달리 Erwise는 웹 탐색 클라이언트로서의 역할에 더 집중했다.[65]

ViolaWWW

ViolaWWW는 Pei-Yuan Wei의 Viola 대화형 미디어 도구를 기반으로 만든 X Window용 브라우저였다. 클릭 가능한 링크, 방문 기록, 북마크, 키워드 검색, 여러 창과 HTML 소스 보기를 지원했고, Viola의 객체와 스크립팅 능력을 이용해 문서 안의 대화형 요소를 실험할 수 있었다.

ViolaWWW는 HTML 소스를 볼 수 있었지만 WorldWideWeb과 같은 문서 편집기는 아니었다. 두 프로그램은 모두 그래픽 하이퍼텍스트 인터페이스를 제공했으나, WorldWideWeb은 저작과 링크 생성에, ViolaWWW는 확장 가능한 대화형 브라우징에 서로 다른 강점을 두었다.[66][67]

MidasWWW

MidasWWW는 Tony Johnson이 SLAC에서 개발한 X11·Motif 기반 웹 브라우저이다. 1992년 공개된 버전은 다중 글꼴 하이퍼텍스트, 온라인 도움말, 소스 보기와 Motif 사용자 인터페이스를 제공했으며 UNIX와 VMS에서 실행되었다.

MidasWWW는 고에너지 물리 연구 환경에서 World Wide Web을 보급하는 실용적인 클라이언트였다. 초기 공개 당시 이미지와 HTML 편집 기능은 향후 계획으로 남아 있었으므로, 저작 기능을 이미 통합한 WorldWideWeb과는 기능 초점이 달랐다.[68][69]

Mosaic

NCSA Mosaic은 1993년 NCSA에서 개발된 그래픽 브라우저로, 설치와 사용이 비교적 쉬운 인터페이스와 여러 플랫폼용 배포를 통해 웹을 연구기관 밖의 대중에게 확산시키는 데 큰 역할을 했다. 텍스트와 이미지를 같은 문서 안에 자연스럽게 배치하는 기능과 친숙한 탐색 도구는 웹 페이지의 시각적 성격을 크게 바꾸었다.

Mosaic은 최초의 웹 브라우저도 최초의 그래픽 브라우저도 아니었으며, WorldWideWeb보다 몇 년 뒤에 등장했다. 그러나 WorldWideWeb이 보여 준 URI·HTTP·HTML 기반의 웹을 대규모 사용자층에 전달했고, 이후 Netscape와 상용 브라우저 생태계로 이어지는 전환점이 되었다.[70][71]

영향

최초의 그래픽 웹 브라우저

WorldWideWeb은 웹 문서를 창과 서식 있는 텍스트로 표시하고 마우스로 링크를 활성화한 최초의 그래픽 웹 브라우저였다. 웹의 추상적인 클라이언트·서버 구조를 사용자가 직접 조작할 수 있는 응용 프로그램으로 구현했다는 점에서 이후 모든 웹 브라우저의 출발점이 된다.

다만 현대 브라우저의 주소 표시줄, 탭, 통합 도구 모음과 같은 구체적인 인터페이스가 그대로 계승된 것은 아니다. WorldWideWeb의 메뉴와 다중 창 방식은 NeXTSTEP 관례를 따랐고, 후대 브라우저들은 다른 플랫폼과 사용자 요구에 맞게 새 인터페이스를 발전시켰다.[72]

최초의 웹 편집 환경

WorldWideWeb은 최초의 웹 브라우저인 동시에 최초의 WYSIWYG 웹 문서 편집기였다. 초기 HTML 문서를 작성하고 제목·목록·링크를 시각적으로 편집할 수 있었으며, 웹 문서 저작이 반드시 태그를 직접 입력하는 작업일 필요가 없음을 보여 주었다.

이후 웹 편집은 별도의 HTML 편집기, 통합 개발 환경, 콘텐츠 관리 시스템과 웹 기반 저작 도구로 분화되었다. WorldWideWeb이 브라우저 안에 통합했던 기능들은 여러 제품군으로 나뉘었지만, 화면에서 결과를 보며 구조와 링크를 편집한다는 방식은 계속 사용되고 있다.

읽기-쓰기 웹의 구상

WorldWideWeb의 가장 중요한 개념적 영향은 독자와 저자를 분리하지 않았다는 점이다. 사용자는 네트워크에서 정보를 찾은 즉시 자신의 문서에 연결하거나 새 문서를 만들 수 있었고, 웹은 참여자가 공동으로 수정하는 살아 있는 구조로 구상되었다.

대중적인 브라우저가 읽기 기능 중심으로 발전하면서 이 원형은 약화되었지만, 위키, 블로그 편집기, 공동 문서와 소셜 플랫폼은 사용자가 웹에서 곧바로 콘텐츠를 작성한다는 생각을 되살렸다. 분산형 저작과 링크의 소유권 같은 문제는 오늘날에도 웹 설계 논의의 중요한 주제이다.[73]

웹 브라우저 사용자 인터페이스에 미친 영향

뒤로 가기, 홈, 도움말, 방문 흐름을 따라가는 명령, 링크 활성화와 여러 문서를 동시에 여는 기능은 이후 브라우저에서도 반복해서 등장했다. 문서 주소를 열고, 링크를 따라가며, 이전 위치로 돌아오는 기본 상호작용은 WorldWideWeb에서 이미 작동했다.

반면 링크를 두 번 클릭하는 방식, 화면 구석의 떠 있는 메뉴, 링크 대상을 Mark한 뒤 연결하는 절차는 널리 표준화되지 않았다. WorldWideWeb의 영향은 특정 화면 배치보다 웹 자원을 문서 중심 인터페이스로 탐색한다는 전체 모델에 더 크다.

웹 저작 도구에 미친 영향

문단 스타일을 HTML 구조에 연결하고, 화면에서 앵커를 만들며, 링크를 직접 조작하는 기능은 후대 시각적 HTML 편집기의 핵심 기능이 되었다. 스타일과 구조를 구분하려는 초기 시도도 CSS 기반 저작 도구가 해결해야 할 문제를 미리 보여 주었다.

동시에 WorldWideWeb은 시각 편집기가 생성하는 구조의 품질, 원격 저장, 링크 무결성과 협업 충돌 같은 문제를 남겼다. 이러한 문제는 이후 웹 저작 도구, WebDAV, 버전 관리와 콘텐츠 관리 시스템이 각기 다른 방식으로 해결해 왔다.

복원과 역사적 보존

원본 소프트웨어

WorldWideWeb의 원본 자료는 완전한 하나의 릴리스 묶음으로 보존되지 않았다. CERN 재현팀이 확인한 가장 이른 소스는 정보 자원에서 0.15로 표시되지만 1992년 주석도 포함하고 있었고, 이 소스는 당시 환경에서 다시 컴파일되지 않았다. 실행 가능한 원본 NeXT 바이너리로는 0.13 prerelease b와 후기 Nexus 2.02가 확인되었다.

이 때문에 특정 기능이 1990년 최초판에 있었는지, 1991~1994년 사이에 추가되었는지를 판단하려면 소스, 실행 바이너리, 화면 캡처와 개발자의 설명을 함께 비교해야 한다. 보존된 자료의 버전 불일치는 초기 웹 소프트웨어 보존의 대표적인 사례이기도 하다.[74]

CERN의 재현 프로젝트

2019년 CERN은 웹 탄생 30주년을 맞아 WorldWideWeb의 경험을 현대 브라우저 안에서 재현하는 프로젝트를 진행했다. 팀은 원본 NeXT 컴퓨터와 바이너리를 조사하고, 당시 개발자와 협력자의 증언을 듣고, 창 시스템·메뉴·글꼴·탐색과 편집 절차를 HTML, CSS와 JavaScript로 다시 만들었다.

재현판은 원본과 같은 회색조 인터페이스와 브라우저-편집기 흐름을 보여 주며, 현대 웹페이지를 가져오고 편집 내용을 웹 저장소에 보관할 수 있도록 조정되었다. 이는 역사적 사용 경험을 전달하기 위한 시뮬레이션으로, 원본 Objective-C 코드나 NeXTSTEP을 그대로 실행하는 에뮬레이션과는 다르다.[75]

스크린샷과 기록

WorldWideWeb의 시각 자료에는 서로 다른 버전이 섞여 있다. 팀 버너스리가 공개한 1993년 스크린샷은 인라인 이미지와 후기 기능을 포함하므로, 1990년 최초판의 회색조 화면과 동일하지 않다. 다른 회색조 캡처, 정보 창, 소스 코드와 메뉴 설명은 버전별 동작을 비교하는 데 사용된다.

정확한 기록을 위해서는 스크린샷의 촬영 시점, 실행 버전, NeXT 하드웨어와 표시 장치를 함께 표기하는 것이 바람직하다. 현대 재현판의 캡처는 원본 인터페이스를 이해하는 데 유용하지만, 원본 바이너리 실행 화면과 명확히 구분해야 한다.[76][77]

  1. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  2. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  3. CERN: History of the WorldWideWeb application ↩
  4. CERN: The Browser — WorldWideWeb NeXT Application ↩
  5. Tim Berners-Lee: WorldWideWeb browser tour ↩
  6. CERN: Inside the Code ↩
  7. W3C: Information Management: A Proposal ↩
  8. W3C: Proposal for a HyperText Project ↩
  9. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  10. Tim Berners-Lee: WorldWideWeb browser tour ↩
  11. CERN: The Browser — Info Dialog ↩
  12. CERN: A short history of the Web ↩
  13. CERN: The World Wide Web project ↩
  14. CERN: A short history of the Web ↩
  15. CERN: Line Mode Browser ↩
  16. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  17. CERN: Inside the Code ↩
  18. CERN: Inside the Code ↩
  19. CERN: Production Details ↩
  20. CERN: The Browser — WorldWideWeb NeXT Application ↩
  21. W3C: Proposal for a HyperText Project ↩
  22. CERN: History — Philosophy of the Web ↩
  23. Tim Berners-Lee: WorldWideWeb browser tour ↩
  24. Tim Berners-Lee: WorldWideWeb browser tour ↩
  25. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  26. Tim Berners-Lee: WorldWideWeb browser tour ↩
  27. CERN: The Browser — WorldWideWeb NeXT Application ↩
  28. Tim Berners-Lee: WorldWideWeb browser tour ↩
  29. CERN: The Browser — Browsing ↩
  30. CERN: The Browser — Editing ↩
  31. Tim Berners-Lee: WorldWideWeb browser tour ↩
  32. CERN: Inside the Code — Styling ↩
  33. Tim Berners-Lee: WorldWideWeb browser tour ↩
  34. CERN: The Browser — Linking and Editing ↩
  35. CERN: The Browser — Info Dialog ↩
  36. CERN: The Browser — Linking ↩
  37. Tim Berners-Lee: WorldWideWeb browser tour ↩
  38. CERN: Inside the Code — Styling ↩
  39. CERN: Typography — WorldWideWeb NeXT Application ↩
  40. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  41. W3C: Proposal for a HyperText Project ↩
  42. CERN: History — Abbreviated lineage ↩
  43. CERN: Inside the Code ↩
  44. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  45. CERN: Inside the Code — Hypertext and ParseHTML ↩
  46. Tim Berners-Lee: WorldWideWeb browser tour ↩
  47. CERN: Inside the Code — HTTP Ports ↩
  48. Tim Berners-Lee: WorldWideWeb browser tour ↩
  49. W3C: Proposal for a HyperText Project ↩
  50. CERN: The Browser — Editing ↩
  51. Tim Berners-Lee: WorldWideWeb browser tour ↩
  52. Tim Berners-Lee: WorldWideWeb browser tour ↩
  53. CERN: Inside the Code — Styling ↩
  54. Tim Berners-Lee: WorldWideWeb browser tour ↩
  55. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  56. CERN: History of the WorldWideWeb application ↩
  57. CERN: The World Wide Web project ↩
  58. CERN: Inside the Code — Hypertext ↩
  59. W3C: Proposal for a HyperText Project ↩
  60. CERN: History of the WorldWideWeb application ↩
  61. CERN: Typography — WorldWideWeb NeXT Application ↩
  62. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  63. CERN: Line Mode Browser ↩
  64. CERN: Line Mode Browser ↩
  65. W3C historical archive: Review of Erwise ↩
  66. W3C historical archive: ViolaWWW overview ↩
  67. W3C historical archive: User's Guide to ViolaWWW ↩
  68. W3C historical archive: MidasWWW Status ↩
  69. CERN archive: MidasWWW first release ↩
  70. CERN: History — browser lineage ↩
  71. Tim Berners-Lee: Frequently asked questions — Mosaic ↩
  72. Tim Berners-Lee: Frequently asked questions — first browsers ↩
  73. W3C: Proposal for a HyperText Project ↩
  74. CERN: Inside the Code ↩
  75. CERN: Production Details ↩
  76. Tim Berners-Lee: WorldWideWeb, the first Web client ↩
  77. CERN: Typography — WorldWideWeb NeXT Application ↩