하나의 웹페이지에 진정한 끝이란 없으며 늘 존재하는 과정 중에 있을 따름이다. 이는 웹의 축복인 동시에 저주다. 무언가를 계속 “한다”는 사실만으로 충만함을 느끼면서도, 결코 무언가를 “다 했다”라는 느낌을 받을 수 없다.
유독 「baekchangin.com」을 떠올릴 때면 그 무게추가 저주에 가 있다. 나는 이 웹사이트가 희미하게나마 지난 작업들의 아카이브로 기능하기를 바란다. 그러나 웹 작업이 본질적으로 “work in progress”라면, “in progress”의 맥락을 제거하고 명사형 “work”로 응고시켜 보여주는 것이 타당한가? 어제 봤던 관계들과 오늘 보는 관계들은 다르다. 나는 「관계들」을 간증할 수 있는가?
웹의 작동 방식을 모두가 몸으로 내재화한 세계에서 이러한 고민은 시시하다. 「관계들」에 적힌 날짜와 ‘어제’, ‘내일’ 버튼을 보고 매일 연재되는 퍼즐임을 알아채는 것은 어렵지 않다. 마음이 동하는 이들은 이따금 접속하여 밀린 날의 퍼즐들을 해치울 수도 있다.
그러나 수행성이 노골적으로 드러나지 않는 경우에 웹의 수행성은 더욱 문제가 된다. 웹 아티스트 콜렉티브 Jodi의 웹사이트는 매번 접속할 때마다 그들의 랜덤한 작업 페이지로 리다이렉트된다. 즉 「jodi.org」는 존재가 아니라 상태다. 그러나 우리가 URL의 문을 두드릴 때 기대하는 것은 존재인 탓에, 요청—또는 시선—을 보낸 순간에 임시로 고정되는 상태를 존재로 인식한다. 무언가를 계속 “한다”는 사실의 충만함이 납작한 명사형 하이퍼링크로 뭉개지는 저주. 이것은 누구의 잘못도 아니다. 저주는 대개 그렇다.
하나의 웹페이지에 진정한 끝이란 없으며, 늘 존재하는 과정 중에 있을 따름이다. 즉 웹페이지는 여전히 “로딩중”이다. 우선 해명할 것을 해명하자. 나는 “로딩중”을 “로드 중”이나 “불러오는 중”으로 쓸 마음이 없다. “로딩중”은 잘못이 아니다. 규칙 위반이 규칙이 된다면 그것은 더 이상 위반이 아니다. HTTP 헤더의 “Referer”를 “Referrer”라고 쓰지 않는 것과 같고, “쩜쩜쩜”을 “점점점”이라 쓰지 않는 것과 같다.
그러나 “로딩중”이라는 기묘한 어휘가 무엇을 욕망했는지는 되짚어 볼 만하다. “저장 중”이나 “설치 중”을 떠올려 볼 때 우리에게는 “로드”를 대체할 적절한 두 글자 한자어가 없었을 것이다. 그리고 나서 “Loading…”을 새삼스럽게 바라본다. 주어와 be 동사가 탈락된 현재분사에서 동명사로, 아니 아예 독립적인 명사로 보아도 괜찮을 것 같다는 위험한 생각이 든다. 낮은 목소리로 연인의 이름을 읊조리듯, 로딩… 번역이 실패한 자리에 교란이 스며든다.
여하간 웹페이지는 여전히 “로딩중”이다. 그러나 그 사실은 너무 은밀하여 쉽사리 감각되지 않는다. 로딩으로 인해 생기는 공백은 해소, 내지는 적어도 해명되어야 할 시간으로 정의된다. 개발자들은 프로그레스 인디케이터(progress indicator)를 통해 어떠한 응답이 일어나고 있음을 급하게 호소한다. 불현듯 들려오는 노크 소리에 “나가요!” 하는 외침처럼.
웹페이지가 여전히 “로딩중”이라는 사실을 모두가 당연하게 받아들인다면 사실 이러한 외침은 필요가 없다. 그런데 왜 웹은 자신의 정체성을 포기하면서까지 이를 해명하고자 하는가? 웹을 열람하는 이들이 아케이드의 산보객(Flaneur)에서 직접적인 소비자로 변화함에 따라, 끝이 없이 유랑하던 웹페이지에게 명확한 목표(end)가 요구되었다. 더 이상 웹페이지에 놀러와 A를 발견하는 것이 아니라, A를 얻기 위해 웹페이지를 방문한다. 따라서 기대하던 A가 없거나, A가 어느새 B가 되는 상황은 오류다. REST API는 응답할 자원을 명시하는 명사형의 URI를 권장한다. 상태 관리(Stage Management)는 데이터의 모든 잠재적인 가능태를 통제할 것을 요구한다. 에러 핸들링(Error Handling)은 매끈한 웹페이지에서 벗어나는 사건마저 매끈하게 규명한다. 그리고 로딩을 표상하는 프로그레스 인디케이터는 마침내 공백의 시간까지 연인의 이름처럼 읊조린다. 상태에서 존재로, 동사에서 명사로. “로딩중”은 바로 이러한 치환의 지표다.
요컨대 웹페이지는 여전히 “로딩중”인데, “로딩중”은 (그 모호한 어원만큼이나) 모호한 함의를 갖는다. 한편으로 웹의 수행성을 나타내는 알레고리로 쓰이는 반면, 다른 한편으로는 그 수행성을 가리는 장치로 작동한다. 이 웹사이트의 주요한 기획은 후자를 전유하여 전자를 드러내는 데 있었다. 「baekchangin.com」의 홈페이지는 프로그레스 인디케이터를 주욱 늘어놓아 로딩 자체가 지켜봐야 할 대상이 되도록 한다. “로딩된” 무언가를 하염없이 기다리던 이는 배신감을 느끼다가도, 그곳에 내내 기다림 자체가 있었음을 어렴풋이 감각한다. 블라디미르와 에스트라공처럼, 그저 고도를 기다리며…
기획은 그랬다. 그러나 만들고 보니 무언가 어긋남을 알게 된다. 왜냐하면 “로딩중”인 것처럼 보이는 「baekchangin.com」의 홈페이지가 실은 전혀 “로딩중”이지 않기 때문이다. 슬라이드 쇼처럼 반복되는 프로그레스 인디케이터는 그저 정적인 gif 배열, 즉 그 리소스들이 “로딩된” 후에야 보이기 마련이다. 이쯤에서 나는 길을 잃었다. 한쪽에는 수사법으로써 “로딩”이라는 말을 갖고 노는 내가 있고, 다른 한쪽에는 기술적으로 로딩의 엄밀함을 따지는 내가 있다. 내 홈페이지가 진정 “로딩중”이 아니더라도 시적 허용이라며 스스로를 설득할 것인가? 또는 실로 “로딩중”인, 방문자에게 그 무엇도 도달하지 않는 까마득한 웹사이트를 만들고 그들을 설득해 낼 것인가? 둘 모두가 타당한 전략이었기 때문에 어떤 것도 타당해 보이지 않았다.
이 글 곳곳에 중단점처럼 찍어 놓은 물음들은 다 비슷한 진동수를 갖는다. 무한 순환하는 지표들의 배열은 “로딩중”인가 “로딩된”인가? 끝없는 작업들의 끝 있는 목록은 “로딩중”인가 “로딩된”인가? 작업들은 아카이브되는가 아카이브가 작업으로 환원되는가? 「baekchangin.com」은 백창인을 드러내는가 백창인의 작업들을 드러내는가? 백창인은 말을 하기 위해 웹을 하는가 웹을 하기 위해 말을 하는가?
동어반복의 맥놀이 앞에서 나는 더 이상 믹싱을 하지 않기로 한다. 교란을 해명하지 않고 생성의 힘으로 쓰기로 한다. 이건 새로운 결론이 아니다. 들뢰즈, 조이스, 라우센버그, 린치에게서 이미 목격한 바 있는. 그러나 웹을 하는 이들은 매체 자체의 유효성을 규정하는 문법과 프로토콜 아래 놓여 있다. 우리는 그것을 해체했을 때 윤리적·정치적 비판에 직면하는 대신 무효한 결과물을 얻게 된다. 거꾸로 말해 우리는 무효한 결과물을 얻게 될 위험으로 인해 규칙을 성실히 준수하는 데 머무르는 새로운 위험을 자초한다. 이 글은 물론 빠름을 지향하는, 상업화된, 중앙집권적 웹에 대한 비판이다. 그러나 이러한 위험은 빠름을 지향하는, 상업화된, 중앙집권적 웹 이전에 그리고 이면에 온다.
요컨대 빈 캔버스와 빈 html 파일은 다르다. 교란을 해명하지 않고 생성의 힘으로 쓰기 위한 방법론 또한 달라진다. 규칙을 준수함으로써 규칙을 준수하지 않는 것. 규칙을 준수하는 동시에 자연스럽게 발생하는 위반의 가능성을 바라보는 것. 우회와 전유. 가령 「baekchangin.com」은 자기 자신이 “로딩중”인지 “로딩된”인지 헷갈려 하고, 마침내 그것이 중요하지 않도록 해야 한다. 자연어 문법에서 이러한 감각은 어렵지 않게 ‘?’로 나타낼 수 있다. 그런데 URL에서 ‘?’는 쿼리 문자열을 표시하기 위한 구분자로 쓰인다. 이제 URL 형식 언어의 구분자를 전유하여 자연어의 ‘?’로 읽히게 하자. 구분자는 더 이상 아무것도 구분하지 않고, ‘loading’과 ‘loaded’ 뒤에 붙어 웹페이지의 정체를 교란한다. 그럼에도 여전히 웹페이지는 유효하며, 이 사실은 굳이 명시할 만큼 중요하다.
이제 ‘로딩중?’에서 ‘로딩된?’으로, ‘로딩된?’에서 ‘로딩중?’으로 이동할 수 있는 버튼이 필요하다. 문제가 복잡해진다. AG 랩에서 만든 「서울미디어시티비엔날레」 웹사이트의 헤더를 보자. 좌측에 위치한 대문 로고는 우선적으로 웹페이지의 현 상태를 나타내는 지표로 작동한다. “당신은 ‘서울미디어시티비엔날레’의 웹사이트를 보고 있다”. 그러나 이 웹사이트의 (홈페이지가 아닌) 다른 페이지에서 해당 버튼은 시각적으로 완전히 동일함에도 다른 말을 한다. “당신은 ‘서울미디어시티비엔날레’의 홈페이지로 갈 수 있다”. 현 상태의 지표에서 다른 상태의 경로로. 한편 우측의 언어 선택기는 늘 다른 상태의 경로로 작동한다. 한국어 페이지에서 ‘EN’, 영어 페이지에서 ‘한’을 보이는 인터페이스는 유튜브 등 동영상 플랫폼의 재생/일시정지 메커니즘과 닮아 있다. 그러나 웹상에서 버튼이 가지는 이중적 존재론—현 상태의 지표/다른 상태의 경로—탓에 언어 선택기는 의도치 않게 토끼-오리 착시와 같은 모호함을 제공한다. 우리의 웹 경험은 그 교란을 자체적으로 해명할 만큼 이러한 착시에 익숙하지만, 교란은 언제든 발현 가능한 잠정태로 똬리를 틀고 있다. 언어 선택기와 같은 메커니즘을 대문 로고의 자리에 이식한다면 웹사이트의 헤더는 금세 낯선 것이 된다.
마지막으로 홈페이지 설정이 남았다. 오랫동안 나는 「baekchangin.com」의 루트(‘/’)가 당연히 ‘로딩중(/loading)’을 가리켜야 할 것으로 믿었다. 그러나 ‘로딩중’이 ‘로딩중?’으로, ‘로딩된’이 ‘로딩된?’으로 변하자 두 페이지 간의 위계도 사라져 버렸다. 이제 주소 표시줄에 ‘baekchangin.com’을 입력하면 임의로 ‘/loading?’ 또는 ‘/loaded?’으로 리다이렉트된다. 루트를 위한 지표(index)는 없으며, 이중의 집을 위한 빈 연산 체계만이 자리한다. 그러니까 이 웹사이트의 홈은 2개 또는 0개, 그러나 1개는 아니다.