Pull to refresh

О браузерах и стандартах. Марсианские наушники

Website development *
Translation
Original author: Joel Spolsky
Приготовтесь, сейчас вы увидите предтечу всех священных войн на ресурсах, где зависают веб-разработчики. Перл Харбор по сравнению с этим покажется тем случаем на семейном чаепитии у бабушки, когда ваша сводная сестра в гневе выбежала из комнаты и поцеловала Мустангом дерево во дворе.

Предстоящая битва будет проходить под председательством Дена Хашамовича, ветерана Майкрософт, который сейчас возглавляет команду, готовящую вам Интернет Эксплорер 8.0. Команда IE8 сейчас в процессе принятия решения, которое лежит идеально точно и ровнехонько на той самой линии, что разделяет два разных пути видения мира.

Это граница между «консерваторами» и «либералами». Это граница между «идеалистами» и «реалистами». Это огромный глобальный джихад, разделяющий членов одной семьи, настраивающий инженеров против компьютерных спецов и Лексусы против оливковых деревьев.

И хотя решения проблемы нет, будет очень, очень интересно наблюдать, потому что 99% участников священных войн даже не трудятся разобраться, о чем они, вообще, спорят. И в то же время это не просто развлечение: это «обязательная программа» для каждого разработчика, который хочет создавать приложения, способные взаимодействовать с чем то ещё, кроме самих себя.

Священная война будет эскалироваться вокруг чего-то, называемого «веб-стандарты». Позволим Дену представить нам проблему:
Все браузеры имеют режим «Стандарты», его называют «Режим стандартов» и используют для того, чтобы получить наилучшую возможную реализацию стандартов браузером. Каждая версия каждого браузера имеет свой Режим стандартов, потому что каждая версия каждого браузера совершенствует свою поддержку стандартов. Есть режим стандартов Сафари 3, Режим стандартов Файерфокс 2, Режим стандартов IE6 и Режим стандартов IE7 — они разные. Мы хотим сделать так, чтобы Режим стандартов IE8 стал гораздо, гораздо лучше, чем был в IE7.

И вся проблема состоит из одного маленького решения — что именно должен делать IE8, когда наткнется на страничку, которая рапортует о поддержке стандартов, но, скорее всего, тестировалась только под IE7.

Что вообще, черт подери, такое эти стандарты?

Разве нету стандартов у всех видов инженерных разработок? (Есть)
Разве они не применяются везде? (Э-э-э… м...)

Почему «веб стандарты» так чертовски путаны? (И это не только вина Майкрософт, но и ваша вина тоже. И Джона Постела (1943-1998). Объясню позже.)

Решения нет. Любое решение будет чудовищно неверным. Эрик Бэнгман в Артс Техника пишет: «Команде IE приходится балансировать на тонкой грани между поддержкой W3C стандартов и поддержкой старых сайтов, написанных для старых версий IE». Но он не прав. Грань не тонкая. Ее ширина просто отрицательна. Балансировать негде. Их будут ругать как за поддержку одного так и за поддержку другого.

Вот почему я не могу принять ничью сторону в этой проблеме, да и не собираюсь. Но каждый разработчик программного обеспечения должен узнать, по крайней мере, как стандарты работают и как стандарты должны работать, а так же то, как мы завязались в этот гордиев узел. Я хочу немного прояснить эту проблему и тогда вы увидите, что это та же самая проблема, по которой Windows Vista так плохо продается, и та же проблема, о которой я писал, затрагивая тему противостояния Лагеря Реймонда Чена (прагматики) против Лагеря МСДН (идеалисты) в компании Майкрософт. Победил Лагерь МСДН и теперь уже никто не может понять куда делись их любимые пункты меню в Microsoft Office 2007. А еще никто не хочет Висту. И все это один и тот же спор: Идеалист ты («красный») или Прагматик («синий»).

Но давайте начнем с начала — подумаем как заставить вещи взаимодействовать.

Какие вещи? Да любые, на самом деле. Карандаш и точилку. Телефон и АТС. Страницу HTML и браузер. Графическое приложение под Виндоус и саму операционную систему Виндоус. Фейсбук и приложения для Фейсбук. Стерео наушники и плееры.

В точке соединения этих двух вещей должны быть сглажены все неровности, иначе они просто не будут работать вместе.

Продолжим с помощью простого примера.

Представьте, что вы полетели на Марс и обнаружили, что живущие там существа не изобрели карманного плеера и до сих пор носятся с бум-боксами.

Вы понимаете, что это привлекательная возможность для бизнеса и начинаете продавать MP3 плееры (только на Марсе они называются Йчнякрооооглделы) со стерео наушниками. Чтобы подсоединять наушники к MP3 плееру вы изобрели изящный металлический штекер, который выглядит вот так:



Поскольку вы контролируете производство и плеера и наушников, вы можете быть уверены, что плеер работает с вашими наушниками. Это рынок вида ОДИН-К-ОДНОМУ. Один плеер, одни наушники.



Предположим вы написали документацию, ожидая что сторонние компании сделают наушники других цветов, посколько Марсиане очень щепетильны в выборе цвета того, что втыкают себе в уши.



И когда вы писали документацию вы забыли написать, что рабочее напряжение наушников должно быть 1.4 вольта. Ну просто забыли. И вот появляется первый вдохновленный производитель 100% совместимых наушников. Его наушники ожидают стандартных 0.014 вольт и когда он тестирует прототип, то у него взрываются либо наушники — либо барабанные перепонки слушателя — в зависимости что выдержит дольше. Он делает некоторые подстройки и методом тыка находит конфигурацию, в которой наушники работают нормально и всего на пару микродецибелов отличаются от ваших.

Со временем появляется все больше и больше производителей совместимых наушников и скоро мы получаем рынок типа ОДИН-КО-МНОГИМ



Пока все идет хорошо. У нас есть стандарт де-факто штекеров для наушников. Написанная документация неполная и неточная, но любой, кто захочет сделать совместимые наушники, может просто воткнуть их в ваш стерео плеер и если они работают, то все хорошо — их можно продавать и они будут работать…

Так до тех самых пор, пока вы не решите выпустить новый Йчнякрооооглдел 2.0.

В Йчнякрооооглдел 2.0 будет встроен телефон (да, и до мобильников Марсиане тоже не догадались) и наушники будут иметь микрофон, которому требуется еще один провод, так что вы перерабатываете штекер во что-то несовместимое и даже местами страшное, зато с кучей места для возможного расширения:



И Йчнякрооооглдел 2.0 постигает тотальный провал на рынке. Да, у него есть прикольная телефонная фича, только никто не отметил этого. Зато все дорожили своими коллекциями наушников. Оказывается тот факт, что Марсиане щепетильно относятся к тому, что втыкают себе в уши, гораздо серьёзнее, чем казалось сначала. И к этому моменту у каждого стильного марсианина есть полный ящик разнообразных наушников. Для вас они все одинаково красные, но Марсиане очень, очень изощренны в оттенках красного, настолько что вы и представить себе не можете. Современный высокотехнологичный дом на Марсе уже даже имеет стандартный ящик для наушников. Такого вы точно не ожидали.

Итак, новый штекер не имеет успеха. Поэтому вы быстренько придумываете новую схему:



Заметьте, что вы разделили основной стержень, чтобы подсоединить еще один провод для микрофона, однако проблема в том, что Йчнякрооооглдел 2.1 в общем-то не знает, есть ли в подключенной гарнитуре микрофон или нет, но ему нужно это знать, чтобы задействовать или отключить возможность телефонных звонков. Так что, вы пишете маленький протокол обмена… новая редакция устройства посылает сигнал на микрофон и смотрит не пришел ли он вместо этого на «землю»; если пришел — значит это просто наушники без микрофона, так что устройство переключается в режим обратной совместимости, в котором можно только проигрывать музыку.
Это просто, но в то же время это есть общение по протоколу.

И у нас уже не рынок ОДИН-КО-МНОГИМ.
Все стерео устройства производятся одной и той же фирмой, так что я назову его МНОГОРЯДНЫМ (SEQUENCE MANY) рынком:



Вот несколько МНОГОРЯДНЫХ рынков, которые вам уже известны:
1. Фейсбук | около 20 000 приложений для него
2. Виндоус | около 1 000 000 приложений
3. Майкрософт Ворд | около 1 000 000 000 документов

Есть сотни других примеров. Основная вещь, которую надо помнить — это как только выходит новая версия устройства с левой стороны, она должна поддерживать обратную совместимость со старыми аксессуарами справа, которые работали со старой версией, так как скорее всего, старые аксессуары не разрабатывались с запасом на следующую инкарнацию продукта. Все именно так, как с Марсианскими наушниками. Вы не можете вернуться во времени и заменить их все. Гораздо проще и гибче сделать новое устройство так, чтобы оно вело себя как старое устройство, когда используется со старыми наушниками.

А с другой стороны, так как вы хотите развиваться, улучшать функциональность, вам так же понадобится новый протокол для новых устройств и гибкость в том, что в начале работы оно проверяет, поддерживают ли подключенные наушники новейший протокол.

Майкрософт всю свою сознательную жизнь провела на МНОГОРЯДНОМ рынке.

Но есть еще один виток — рынок МНОГИЕ-КО-МНОГИМ.

Проходит несколько лет. Вы продолжаете продавать Йчнякрооооглделы сумасшедшими темпами, но теперь на рынке много клонов Йчнякрооооглдела, например клон с открытыми исходниками ФайерЙчн, а так же целая куча наушников, и вы все проводите улучшения в конструкции, которые требуют изменения штекера и это сводит с ума производителей наушников, потому что им приходится тестировать свои продукты на каждом клоне Йчнякрооооглдела, что требует финансовых и временных затрат, да откровенно говоря у большинства из них просто не хватает времени и поэтому они проверяют их на самом популярном Йчнякрооооглдел 5.0, и если с ним работает — они счастливы; но само собой, если воткнуть такие наушники в ФайерЙчн 3.0 и подождать, то они взорвутся в руках из-за одного небольшого недоразумения в спецификациях относительно опции, которую, на самом деле, никто до конца не понимает, и зовется она hasLayout. Все просто знают, что когда идет дождь, то hasLayout равен true и напряжение должно увеличиться, чтобы заработали дворники на ветровом стекле. Но возникли споры — являются ли град и снег тоже дождем в применении к hasLayout, потому что в спецификациях это не уточнено. Команда разработчиков ФайерЙчн 3.0 считает снег дождем, потому что вам ведь нужны дворники при снеге, а разработчики Йчнякрооооглдел 5.0 — нет, потому что программист, который написал этот функционал живет в теплой части Марса где нету снега и вообще у него даже прав нету. Да, на Марсе тоже есть водительские права.

И вот какой-то зануда пишет длиннющую статью в своем блоге о том, как заставить Йчнякрооооглдел 5.0 вести себя в точности как ФайерЙчн 3.0, путем использования бага в Йчнякрооооглдел 5.0, из-за которого Йчнякрооооглдел думает, что идет дождь, если растопить немного снега. Звучит смехотворно, но все так и делают, чтобы разрешить несовместимость с hasLayout. Позже разработчики Йчнякрооооглдел правят этот баг в версии 6.0, и вы снова в растерянности, вам приходится искать новый баг, который можно эксплуатировать, чтобы заставить ваши наушники с дворниками работать с любым устройством.

И ТЕПЕРЬ..., теперь у нас рынок МНОГИЕ-КО-МНОГИМ. Много игроков с левой стороны, которые не сотрудничают, и КВИНТИЛЛИОНЫ с правой. И все они делают ошибки, потому что Человеку Свойственно Ошибаться.



И конечно же это та ситуация, которая сейчас сложилась с HTML. Десятки браузеров и буквально миллиарды веб-страниц.



И на протяжении всех лет существования рынка МНОГИЕ-КО-МНОГИМ постоянно слышатся крики и требования «стандартов», чтобы «все игроки» (имеется в виду маленькие игроки) имели равные шансы и возможности отображать все 8 миллиардов страниц правильно. И что еще более важно, чтобы разработчики тех самых 8 миллиардов страниц должны были тестировать только под одним браузером и благодаря «веб стандартам» могли бы быть уверены, что их страница будет работать так же и в других браузерах без необходимости тестирования в каждом отдельно.



Видите, идея в том, что вместо тестирования многие-ко-многим, получается тестирование многие-к-стандарту и стандарт-ко-многим, что гораздо меньше. Уже не говоря, что вашей странице больше не нужен специальный браузеро-зависимый код, чтобы обходить баги отдельных браузеров, ведь в этом платоническом мире багов не существует.

Это идиллия.

А на практике, есть маленькая проблема — нету способа протестировать страничку на стандарты, потому что нету эталонной реализации, которая бы гарантировала, что если работает в ней, то заработает везде. Ее просто не существует.

Так что вам приходится «тестировать» в своей голове вспоминая кучу документов, описывающих стандарты, которые вы, наверное, никогда и не читали, а если и читали, то так до конца и не поняли.

И документы эти МЕГАзапутывающие. Спецификации полны фраз вроде: «Если дочерний контейнер (не плавающий и не абсолютно позиционированный) следует за бегущим, то бегущий блок становится первым внутренним блоком контейнера. Бегущий блок не может входить в контейнер, который уже включает в себя бегущий блок, или сам является бегущим.» Каждый раз как я это читаю я удивляюсь как вообще кто-то может правильно следовать спецификациям.

Не существует практического способа проверить следует ли та страница, что вы только что написали, стандартам. Да, есть валидаторы, но они вам не скажут как должна выглядеть страница. А в том, чтобы иметь страницу где текст налазит друг на друга и ничего не стоит ровно, но зато она «валидна», тоже мало толку. Так что, все что люди делают — это прогоняют свои страницы в одном, может двух браузерах, пока они не станут выглядеть нормально. И если они сделали ошибку, которая тем не менее отображается как надо в IE и Firefox, то им даже неинтересно будет знать про нее.

И есть немалая вероятность, что их страницы «поплывут» с выходом новых версий.

Если бы вы когда-нибудь посещали ультра-ортодоксальные еврейские общины в Иерусалиме, все члены которых поклялись в полнейшем соблюдении каждой йоты еврейского закона, то вы бы узнали что не взирая на общее согласие что является кошерной едой, вы не найдете ни одного раввина, который захотел бы отобедать у себя дома с раввином из другой ультра-правой общины. А в наши дни веб-разработчики открывают для себя то, что евреи из Меа Шеарим знали десятилетиями: то, что вы следуете одной книге вовсе не ведет к совместимости, потому что законы настолько объёмны, сложны и витиеваты, что практически невозможно понять их все в достаточной мере для того, чтобы избежать подводных камней.

Стандарты, конечно, великая цель, но прежде чем вы станете фанатиками стандартов вы должны понять, что вследствие всех недостатков человека, в трактовании стандартов иногда возникают недоразумения, временами путающие и даже двусмысленные.

Ядро проблемы в том, что вы думаете, что есть один стандарт, но так как никто не может реально протестировать на соответствие с ним, то стандарт этот — виртуальный: это платонический идеал и набор недоразумений, а следовательно такой стандарт не служит достижению желаемой цели — уменьшению матрицы тестирований на рынке МНОГИЕ-КО-МНОГИМ.

DOCTYPE это миф.

Обычный смертный, который включил DOCTYPE себе в страницу, приговаривая «это стандартный HTML» просто наслаждается сам собой. Нет никакого способа узнать — стандартный ли. И на самом они говорят то, что эта страница по идее должна быть стандартным HTML. А что они действительно знают, так это то, что они протестировали её в IE, Файерфокс, может быть Опере и Сафари, и она вроде бы работала. А может они вообще просто перепечатали DOCTYPE из книжки и понятия не имеют, что он значит.

В реальном мире, где люди несовершенны нельзя иметь стандарт, базирующийся только на спецификации — нужна четкая реализация, на которой все смогли бы тестировать. Иначе у вас будет 17 разных стандартов или вообще ни одного.

Джон Постел в 1981 спровоцировал проблему сформулировав принцип надежности (точнее принцип робастности, но в виду близости понятий, здесь и далее будет «принцип надежности» — прим. перев.): «Будьте консервативны в том, что делаете, и будьте либеральны в том, что принимаете от других.» Этим он хотел сказать, что для того, чтобы сделать надежный протокол, нужно как можно точнее придерживаться спецификаций, и в то же время «прощать» тех партнеров, кто не следует спецификациям в точности. Прощать до тех пор, пока вы в состоянии понять, что они хотят сказать.

Так, для того, чтобы сделать параграф с маленьким текстом нужно написать <p><small>, но многие люди писали <small><p> что технически неверно (по причинам, которые большая часть веб разработчиков не понимают) но веб-браузеры «прощали» им и делали текст маленьким, потому что ясно, что именно этого люди и хотели добиться.

Теперь мы имеем в сети все эти страницы с ошибками, потому что все разработчики первых браузеров сделали супер-либеральные и дружелюбные программы, которые любили вас за то, какими вы есть и не особо огорчались, если вы сделаете ошибку. И вот у нас куча ошибок и оказывается принцип «надежности» Постела не сильно-то работает. На проблему не обращали внимание многие годы. Но в 2001 году Маршалл Роуз наконец-то написал:
Вопреки интуиции, Постеловский принцип надежности часто ведет к проблемам в развёртывании решений. Почему? Когда выходит новая реализация чего-то (например html страница — прим. пер.) то она сначала сталкивается только с ограниченным набором существующих реализаций (например браузеров — прим. пер.). И если эти реализации (браузеры) следуют «принципу надежности», то ошибки в новой реализации (странице) останутся необнаруженными. Процесс повторяется много раз, но рано или поздно новая не-совсем-корректная реализация (например страница со скрытыми ошибками — прим. пер.) попадет в менее либеральное окружение чем изначально. Что тогда произойдет объяснять не надо"

Нужно отдать должное Джону Постелу за все, что он сделал для развития Интернет, и действительно не стоит винить его за непопулярный принцип надежности. 1981 это уже как каменный век. Если бы Постел знал, что 90 миллионов людей, не являющихся специально подготовленными инженерами, будут создавать веб-сайты и делать все эти ужасные ошибки, а первые браузеры в виду какой-то невиданной щедрости будут прощать эти ошибки и все равно отображать страницу, он бы понял, что это неправильный принцип, и что на самом деле, идеалисты веб-стандартов правы, и веб должен был быть построен на очень, очень строгих стандартах и каждый браузер должен был быть серьёзно назойливым в требовании от вас этих стандартов. И чтобы те разработчики, которые не могут понять что значит «быть консервативным в том, что делаешь» не смогли бы публиковать свои странички, пока они не будут соответствовать стандарту.

Но, конечно, если бы случилось так, то наверное у веба никогда бы не было такого взлета, а мы бы, наверное использовали гигантскую сеть Lotus Notes под управлением AT&T.(Содрогнулся)

Да и вообще, если бы да кабы… мы там где мы есть. Какая уже разница. Мы не можем изменить прошлое, только будущее. Да и будущее то с трудом.

Если бы вы были прагматиком в команде Инетрнет Эксплорер 8.0, то в вашей памяти были бы выгравированы слова Реймонда Чена. Он писал о том, почему Windows XP приходится эмулировать ошибочное поведение старых версий Windows:
Посмотрите на это с точки зрения потребителя. Вы купили программы А, Б и В. Потом вы обновились до Windows XP. И теперь ваш компьютер стал беспричинно подвисать, а программа В не работает вообще. Вы скажете своим друзьям: «Не обновляйтесь до Windows XP. Она виснет, падает в синий экран, и несовместима с программой В». Вы же не будете запускать отладку, чтобы определить, что синие экраны вызывает программа А, а программа В не работает потому, что использует недокументированные сообщения окон. Вместо этого вы просто вернете Windows XP и потребуете назад деньги. (Вы купили программы А, Б и В уже очень давно, и 30-дневный период для возврата давно истек. Так что все, что вы можете вернуть — это Windows XP)

И вы думаете, хммм, давайте приведем к современным реалиям:
Посмотрите на это с точки зрения потребителя. Вы купили программы А, Б и В. Потом вы обновились до Windows XPVista. И теперь ваш компьютер стал беспричинно подвисать, а программа В не работает вообще. Вы скажете своим друзьям: «Не обновляйтесь до Windows XPVista. Она виснет, падает в синий экран, и несовместима с программой В». Вы же не будете запускать отладку, чтобы определить, что синие экраны вызывает программа А, а программа В не работает потому, что использует недокументированныенебезопасные сообщения окон. Вместо этого вы просто вернете Windows XPVista и потребуете назад деньги. (Вы купили программы А, Б и В уже очень давно, и 30-дневный период для возврата давно истек. Так что все, что вы можете вернуть — это Windows XPVista)

Победа идеалистов над прагматиками в Майкрософт, о которой я говорил в 2004, является прямой причиной того, что Vista плохо продается и имеет негативные обзоры.

А как это относится к команде IE?
Посмотрите на это с точки зрения потребителя. Вы посещаете 100 сайтов в день. Затем вы обновились до IE8. И теперь половина из них перекошена, а Google Maps не работает вообще.



Вы скажете своим друзьям: «Не обновляйтесь до IE8. В нем неправильно отображаются все странички, а Google Maps не работает вообще». Вы же не будете просматривать исходный код, чтобы определить, что сайт А использует нестандартный HTML, а Google Maps не работает потому, что использует нестандартные JavaScript объекты старых версий IE, которые так никогда и не были одобрены комитетом стандартов. Вместо этого вы просто удалите IE8. (Все эти сайты вне вашего контроля. Некоторые из них были сделаны людьми которые уже мертвы. Так что все, что вы можете сделать — это вернуться к IE7)

Итак, если вы разработчик в команде IE8, то первым, что придет вам в голову, будет сделать в точности так, как всегда работало на МНОГОРЯДНОМ рынке. Вы собираетесь сделать маленькое протокольное общение, и продолжать эмулировать старое глючное поведение для каждой страницы, которая не сообщила четко, что она ожидает нового поведения, так что все существующие страницы продолжат работать, и новое правильное поведение будет работать только для тех сайтов, которые поставили у себя специальный флаг, говорящий программе «Эй! Я знаток IE8! Снизойди на меня Благодатью IE8!».

И первое решение озвученное командой IE 21 января было именно таким. Веб браузер должен был бесшовно поддерживать старые страницы.

Прагматичный инженер сказал бы, что первое решение команды IE было правильным. Но молодые идеалисты «стандартов» затеяли войну.

IE должен предоставлять поведение «по стандартам» без специального «Эгей! Меня протестировали в IE8» — сказали они. Их тошнило от специальных тегов. Каждая чертова страница должна была иметь тридцать семь уродливых хаков, чтобы работать в пяти или шести популярных браузерах. Довольно уродливых хаков! Будьте вы прокляты 8 миллиардов страниц.

И команда IE сделала рокировку. Их второе решение (и надо думать не финальное) — это сделать идеалистическую вещь. По-умолчанию воспринимать все сайты, которые говорят что они «совместимы со стандартамим», как протестированные в IE8.

Почти все страницы, которые я посетил в IE8, были так или иначе сломаны. Сайты, на которых много JavaScript, вообще мертвы. У некоторых сайтов менее заметные проблемы: они выглядят нормально, но если продолжать, то окажется что какая-нибудь критичная форма не отсылается или ведет к пустой странице.

И это ошибки не страниц. Это обычные сайты, аккуратно построенные, чтобы следовать стандартам. Но ни IE 6 ни IE 7 в действительности не следуют стандартам, так то эти сайты включают в себя маленькие хаки, типа «В Интернет Эксплорере… подвинуть этот блок на 17 пикселей вправо, чтобы компенсировать ошибку в IE».

И IE 8 — это тоже IE, но у него больше нету бага, что был в IE 7, который двигал ту штуку на 17 пикселей влево от того места, где она должна была быть по стандартам. И теперь код, который был вполне оправданно написан, не работает.

IE 8 не в состоянии отобразить большинство страниц корректно, пока вы не сдадитесь и не нажмете «ЭМУЛИРОВАТЬ IE 7». Но идеалистам все равно — они считают что все эти страницы должны быть изменены.

Некоторые страницы не могут быть изменены. А большинство из них были созданы людьми, которые не имеют ни малейшего понятия что происходит, и почему их страница, за которую они заплатили разработчикам 4 года назад, работает неправильно.

Идеалисты ликовали. Сотни их выплеснулись в IE блоги, чтобы написать что-то хорошее о Майкрософт первый раз в жизни.

Я посмотрел на часы… Тик-тик-тик…

Делом секунд был подождать пока в форумах начнут появляться такие сообщения:
Я скачал IE 8 и глюки вместе с ним. Некоторые из моих сайтов, например домашняя страница, трудночитаемы и вся страничка очень маленькая… Скорость моего соединения тоже уменьшилась в некоторых случаях. Когда я использую Google Maps кругом накладывающиеся слои, и их очень трудно использовать!

Дааа… Все вы самодовольные идеалисты смеётесь над этим новичком. Но потребитель не идиот. Это может оказаться ваша жена. Так что перестаньте смеяться. 98% мира поставит IE 8 и скажет: «В нем ошибки — я не вижу своих страниц.» И они абсолютно не разделяют глупый религиозный энтузиазм по поводу выпуска веб-браузера, который строго следует мистическим, платоническим «стандартам» которые реально нигде не воплощены. Они не хотят слышать истории про кучу хаков. Они хотят браузер, который работает с реальными сайтами.

Как видите, у нас замечательный пример пропасти между двумя лагерями.

Лагерь веб стандартов похож на Троцкистов. Вы думаете что они — левое крыло, но если вы сделали веб-сайт, который говорит что поддерживает стандарты, но на самом деле нет — идеалисты превращаются в Джо Арпайо, самого жестокого шерифа Америки. «ТЫ СДЕЛАЛ ОШИБКУ И ТВОЙ САЙТ ДОЛЖЕН СЛОМАТЬСЯ! Мне плевать если 80% твоих сайтов перестанет работать. Я посажу тебя в тюрьму, где ты будешь носить розовую пижаму, есть сендвичи за 15 центов и работать на цепи. И мне плевать если вся страна окажется в тюрьме. Закон есть закон!»

С другой стороны — прагматичный, чувствительный, теплый белый и пушистый инженер. «Нельзя ли сделать режим IE7 режимом по-умолчанию?». Одна строчка кода… Вжик! Сделано!

Хотите секрет? Вот что я думаю произойдет. Команда IE8 скажет всем, что режим стандартов будет по умолчанию, и запустит долгое бета тестирование, на протяжении которого, будет просить всех протестировать их сайт в IE8 и попробовать заставить его заработать. А ближе к релизу, когда окажется, что только 32% всех страниц в мире отображаются корректно, они скажут «смотрите, нам очень жаль, мы действительно хотели чтобы режим стандартов стоял по-умолчанию, но мы не можем поставлять неработающий браузер» и вернутся к прагматичному решению. Или не вернутся, потому что прагматики в Майкрософт долго были не у дел. В этом случае IE потеряет большую часть рынка, что потешит идеалистов дальше некуда, и скорее всего не уменьшит годовую премию Дена Хашамовича ни на цент.

Видите? Правильного ответа нет.

Как обычно, идеалисты на 100% правы в принципах и, как обычно, прагматики правы на практике. Флейм будет продолжаться годами. Этот спор разделяет мир ровно надвое. Если у вас есть какой-нибудь способ купить акции Священных Войн Интернета, то сейчас самое время это сделать.
Tags: browsermicrosoftiefirefoxoperasafariw3cwebstandards
Hubs: Website development
Total votes 122: ↑110 and ↓12 +98
Comments 248
Comments Comments 248

Popular right now