밤 늦게 잠들기 전 잠깐 뉴스 feed를 훑어보다가 눈에 팍! 힘들어 가게 만드는 제목의 글을 발견. 😯

IE8 Blacklist: forcing standards rendering opt-in

이게 무슨 소리야? 분명 IE 8의 기본 렌더링 모드는 최신 웹 표준 모드로 동작할 것이라는 발표를 이미 밝힌 것으로 아는데, 얼마전 대충 읽고 흘려 두었던 IEBlog의 Compatibility View 소개 글을 다시 읽어보니 다음 구절이 하이라이트.

When users install Windows 7 Beta or the next IE8 update, they get a choice about opting-in to a list of sites that should be displayed in Compatibility View. Sites are on this list based on feedback from other IE8 customers: specifically, for what high-volume sites did other users click the Compatibility View button? This list updates automatically, and helps users who aren’t web-savvy have a better experience with web sites that aren’t yet IE8-ready.

Compatibility view improvements to come in IE8

결국, 특정 웹 사이트를 방문한 많은 사용자들이 IE8에 있는 Compatibility View 버튼을 누르게 되면, 이 기록들이 블랙리스트에 추가되면서 해당 사이트는 자동으로 IE7 Compatibility 모드로 보여진다고 하는 얘기. 문제는 아무리 사이트가 웹 표준을 준수해서 만들어졌더라도, 어쩌다 한 번 리스트에 올라가게 되면 해당 사이트의 top domain은 물론 subdomain들도 목록에 추가되면서 IE7 호환 모드로 보여준단다. 괜한 객기를 부렸다간 오해를 일으켜 큰 코 다칠 수도? 👿

이런 예기치 않은 상황을 미리 막으려면, 전에도 한 번 얘기되어 논란이 많았던, 완전 표준 모드로 동작하도록 하는 META tag이나 HTTP Header (X-UA-Compatible: IE=EmulateIE8 혹은 X-UA-Compatible: IE=Edge)를 추가하라는 얘기의 원점으로 다시 돌아오는데, 덩달아 Intranet 환경에선 Compatibility View 모드가 작동될 수도 있다니, 아직 정식 버전이 나오지도 않은 마당에 왜 이런 장막들만 자꾸 치려 하는 것인지 이해를 못하겠다.

Doctype, Conditional comments, Meta tags, documentMode, Compatibility View 버튼, Compatibility list, Internet/Intranet?… 과연 자신이 개발한 웹 사이트가 IE8 사용자의 모니터에는 정작 어떤 모습으로 비칠지 이젠 짐작조차 하기도 힘든 상황이 되고 만 것인가? 🙁

새벽에 괜히 이 무슨…

덧붙임: 혼란을 불러일으키고 있는 IE8의 Compatibility View에 관한 정리된 내용의 글이 올려짐.

이미 알려진 바와 크게 다른 내용은 없고,

  • 설치시 Compatibility View 사용은 기본 설정이 아니라 사용자의 선택 항목이다.
  • 블랙리스트에 올려진 WHOIS에 등록된 사이트의 주인에게는 메일로 이런 사실을 인지시키고 원하면 리스트 등록 삭제 과정도 함께 알려준다고 함.
  • 블랙리스트의 목록은 IE 보안 업데이트와는 분리되지만 비슷한 주기로 갱신된다고 함.
  • IE8 Compatibility View Blacklist Checker

이젠, IE8의 META Tag에 의한 표준/호환 모드 전환 설명 차트까지 등장할 지경이니, 이런 꼬인 상황의 해결책은 결국 그놈의 META tag 뿐일까?

EmulateIE7 tells IE8 to display standards DOCTYPEs in IE7 Standards mode, and Quirks DOCTYPEs in Quirks mode. We believe this will be the preferred IE7 compatibility mode for most cases. Support for IE=EmulateIE7 is available now as part of the IE June Security Update for IE8 Beta 1.

IEBLog : Introducing IE=EmulateIE7

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

요넘은 게으른 개발자들이 미쳐 모든 문서를 표준에 맞게 고치지 못한 경우, Quirks DOCTYPE을 가지고 있는 문서가 깨져 보이지 않도록 Quirks mode로 해석해서 보여준단다. 어쩔 수 없이 과거의 어두운 그림자를 더 길게 드리우게 되었다.

내가 진정 원하는 meta tag은,

<meta http-equiv="X-UA-Compatible" content="IE=자폭 모드 돌입 18초 전, 당장 새로운 브라우저를 까십시오!" />

IE8이 발표되기도 전, 많은 웹 개발자들은 IE8에서 새로 도입될 meta 요소를 추가하지 않는 한 가장 최신의 웹 표준 모드를 지원하지 않고 IE7과 별반 다르지 않게 된다는 사실로 인해 커다란 우려와 원성을 불러왔었다.

하지만, 오늘 올라온 IEBlog 글에 의하면, 개발자들의 말을 옳게 귀담아 들었는지, 기존 알려진 웹 표준 모드 작동 방식과 반대되는 결정을 알려왔다. 그래서, IE8의 기본 랜더링 모드는 가장 최신의 웹 표준 모드로 작동될 것이며, 기존 웹 표준을 무시하고 제작된 사이트에서 호환성을 위해 과거 “Quirks mode“를 사용해서 올바로 표시되도록 하려면 meta 요소를 이용한 “version targeting”을 따로 지정해 주어야만 한다. 결국 기존 입장을 완전히 반대로 뒤집는 것이지만, 웹 표준의 정착을 고려해보면, 이제야 올바른 방법으로 돌아온 것이라서 참으로 반가운 소식이다.

처음으로 IE 팀원들의 등을 두드려주고 싶어지지만, 역시나 IEBlog에 올려진 칭찬의 댓글들은 참으로 어색하게 느껴진다. 😈

많은 논란을 일으켰던 어제의 IE8 version targeting 사건으로 상당수 웹 개발자들에게 혼란과 걱정을 불러일으켰었으나, 하루가 지난 지금 뜻하지 않은 반가운 소식이 들리고 있다.

우연하게도, 바로 어제 W3C에 첫 Working Draft로 등재된 HTML5가 마침 구원의 손길을 보내온 것이다. 요는 HTML5 DOCTYPE을 쓰면, IE8을 포함한 모든 웹 브라우저들에서 어떤 쓸때없는 코드를 추가하지 않아도 가장 최신의 표준 랜더링 엔진을 사용하도록 할 수 있다는 것이다.

결국 다음 한 줄의 Doctype 선언이면, 예전처럼 브라우저 버전에 관계없이 웹 표준(CSS, HTML5, DOM, JavaScript)을 따르면서 미래를 대비하는 웹 사이트를 개발할 수 있게 된다는 것이다:

<!DOCTYPE HTML>

평상시 사용하는 Doctype 보다 무척 간단해 보이지만, 이것은 일부러 이렇게 간단하게 쓰일 수 있도록 의도된 바이다.
더 놀라운 것은, 현재의 모든 브라우저들(IE, FF, Safari, Opera)은 위의 Doctype을 보면 비록 HTML5을 아직 모두 다 구현하지는 않더라도 standards mode로 문서를 해석한다는 사실! 그래서, 약간의 무리는 따르겠지만, 지금 당장 문서에 적용할 수도 있단다.

골치 꽤 썩힐 뻔했던 version targeting으로부터 해방될 수 있으니 다행인 것은 사실이지만, 여전히 웹 표준을 따르며 제작된 현재의 웹 사이트들은 어떠한 수정 조치를 취하지 않는 한, IE8에서는 표준 모드로 해석되지 않는다는 것은 그래도 아쉬움으로 남을 수밖에 없다.

아무튼, 앞으로 HTML5가 가져올 흥미진진한 변화를 기대하며, 책갈피해 두었던 HTML5의 변화된 면모를 자세히 훑어볼 때이다.

지금 웹 개발자들 사이에선 갑자기 터져나온 차기 IE8에서 처음 도입될지도 모를 소위 “Version Targeting”에 관한 논쟁으로 시끌거리고 있다.

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />

이 웹 사이트는 IE X에 최적화되어 있습니다.의 부활?

당연한 얘기지만, 제대로 된 웹 개발자들은 웹 표준 규약을 준수하면서 접근성이 좋고 동시에 효율적이고 유용한, 그리고 점진적으로 확장 가능한(progressive enhancement) 웹 사이트를 개발하려고 하지 결코 특정 버전의 웹 브라우저만을 목표로 개발하지는 않는다고 믿고 있다. 그런데 이번 소식은 어쩌면 이런 믿음에 찬 물을 끼얹는 얘기가 될 수도 있다.

이런 얘기가 나온 것이, 앞으로 웹 표준 규약을 정말 잘 따르는 IE8을 발표하게 된다면, 현재 다수의 웹 표준을 무시하고 제작된 많은 웹 사이트들이 무참히 깨져 보이게 되는 현상을 막아보겠다는 의도로 이해되지만, 그 실제 구현 가능성이 의심스럽고 (IE8에 내장된 Time Machine?), 설령 이것이 그대로 구현된다고 하더라도, 위의 제안서에 의도된 대로 다른 웹 브라우저들에서도 똑같이 이번 version targeting 관련 meta tag가 구현되지는 않기만을 바랄 뿐이다. (다행히, 이미 WebKit에서는 version targeting을 구현하기 어렵다는 점을 밝혔다.)

이 소식을 듣고 가장 먼저 드는 의문은, 만약 이 meta tag을 완전 무시해서 개발된 지금의 사이트들은 IE8에서는 과연 IE6의 랜더링 엔진을 쓰게 될 것인가? 아니면 IE7? 짐작컨데, 이 경우는 또 Doctype switch에 따라 IE7(Standards mode)과 IE6(Quirks mode)를 오락가락 할 듯한데, 이렇게 되면 미래에 사용자가 아무리 더 똑똑한 웹 브라우저로 접속해도 해당 웹 사이트는 개발자의 손을 떠나 하나의 특정 랜더링 엔진에 묶여버리는 것은 아닌지?
몰론, 이것을 방지하기 위한 방법으로 한 줄의 meta tag를 추가해주고, 오래된 사이트의 경우 새로운 웹 표준 환경에 맞게 오래되고 잘못된 코드를 수정해주면 되겠지만, 과연 개발자의 주기적 유지보수가 지원되고 있는 웹 사이트는 얼마나 될 것이며, 어쩌면 웹 표준 나몰라라 하는 무지한 웹 개발자의 경우 이 version targeting을 역 이용해서 아예 자신의 웹 사이트를 자청해서 IE6에 묶어놓는 경우도 빈번할 것이다.

결국, 혁신에는 둔감해졌으나 시장 장악력을 최우선시 할 수 밖에 없는 MS가 독점적 위치에 있는 웹 브라우저의 자리를 앞으로도 계속 고수하기 위한 또 하나의 방어막이자 웹 표준으로 가기 위한 걸림돌로 밖에 보이지 않고, backwards compatibility를 앞세워서 현재의 웹 환경을 그냥 꽁꽁 얼려버릴지도 모를 일이다.

가장 우려되는 점은 이것이 실제 구현될 경우, 특히 IE의 독과점이 지속되고 있는 국내의 현실을 비추어 볼 때, 웹 표준화의 진척 속도는 더 느려질 수 밖에 없을 것이고, 어쩌면 웹 환경은 더 오랫동안 IE6 혹은 IE7에 묶여버리게 되리라는 예측이다.
더러운 먼지는 털어내야지, 진공 포장해서 고이 간직할 필요는 없지 않은가?

이번 제안을 몇 번씩 읽어봐도 장점이라고 예시된 backwards compatibility나 더 가속화될 IE의 웹 표준 기술 지원 주기(?), 개발시 특정 IE 버전을 위한 가상 머신의 불필요, 더 예측 가능하고 계획된 점진적 개발의 진행 등 여러 이점들 보다도, 이것이 가져올 더 심각한 부작용이 염려되는 것은 어쩔수 없다.

But wait, a lot of people say at this point, why isn’t this a problem for Firefox, or Safari, or any other browser? The answer is that developers of many sites had worked around many of the shortcomings or outright errors in IE6, and now expected IE7 to work just like IE6. Web developers expected us, for example, to maintain our model for how content overflows its box, even in “standards mode,” even though it didn’t follow the specification – because they’d already made their content work with our model.

IEBlog: Compatibility and IE8

그건 웹 표준이란 존재를 모르는 무지한 웹 개발자들의 불평이었겠지.

그나마, 이제 HTML5의 spec은 훨씬 더 명확해졌다는 소식은 들려오지만, 앞으로의 웹 개발 환경은 훨씬 더 복잡해지겠군. IE6 mode, IE7 mode, Super Standards mode… 😕

IE8에서 Super Standards mode를 원하세요? 그럼, 할 일이 하나 더 있군요. 아래의 meta tag를 추가하는 것도 잊지 마세요. 이제 Super Standards mode는 공짜가 아니랍니다! 아참, 요놈은 IE8 전용.

<meta http-equiv="X-UA-Compatible" content="IE=8" />