오늘
IEBlog에 올라온
'호환성과 IE8'이란 글이 아주 눈물없이는 볼 수 없는 내용이라서 슬쩍 번역해 봅니다. 명백한 오역이 아니면 넘어갑시다. 주인장 영어 잘 못합니다.
적국어라규 (..)Dean의 최근 글, Internet Explorer 8과 Acid2: 이정표에서 그는 상호 운용성(브라우저가 달라도 웹페이지가 잘 보여야 하는 것)과 하위 호환성 (IE 버전이 달라도 잘 보여야 하는 것) 을 모두 해결해야 하는 우리의 책임을 강조했습니다. 우리는 그 두 가지를 모두 해결해야 합니다. 즉 IE8이 수십억 개가 넘는 웹페이지를 기존의 IE6과 IE7에서와 같이 모두 잘 보여줘야 하지만 앞으로 생길 - 상호 운용성을 준수하는 - 수십억개의 페이지를 만드는 작업을 더 쉽게 해줘야 한다는 겁니다. Dean이 제시한 주제에 대해서, 우리가 IE8에서 이 목표를 달성하기 위해 하고 있는 몇가지 작업에 대해 말해보려 합니다.
IE팀에 한 십년 넘게 있으면서, 그동안 서로 다르게 동작하는 IE의 여섯가지 버전 탓에 "웹을 망가뜨리지 말라"는 요청이 팀에 계속 들어오는 것을 봤습니다. IE 6에서, 우리는 호환성을 지키기 위해 DOCTYPE 스위치를 사용하여 다른 "모드"를 제공하였습니다. IE6이 2001년에 처음 발표되었을 때 "표준 모드"로 동작하는 페이지는 거의 없었습니다. (팀에서 상위 200개의 웹 사이트에 대해 조사를 해봤는데 결과는 약 1% 미만이었습니다) DOCTYPE이 무엇인지 아는 사람은 거의 없었고, 이것을 사용하는 프로그램도 거의 없었습니다. 우리는 IE6에서 DOCTYPE 스위치를 통하여 박스 모델의 동작을 변경하여 표준에 맞추고 개발자들이 새로운 동작 방법을 사용할 것인지 선택할 수 있게 하였습니다. IE 5.x에서 잘못 해석하는 CSS2 규격에 맞춰서 보이도록 만들어진 페이지가 굉장히 많았으므로, 한바탕 홍역을 치르지 않고는 이것을 바꿀 수 없다는 것을 알고 있었습니다.
우리는 IE7에서 IE가 표준을 더욱 잘 준수하도록, 특히 CSS에 관련된 내용을 많이 변경하였습니다. 이것은 "표준 모드"에만 적용되도록 하였고, 따라서 과거에 만들어진 페이지와의 호환성 문제를 최소로 줄일 수 있기를 기대했습니다. 그러나 불행하게도, 한편으로는 놀랍게도 그렇게 되지 않았습니다. 바뀐 내용중 꽤 많은 부분이 기존에 만들어진 페이지와 호환되지 않았습니다. IE7이 2006년 말에 발표되었을 때, 미국내 상위 200개의 사이트 중에서 대략 절반 정도가 이미 "표준 모드"로 동작하고 있었습니다. 그러한 사이트 중 대부분은 표준 모드를 채택한 제작 도구들로 만들어지고 있었습니다. 또한 그런 페이지 중 다수는 옳은 일 - 그들의 HTML 코드를 W3C의 표준에 맞추는 것 - 을 하려는 누군가의 수고로 만들어지고 있었습니다. 뭐 어찌되었건 사용자들은 새 버전의 IE에서도 자신들이 접속하는 사이트가 그전하고 똑같이 동작하기를 바랬던 것이죠. 그리고 그렇지 않았던 것이고요.
그런데 잠깐, 왜 이런 문제가 파이어폭스라든지 사파리 아니면 다른 브라우저에서는 발생하지 않았을까요? 답은 IE6 때문입니다. IE6의 표준 모드에서 발생하는 버그를 피할 수 있도록 사이트들이 만들어져 있었기 때문입니다. 그리고 이제는 IE7에서도 이것이 IE6과 똑같이 동작할 것으로 기대했기 때문입니다. 웹 개발자들은 브라우저가 똑같이 동작하기를 바랬습니다. 예를 들자면 내용이 박스 크기를 넘어갈 때, "표준 모드"에서도 표준과 다르게 동작한다든지 하는 것이 그대로 유지되기를 바랬습니다. 왜냐면 이미 자신들의 페이지를 거기에 맞춰서 만들어 놨으니까요. 대부분의 경우 IE가 아닌 다른 브라우저용으로 만들어진 스타일시트를 같은 페이지에 적용하면 더 나을 것을 IE에 맞춰서 동작시키기 위해 손을 댔습니다. 사이트들이 깨져 보이고 사용자들도 불편을 겪었습니다.
줄이자면 "심지어 표준 모드에서도, IE가 그전과 똑같이 동작하기를" 바랬다는 겁니다. IE6처럼 동작하기를요. 결국 표준 모드의 호환성을 더 잘 지키기 위해 도입한 DOCTYPE 스위치가 실제로는 제 구실을 하지 못한 것입니다. 우리는 "웹을 망가뜨리지 말라"는 말을 실제로는 "이미 IE가 이렇게 동작할 것이라 예상해서 만들어진 페이지에 대해서 동작 방법을 바꾸지 말라"는 것으로 알아들어야 한다는 것을 실감했습니다. (물론 나중에 만들어진 표준에 맞춰서 아직 개발중인 페이지들에 대해선 다르게 생각할 수도 있겠지만)
예상하지 못한 쓰디쓴 경험을 겪으면서, 우리는 웹 표준화 프로젝트 (WaSP-Microsoft Task Force)와 함께 작업했습니다. 어떤 말로도 그들의 노고를 대신할 수 없을 겁니다. 그냥 자리에 앉아서 표준을 준수하는 코드를 짜고 싶은 사람들이 몇 억명이 사용하는 브라우저를 만드는 입장이 되어보는 것은 굉장히 빡센 경험입니다. 우리는 간단한 명제에서 출발했습니다. "상호 호환성이 있는 웹 개발이 가능하게 하면서 (또한 장려하면서), 지금 버전의 IE에서 잘 동작하는 페이지 또한 잘 나와야 한다." 적어도 우리는, 모두가 '웹 개발자가 자신이 만든 페이지가 서로 다른 브라우저에서 제대로 나오나 테스트하기 위해 시간과 노력을 들일 필요가 없는 세상'으로 가고 싶어한다고 생각합니다. 동시에, 저희 어머니같은 사용자들이 자신이 사용하던 웹 사이트가 제대로 뜨지 않는 경험을 하게 해서는 안됩니다. 그것이 '표준을 더 잘 지킨다'같은 좋은 목적에서라도. 우리는 IE 8에 들어가는 새 엔진을 스타일과 레이아웃등에서 표준을 더 잘 지키도록 만들고 있으며, 이것은 기존의 웹 페이지를 깨져보이게 할 잠재적인 위험이 꽤 있습니다. (나중에 좀 더 자세하게 쓰겠지만 일단 Acid2 선언 포스트에서 살짝 다루고 있습니다)
우리는 웹 개발을 위한 모델이란 사실 "표준에 맞게 만들고 나서, 많이 쓰이는 브라우저에서 돌려보고 발생하는 문제를 수정해 나간다" 라는 것을 알게 되었습니다. 즉 웹 개발자들은 우리가 써먹을 수 있는 하나의 중요한 정보를 가지고 있다는 겁니다. 바로 그들이 테스트한 IE 버전입니다. 따라서 WaSP - MS Task Force 내에서 수많은 토론을 한 끝에, 우리는 태그를 바탕으로 "내가 테스트한 브라우저 버전에 맞추는" 방법을 쓰기로 했습니다.
WaSP-MS Task Force의 일원인 Aaron Gustafson이 A List Apart에 오늘자로 올린 글에서 이것을 다루고 있습니다. 다른 관점을 가지기 위해서 한번 읽어보기를 권합니다. 그러니까 요약하자면
- 'Quirks 모드'는 지금까지와 같이 동작한다. 현재 문서들과 호환된다.
- '표준 모드'는 IE7과 같이 동작한다. 현재 문서들과 호환된다.
- IE8이 '표준을 준수하도록' 하고 싶다면, 간단한 <meta> 태그를 사용하면 된다.
Aaron이 쓴 글에 더 자세한 내용이 나와있습니다.
이러한 접근법이 개발자들이 '웹 표준'을 준수하는 코드를 손쉽게 작성할 수 있게 하면서도, 지금 있는 페이지들과의 호환성 문제가 일어나지 않게 할 수 있는 최선의 방법이라고 믿습니다. 또한 이 방법을 통해서 개발자들이 새 버전의 IE8에서 바뀐 동작 방법 때문에 페이지를 뜯어고치느라 삽질하는 대신, 충분한 작업 시간을 가지고 '표준 표현 방법'을 받아들일 수 있게 될 것이라고 생각합니다. 우리는 IE8이 표준을 준수할 것이라는 것이 기쁩니다. 또한 사용자들과 개발자들이 '표준' 때문에 발생하는 문제를 겪지 않게 될 것이라 생각하여 더 기쁩니다.
Chris Wilson,
IE Platform Architect
..뭔가 더한 삽질이 추가되는 기분이긴 한데.. 아무튼 안습합니다.
버그투성이 IE6 덕분에 개발자들이 땀을 빼가며 핵을 만들어 놨더니, IE7에서는 표준을 지킨답시고 다르게 동작해서 페이지 깨먹지요, 게다가 IE7에도 버그가 있어서 이걸 또 피해가는 핵을 만들어야 하니 개발자들도 이가 갈릴 일이지요. IE팀에서는 자신들의 과오(..)를 깨닫고 수정해놨더니만 의도와는 다르게 또 욕을 들어먹으니 환장할 노릇일 겁니다. 아 독과점의 딜레마란.. 호환성이냐 기능개선 (표준!) 이냐..
그런데 거기에 대한 해결책이 IE 버전 지정이라 (..) 이것도 또 꽤나 삽질로 보이는데..