Несовершенство

NB: This is an old article (2019). Everything may have changed since publication.


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

На таких масштабах невозможно думать о людях как людях, они становятся пользователями.

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

Поэтому на этом сайте нет Гугл- или Яндекс-аналитики — мне незачем собирать эти данные, я не показываю рекламу. Full disclosure: эпизодически я смотрю на аксесс-логи, на огонь, воду и аксесс-логи можно смотреть бесконечно.

Когда я делаю свой сайт, я не думаю в масштабах человечества, я думаю в человеческих масштабах. Например: ошибки на индисайтах делают инструменты надёжнее.

Когда делаешь сервис для миллионов людей, то каждая ошибка, пусть даже она проявляется всего один раз на сто миллионов запросов, кого-нибудь обязательно заденет. На моём сайте — нет. (В то же время, если что-то на моём сайте не работает, то достучаться до меня гораздо проще.)

Это приводит к тому, что программистам больших сайтов хочется разложить мир по полочкам, с полочками проще работать: тогда будет меньше ошибок. Например, Фейсбук предлагает всем сайтам добавить себе определенную невидимую мета-информацию в виде og: метатегов для превьюшек, вместо того, чтобы распознавать её из того, что есть на странице.

Жёсткие структуры легче ломаются. Это было одной из главных проблем XML-эпохи Интернета: один не там закрытый тег, и читатель вместо сайта видел большое сообщение об ошибке. У универсальной разметки много потенциальных преимуществ, но жёсткий подход умирать при любой ошибке не взлетел (до появления сайтов на Реакте, конечно).

Но антоним жёсткости здесь не столько «гибкость», сколько устойчивость. Никакая строгая типизация тайпскрипта не спасёт от того, что в браузер доехала только половина бандла, а потом в вагоне метро пропал интернет, потому что этот случай находится вообще за пределами мира тайпскрипта, в этом мире и веба-то толком нет.

HTML и CSS очень толерантны к ошибкам авторов: незакрытый тег закроется сам, если нет тега <html>, то браузер его сам добавит, да ещё и попытается угадать кодировку текста, если она не указана. Это пример закона Постела в действии (Джон Постел — один из отцов Интернета).

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

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

За счёт того, что индивеб построен на микроформатах, а те, в свою очередь, на HTML, то система в целом получается более устойчивой, и от одной пропущенной двойной кавычки не упадёт.

Невалидная страница сайта — это на которой читателю нечего прочесть. Остальное уже детали.


Тема хрупкости также обсуждалась сегодня с немного другой стороны Джеффом Хуангом («This Page is Designed to Last»), в своей статье он пропагандирует простые решения (впрочем, тоже HTML без реакта и вебпаков), чтобы соптимизировать лёгкость поддержки сайта в работоспособным виде в долгой перспективе.


Не надо подходить к своему сайту так же серьёзно, как к постройке ракеты. Если сайт взорвётся, то всегда можно задеплоить новую версию, no big deal.

Недавно пришёл октябрьский the Economist, с таким вот артефактом:

журнал Economist с необрезанной частью страницы, артефакт производства

И ничего, нормально. Люди ошибаются, и это нормально.

Published at no particular date