IE8의 버전지정의 2차 공방

웹표준계의 유명 인사들은 한마디씩 남기며 이미 웹을 흔들어 놓은 Version Targeting 이라는 주제의 제 2차 공방입니다. Zeldman 아저씨께서 "Version targeting, take two" 라고 제목을 붙이셨더군요. Zeldman 씨의 글과 Jeremy Keith씨의 글들인데 젤드만씨는 다들 아시니 Keith씨의 글을 번역했습니다. 아마도 1차 공방은 밑에 번역한 "Doctype을 넘어"의 “Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8” 과 번역하지 못했지만 그에 대한 답변인 Eric Meyer의 "From Switches to Targets: A Standardista's Journey" 이라는 글을 지칭하는듯 합니다. 아무튼 아직도 오픈되어 있는 토론의 장이니 주저말고 목소리를 내어 볼수 있는 시간인듯 하네요. 물론 영어로... 말입니다.

웹표준계에서는 꽤나 중요한 이슈이니 최대한 빠르게 전한다고 몽롱한 상태에서 마구 번역했습니다. 참고로 Keith 씨의 글은 내용은 쉬우면서도 글은 어렵게 표현해서 힘든것이 없잖아 있었습니다만 좋게 봐주시면 감사하겠습니다.

Translated with the permission of A List Apart Magazine and the author[s]. 이하의 글은 A List Apart Magazine과 저자의 허락아래 번역되었습니다.

브라우저를 향해 이미 쏘고 있잖아 안그래?

브라우저 벤더들에게 종속적 이노베이션은 그리 새로운 것이 아니다. 인터넷 익스플로러는 우리에게 IXMLHttpRequest, innerHTML 과 색상적용이 가능한 스크롤바를 주었으며 각각의 비표준 확장들을 자유롭게 사용 혹은 무시할수 있었다. 이제 인터넷익스플로러는 우리에게 새로운 종속적 테크놀로지를 버전지정 이라는 형태로 우리에게 소개하고 있다. 하지만 이번엔 이 기술을 무시하기 위해서는 뒤틀린 방식을 써야 한다.

혼전

내가 처음 ALA에서 버전지정에 대한 글을 읽었을때 한 부분이 이해가 되지 않았다. 에릭마이어의 열정적인 글의 마지막 부분에서 IE8 이 IE7 같이 작동 한다는 것을 언급 하는듯 했기 때문이었다. "말도 안돼" 라는 생각에 분명 에릭의 글을 오해 한것이라 생각했다. 올바른 이해를 위해서 Chris Wilson 에게, 만약 IE8 이 올바른 표준의 strict DOCTYPE (버전 지정 없이) 을 읽으면 어찌 되는지 물어보았다. 아니나다를까 그는 브라우저가 이전 버전처럼 똑같이 작동한다고 알려주었다.

이런 어불성설이 어디있나. 새 버전의 Word 가 이전 버전과 똑같고 숨겨진 명령어로만 새로운 기능을 사용할수 있다 상상해보라. 바로 그것이 마이크로소프트가 개발자들에게 요구하고 있는 것이다. 정확하게 따르지 않으면 IE8이 (IE9, IE10 등 계속) IE7과 완전 똑같이 작동 한다고 말이다.

나의 불신은 그저 마이크로소프트가 멍청하다거나 단순히 "악" 이라는 이유로 완화되지 않았다. 인터넷익스플로러 팀은 표준 이해가 아주 뛰어난 개발자들로 이루어져 있다. 분명 이 말도 안되는 믿기지 않는 방법을 제안 하는데에는 아주 좋은 이유가 있을것이라 생각한다.

웹을 구하기 위해 파괴하다

마이크로소프트의 제안은 IE6에서 IE7으로의 업그레이드라는 이벤트부터 시작되었다. IE6은 지루하고도 괴로운 몇년을 개발이 없이 보냈다. 결국에는 라이벌 브라우저들에 의해 시잠 점유율을 빼앗기기 시작하자 IE7 이라는 이전 버전보다 더 나은 CSS를 지원하는 브라우저를 내 놓는다.

IE6가 너무 많은 세월동안 고여있었기 때문에 그리고 시장점유 리더였기에 전체적으로 웹사이트들은 쿼크(quirk, ie의 비표준 모드) 이긴 하지만 브라우저에 작동하도록 코딩되었다. 이 웹사이트들은 "작동" 하는듯이 보인다. 다시 말하면 시장에서 가장 인기있는 브라우저에서는 잘 보인다는 것이다. 하지만 IE7 이 출시되었을때 이러한 웹사이트들은 필연적으로 다르게 렌더링 되었다. 웹표준을 준수하는데에 발전한 IE7 인만큼 타 표준 준수 브라우저들처럼 렌더링 한 것이다. 개발자들에게 브라우저용 핵 보다는 "컨디셔널 코멘트"를 사용해 달라는 켐페인에도 불구하고 마이크로소프트는 웹사이트 소유주들에게 IE7이 경기를 바꾸어 놓은데 대해 빗발치는 불만만을 받았다. 이것이 바로 인터넷 익스플로러 팀이 지칭하는 "Breaking the Web" 웹을깨는 것 이다.

위의 문구(breaking the web) 가 많은것을 말하지만서도 자세히는 담고 있지 않다. 첫째로 "웹"의 이슈가 아닌 "몇몇 웹사이트"의 이슈이다. 둘째로 "깨는것" 보다는 "다르게 표출하는것" 이 더 어울린다. 마지막으로 한개의 브라우저에서 웹사이트들이 어찌 보이느냐 를 이야기 한다는것을 잊으면 안된다. IE팀이 말하는 "웹을 깨는것" 은 엄밀히 말하자면 그들의 브라우저가 타 모던 브라우저들과 같은 방식으로 문서를 표기 한다는 것이다. 그것이 그리 나쁜 것일까?

누가 자식을 생각지 않겠는가?

사실 시장 리더라는 것은 동경할만 한 것이다. 하지만 그에 따르는 책임을 생각해 보라. 조그마한 변화에도 수천의 고객의 등을 돌리게 하는 테두리를 개발하고 지원하겠는가? 이것이 바로 마이크로소프트가 벗어나고자 하는 마비상태이다. 이 버전지정 제안은 이 부동의 상태를 깨는데에 좋은 해결책으로 볼수 있다. 거기에 meta 엘리먼트까지 가세하면 웹사이트들은 정확하게 어떻게 렌더링 되는지 지정할수 있다 (한 브라우저에서 말이다)

거기에다 마이크로소프트가 X-UA-compatible 을 ie7 에 지정했다면 많은 수고를 덜었을 지도 모른다. 개발자들이 브라우저 종속적인 핵을 고치기 위해 css를 제방문하여 수정하기 보다는 그저 웹마스터에게 사이트의 head 부분에 한 라이만 더하라고 하면 됬을 것이다. 비록 IE7에서 IE8으로의 업그레이드가 이정도로 기대를 얻지는 않았을 지라도 마이크로소프트가 미래를 준비했다는 것으로 위안이 되었을 것이다. 버전지정은 사이트 소유자들에게 특정 브라우저 버전에 렌더링이 종속되어 변하지 않도록 한다. 그것은 좋은 것이다. 나와 여러분 같은 표준 개발자들에게는 별 영향이 없을지라도 미래를 별로 걱정치 않는 사이트 소유자들에게는 간편한 해결책을 제공한다. 그 외에도 X-UA-compatible 이 헤더로 보내질수 있다는 사실만으로도 시스템 administrator 들에게도 서버 환경설정의 작은 한 변화로 이 이슈가 해결되는 것이다.

하지만 그 조차도 마이크로소프트에 따르면 너무 많은 것을 요구하는 것이다. 미래 개선에 별 상관치 않는 개발자들에게 meta 엘리먼트나 해더를 더함을 물어보는 것이 아니라 인터넷익스플로러는 표준 메니아 개발자들에게 버전지정을 사용하여 버전지정에 참여하지 않는 것을 기대하고 있다.

이유는 표준에 덜 집착하는 개발자들에게 한개의 엑스트라 라인을 문서에 넣는것에 신경을 쓰지 않아도 되기 때문이다. 오히려 그들에게 시장에서 제일 잘나가는 한 브라우저 버전의 쿼크모드를 쓰도록 권유하는 샘인것이다. 혹 그들의 문서가 타 브라우저에서 깨지는것은 마이크로소프트의 문제가 아닌것처럼. 이런 우월감으로 바라보는 시각의 반대면을 보면, 표준을 인식한 개발자들은 그들의 문서에 그 한줄을 사용할 가장 확실한 부류로 볼수 있다. 비록 설명할수 없는 이유로 IE=edge의 최신 버전 지정 사용이 권장되지 않고 있긴 하지만.

이 전략은 실패일 수 밖에 없다. 표준을 인식한 개발자들은 거의 본능적으로 한 브라우저에서 제대로 작동하도록 한줄의 불필요한 마크업을 하게 될것이다.

익사의 두려움

대부분의 웹 개발자 커뮤니티에서는 ie7 의 공개를 환영했지만 Redmond 안에서는 (마이크로소프트 회사가 위치한 Redmond, WA를 지칭하는듯) 실패로 보았다. 마이크로소프트는 IE7 업그레이드와 같은 실수를 되풀이할수 없다. 버전지정은 두려움의 산물인 기술이다. "웹을 깨는것" 을 두려워한 즉 다른말로 표현하자면 "한 브라우저에서 몇몇 사이트가 다르게 렌더링 되는것" 때문에 가혹한 반응, 해결책이 나온 것이다.

IE8이 얼마나 확연하게 현존하는 웹사이트들을 "깨는가"에 따라 이 두려움이 잘 혹은 덜 표현될 것이다. 개인적으로 나는 좀 아리송 하다. 도대체 다음 버전의 브라우저에는 무엇을 더하여 웹이 터지도록 할것인가? 만약 IE8이 이전 버전과는 확연히 다르게 표준을 준수하는 브라우저라면 파이어폭스나 사파리 오페라등의 표준 준수 브라우저들로 IE8에서 보이는 웹사이트들을 비교하여 평가해볼수 있을 것이다.

최고는 외롭다

Friendster 가 가장큰 소셜네트워킹 사이트였던 때가 있었다. 넷스케이프 네비게이터가 누구도 부인할수 없는 브라우저의 왕좌에 있었고 IE는 넷스케이프를 따라오려면 한참 먼 우스운 도전자였던 때가 있었다. 월드와이드웹 세계에서는 위치/상태 가 변덕스러우며 변화 한다. 이 버전지정의 기본 행동상태의 제안은 일정 기간동안 마이크로소프트가 자신의 브라우저로 성공하며 최고의 자리에 오른것을 기반으로 삼고 있다. 이것은 인터넷익스플로러를 통해서만 의미있는 웹의 경험을 할수 있다는 표현하지 않은 가정이다.

우리는 이 버전지정의 기본행동 상태가 없이는 혼돈의 범죄의 현장으로 변할것이라고 상기되고 있다.(한 브라우저에서...) 만약 마이크로소프트가 불완전한 IE8이 웹(한 브라우저에서...)을 구하는데 절대적이라고 생각하는것을 믿는다면 그것을 따르느냐 아니냐는 믿음에 달려있다. 바로 마이크로소프트가 IE8이 가지고 올 영향에 대해 올바르게 예언하고 있다는 믿음 말이다.

나는 사실을 기초해서 판단하고 싶다. IE8의 버전지정이 올바른 것인지 마이크로소프트가 쉽게 증명할수 있는 방법이 있다. IE8의 버전지정이 기본적으로 disable 되어있는 베타버전을 공개하는 것이다. 얼마나 웹이 깨지는지, 아니 몇몇 사이트들이 한 브라우저에서 다르게 렌더링 되는것이 얼마나 나쁜지 볼수 있을 것이다.

난 버전지정쪽의 모든 의견들을 듣고 이해 했다. 모두 IE8이 웹의 확연하게 많은 부분을 망칠꺼라는 가정을 하고 있었다. 만약 그 두려움이 베타브라우저의 출시후 현실이 된다면 난 당연히 버전지정쪽을 지원할것이다. 하지만 그때까지는 현재의 DOCTYPE을 담은 바르게 완성된 문서들을 최대한 지원하겠다는 몇년전의 약속을 지켜주기를 기대한다.

불완전한 미래

버전지정은 나쁜 아이디어가 아니다. 전달방식 메카니즘의 선택, 메타 엘리먼트 혹은 서버 해더는 좋다. 선택가능한 기능으로써 몇몇 환경에서는 정말 도움이 많이 될꺼라 믿는다. 하지만 강제적 마일스톤으로는 progressive enhancement 에 반대된다.

두통을 해결하기 위해 머리를 잘라버리는 것 처럼 IE의 버전지정은 "웹을 깨는것"을 해결할수 있다. 하지만 환자가 죽는다. 버전지정은 마이크로소프트가 이노베이션을 보여주는 기회일수 있었지만 그 반대로 이 제안은 마이크로소프트의 웹에 대한 근본적인 오해를 보여주었다. 웹의 창시자 팀 버너스 리의 웹은 언제나 "조금은 깨어져 있는" 곳이라는 것을 말이다.