우리가 원했던 것

게시 됨: 2022-03-10
요약 ↬ 오래된 진부한 속담에 "당신이 원하는 모든 것을 얻을 수 있습니다"는 특히 교활한 저주를 만듭니다. Edge가 곧 Chrome의 렌더링 엔진으로 전환함에 따라 좋든 나쁘든 쓰디쓴 소원이 이루어지고 있습니다.

확실히 말할 수는 없지만 문제가 발생하고 있다고 생각합니다. 문제 - 내가 아는 문제 . 그러나 진입로입니다. 나는 그것에 대해서만 들었습니다. 이 일을 한지 10년만입니다. 지난번에는 모든 리드업을 놓쳤습니다. 내가 확실히 말할 수 있는 것은 - 내가 경험으로 아는 것 - 나는 화를 내며 한 소원을 후회 없이 이룬 적이 없었다는 것이다.

10년(말해도 상관없습니다)은 꽤 긴 시간입니다. 웹 디자인 인턴십에 처음 들어갔을 때 좋은 인터넷 익스플로러는 이미 웃음거리였습니다.

“콘텐츠의 일부가 나타났다가 사라지고 페이지 섹션이 절반만 그려지는 것을 발견했다면 이는 요소에 레이아웃이 필요하다는 좋은 표시입니다. [...] hasLayout 수정은 일반적으로 기본적으로 레이아웃이 없을 때 요소가 레이아웃을 얻도록 하는 CSS 속성을 선언하는 것 이상을 포함하지 않습니다.”

— Internet Explorer hasLayout 속성

나는 IE를 싫어했다. 이제 대처할 수 있을 것 같습니다. 나는 하지 않으려고 노력했다. 정말, 진심으로 했습니다. 당신이 그것을 믿을 수 있다면 나는 사람들에게 지원하는 것이 재미 있었다고 말할 것입니다.

다른 모든 브라우저가 점점 더 다루기 쉬워짐에 따라 나는 기발한 오래된 IE에 대한 적어도 여전히 도전 이 있다는 것을 스스로에게 확신시키려고 노력했습니다. 그것이 자랑거리가 되기도 했습니다. 저는 모호한 IE 문제를 수정하는 데 너무 능숙하여 일상 개발 과정에서 문제를 피하는 법을 배웠고 IE에서 실행하고 무엇이 고장났는지 확인하십시오." 단계.

점프 후 더! 아래에서 계속 읽기 ↓

어떻게 보면 재미있습니다. 재미 . 그건 내가 스스로에게 한 거짓말이었다.

 /* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including “inherit”) without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */

— jQuery 모바일 소스

나는 그것을 혐오 해. 나는 회의에서 하는 나쁜 농담을 완전히 IE의 모든 화신에서 싫어했습니다. 나는 다른 사람들이 그랬던 것처럼 그것을 조금도 싫어했다.

“Internet Explorer 6에는 여러 부동 요소와 관련된 수수께끼 같은 버그가 있습니다. 마지막 부동 요소의 텍스트 문자가 마지막 부동 소수점 아래에 복제되는 경우가 있습니다. ... 직접적인 원인은 <!-- end left column --> 와 같이 순서대로 나오는 float 사이에 끼인 일반적인 HTML 주석에 불과합니다.”

— Explorer 6 중복 문자 버그

내 빌어먹을 시간의 낭비는 원래 그런 것입니다. 버벅거리는 가상 머신에 구부정하게 시간을 보냈습니다. 새로고침, 대기, 말도 안되는 버그에 말도 안되는 수정을 던지고, 다시 로드하고, 충돌 하고, IE를 다시 열고, 대기하고, 캐싱이 요인이 아닌지 다시 확인하고, 다시 로드하고, 그리고 반복합니다. 나는 내 시간으로 훨씬 더 많은 일을 할 수 있었습니다. 훨씬 더 많은 것을 배울 수 있었습니다.

나는 그것이 단지 내 작업을 방해하는 것이 아니라 웹을 방해하는 것뿐만 아니라 개발자로서 나를 방해한다고 확신했습니다. 두 번째 요점에서는 내가 완전히 틀리지 않았다고 생각합니다. 내가 축적한 모든 모호한 IE 6-7 브라우저 버그 지식은 이제 모두 쓸모가 없습니다. 내가 보여줘야 할 것은 "필터"라는 단어에 무의식적으로 움찔하는 것, margin 보다 padding 에 대한 불가해한 선호, z-index 에 대한 뿌리깊지만 근거 없는 두려움뿐입니다.</s></s> 수있는

"… 실제 클래스 이름이 다른 클래스 이름의 하위 문자열(또는 상위 문자열)인 경우 추가 공백으로 인해 잘못된 스타일이 선택됩니다."

— IE5/Mac 공백 구문 분석 버그

나는 그것이 사라지기를 바랐다. 법으로 금지된 영리하고 널리 퍼진 바이러스에 의해 제거된 Microsoft는 마침내 조잡한 렌더링 엔진의 손실을 줄이고 Firefox의 렌더링 엔진인 Gecko 로 전환하기 로 결정했습니다 . 하지만. 웹은 계속해서 진화했고 우리 개발자들은 계속해서 현재에 맞서 배를 타고 과거로 끊임없이 되돌아갔습니다.

Chrome이 등장하고 Firefox가 계속 개선되고 새로운 기능이 계속 출시되고 반응형 웹 디자인의 도래가 제시하는 흥미롭고 끝없는 가능성이 우리 앞에 펼쳐졌습니다. 이전 IE에서 거의 모든 작업을 수행할 수 있으므로 너무 조급해하지 마십시오.</s></s> 수있는

"IE8을 사용하고 있고 위에서 설명한 CSS 순서 지정 목록 번호 매기기 방식을 사용하고 있고 counter-resetcounter-increment CSS 속성을 사용하는 클래스가 있는 HTML이 페이지 로드 시 HIDDEN인 경우 숨겨진 HTML이 표시되고 모든 자동 번호는 0이 됩니다. 단, CSS :hover PSEUDO-CLASS가 해당 페이지에서 사용되는 경우에만 가능합니다!”

— IE8 "hover" 버그: 가장 멋진 IE 버그는?

적어도 상대적으로 나이가 많은 우리에게는 오늘날 그런 종류의 좌절감을 경험하는 것을 상상하기 어렵습니다. 요즈음에도 크로스 브라우저를 조정하는 데 엄청난 양의 작업이 필요하지 않다는 것은 말할 것도 없고요. 그런 일이 있다는 것을 너무 잘 압니다. 그러나 한 브라우저에서 CSS Grid가 작동하는 방식에 약간의 차이가 있다는 소식을 들을 때 " 시대에는 우리 가 가진 모든 것이 부동 소수점이었고 IE의 이중 여백 버그에 대해 말씀드리겠습니다 ." 다른 사람에게.

내가 틀렸어; 나는 그 점을 분명히 하고 싶다. 좌절한 것은 잘못이 아니다. 나는 누군가가 웹 개발의 어떤 측면에 대한 좌절에 대해 비난받아야 한다고 생각하지 않는 것처럼 오래된 브라우저 버그에 대해 불만을 품어서는 안 된다고 생각 합니다 . 아니요, 분노가 저를 이끈 결론은 틀렸습니다. 트라이던트가 한때 소금에 절였던 땅과 땅을 불태워버리고 싶은 욕망이었습니다.

나는 그 염장된 땅에서 극적으로 아이러니한 것이 한 가지만 자라고 있다고 생각합니다. 바로 새로운 세대의 웹 개발자를 위해 새로 태어난 동일한 좌절입니다. 브라우저 전쟁 후 몇 년이 지나지 않아 내가 경력을 시작했을 때 그 씨앗은 이미 뿌리를 내리고 있었습니다. 왜냐하면 우리 웹 개발자들이 Netscape를 같은 방식으로 저주했기 때문입니다. 더 약하고 버그가 많으며 틀림없이 더 나쁜 브라우저입니다. 그러나 Internet Explorer — 개발자들은 그 브라우저를 좋아 했습니다. 그리고 그들은 다른 브라우저( 나쁜 브라우저)가 그냥 사라지 기를 바랐습니다. 영리하고 널리 퍼진 바이러스에 의해 제거되고 법으로 금지되었으며 Netscape는 마침내 조잡한 렌더링 엔진의 손실을 줄이고 IE의 렌더링 엔진인 Trident 로 전환하기로 결정했습니다. 그것을 멀리 하십시오. 그 불가사의한 Internet Explorer 버그는 우연이나 과실로 발생한 것이 아닙니다. 그들은 Internet Explorer가 이겼 기 때문에 생겨났고 우리는 이기는 것을 좋아했습니다.

보십시오, 우리의 좌절과 분노는 평소처럼 우리에게 거짓말을 했습니다. 그들은 다른 더 나쁜 브라우저를 지원하는 것이 우리의 작업을 방해할 뿐만 아니라 웹을 방해할 뿐만 아니라 개발자로서 우리 를 방해한다고 말했습니다. 우리의 빌어먹을 시간의 낭비는 원래 그랬습니다. 그래서 우리는 그것이 우리 자신의 이익뿐만 아니라 전체 웹 의 이익을 위한 것이라고 스스로에게 말했습니다.

우리는 IE를 조금 더 무겁게 평가했습니다. 우리는 우리의 결정에 조금 더 많은 권한을 주었습니다. 그래서 많은 칩을 보유하고 있기 때문에 Microsoft는 그에 따라 카드를 사용했습니다. 누가 그들을 비난할 수 있겠습니까? 모두가 먼저 자신을 위해 웹사이트를 구축하고 나머지는 두 번째로 구축했습니다. 그들의 말은 이 아니었지만, 그것은 분명히 제안 그 이상이었습니다. 물론 여기저기서 웹 표준에서 약간 벗어났지만(조금만) 결국 The Biggest Browser에서 구현한 것이 일종의 사실상 표준이 아니었을까요? 게다가, 더 좋고, 더 빠르고, 더 쉬운 브라우저를 지원하는 것은 웹 자체가 서비스를 하는 것이었습니다! Microsoft와 함께 우리는 웹을 발전시켰습니다! 모두가 이깁니다.

오늘날 Microsoft의 Edge 브라우저를 구동하는 렌더링 엔진인 EdgeHTML은 오래된 Trident의 포크입니다. 확실히 Trident의 제거되고 크게 개선된 포크이지만, 일반적으로 그 자체의 장점으로 판단되는 것은 아닙니다. EdgeHTML 팀은 항상 몇 가지 단점을 가지고 작업해 왔습니다. 첫 번째는 기술적인 문제였습니다. Safari, Firefox 및 Chrome을 따라잡는 데 엄청난 시간과 노력이 필요했습니다. 두 번째는 감정적이었습니다. 수년간의 인터넷 익스플로러에 지친 우리, 당신과 나, 차가운 경멸의 표정으로 밝은 파란색 소문자 "e"를 바라보고 있었습니다.

몇 주 전에 Edge 팀은 곧 EdgeHTML을 포기하고 Chrome을 구동하는 렌더링 엔진인 Blink를 선택한다고 발표했습니다. 이 변경으로 Trident의 마지막 남은 불씨 몇 개는 영원히 꺼지게 될 것입니다. 그토록 많은 이들과 나누던 소원이 드디어 이루어집니다. 아이러니하게도 시간이 지나면서 EdgeHTML은 꽤 견고한 렌더링 엔진이 되었습니다.

Blink는 Google이 주도하고 관리하는 오픈 소스 프로젝트입니다. Chrome과 Opera 모두를 지원하며 후자는 몇 년 전에 자체 제작 렌더링 엔진을 유사하게 포기했습니다.

압도적인 차이로 Blink는 전 세계적으로 웹이 경험되는 방식이며 앞으로도 계속 그럴 것입니다. Blink는 빠르고 안정적이며 현대적인 기능으로 가득 차 있으며 여전히 진화하는 EdgeHTML 개발에 비해 고통이 없습니다 .

고대 IE 버그로부터 우리를 구하기에는 너무 늦었을지 모르지만 지원해야 할 렌더링 엔진이 하나 줄어들었기 때문에 작업 더 쉬울 것입니다. 당신과 나는 우리의 집단적 부담을 조금 더 잃게 될 것입니다. 그러나 그것은 브라우저에서 작동합니까? 우리의 프로젝트는 더 순조롭게 진행될 것이며 웹은 한때 그것을 억제했던 것에서 조금 더 많은 것을 잃게 될 것입니다.

웹의 많은 부분에 동력을 제공하는 엔진의 관리인으로서 Google의 말은 법률 이 아니라 제안 그 이상일 것입니다. 그리고 아마도 앞으로 몇 년 동안 그들은 여기저기서(의도적이든 우발적이든) 아주 작은 방식으로 웹 표준에서 벗어날 것입니다. 그러나 결국 The Biggest Browser에 의해 구현된 것이 일종의 사실상 표준 자체가 아닙니까? 게다가 어떻게 논쟁할 수 있단 말인가? 더 좋고, 빠르고, 더 강력한 브라우저를 선호하는 것은 결국 웹 자체를 서비스하는 것입니다. Google과 함께 웹을 발전시켜 나갈 것입니다. 모두가 승리할 것입니다.

즉, 표준 편차가 적고 잔소리가 작은 버그가 시간이 지남에 따라 커지지 않는 한 엔트로피와 안일함이라는 두 가지 힘 덕분입니다. 웹의 이익을 위해 내린 결정(프라이버시를 적대적인 것으로 악명 높은 광고 회사와 손잡고)이 조금 더 어둡게 느껴지기 시작하고 새로운 bogeyman이 우리 마음에 형성되기 시작하지 않는 한 - 우리의 오래된 두려움과 좌절감이 다시 일어났다는 것(예: 원래 위치에서 수백 픽셀을 렌더링하고 스크롤할 때 이상한 방식으로 깜박이는 불사조처럼).

앞으로 몇 년 동안 더 새롭고 흥미로운 렌더링 엔진이 등장하는 것을 보는 데는 많은 상상력이 필요하지 않습니다. 우리가 "모든 사람이 사용하는 브라우저"를 선호하기 때문에 지원 부족으로 인해 실패하는 것을 보는 것은 거의 상상력이 필요하지 않습니다.

다시 말하지만, 나는 모른다. 렌더링 엔진에서 이런 일이 발생하는 것을 본 적이 없습니다. 나는 이야기를 다 들었고, 그것이 어떻게 끝나는지 직접적으로만 압니다. 나는 오래된 정신적 상처의 고통에서 결말을 알고 있습니다. 코드의 일부 비트에서 비자발적으로 움찔하고 다른 코드를 피하도록 강요하는 근육 기억에서. 항상 조금 피곤하게 느껴졌지만 여전히 같은 공명을 내 자신이 인정할 수 없고 여전히 내 마음 깊은 곳에 간직한 비밀 소원에 대해 이야기하는 컨퍼런스 연설의 농담에서 그것을 압니다. 쓰디쓴, 증오스러운 소원.

하지만 이봐, 들어봐. 더 이상은 아닙니다. 이제, 내 말은 - 나는 결코하지 않을 것입니다. 지금은 좋은 렌더링 엔진 버그가 정말 마음에 듭니다. 그렇다.

" perspective() 를 사용한 CSS 3D 변환은 안팎으로 렌더링됩니다."

— bugs.chromium.org

내 말은, 그것은 실제로 일종의 재미있는 버그입니다. 맞죠? 어떻게 보면 재미 있습니다 . 알겠어?

재미있다.

재미있을거야 .