Разработчик из Microsoft Реймонд Чен, который собирает истории о развитии Windows, рассказал, что в ранних сборках Windows 8 для планшетов в меню для вывода на экран кодов ошибок были заведены девять картинок с кошками, сидящими на заборе и вилявшие хвостиками, смотря на заходящую Луну. Именно эти картинки позволяли понять разработчикам, что произошла ошибка в запущенном приложении и экран с кнопкой «Пуск» недоступен.
Чен пояснил, что в интерфейсе планшета с Windows 8 его компоненты организованы в виде набора слоев, где каждый слой располагается поверх следующего.
Основной слой «Пуск», также есть слой «Приложения». Если пользователь использует приложение, то слой «Приложения» отображается в полноэкранном режиме. Если пользователь открывал в этот момент меню «Пуск», то слой «Пуск» закрывает слой «Приложения». Если последнее приложение закрывается, то автоматически открывается слой «Пуск». Всегда на экране должен отображаться только полноэкранный слой.
Во время разработки, конечно, что-то неизбежно пойдет не так. Тестировщики при проверках часто попадали в состояние, когда ни слой «Пуск», ни слой «Приложения» не отображаются, что приводит к черному экрану и зависанию устройства.
Разработчики столкнулись с тем, что черный экран может иметь несколько причин. Видеодрайвер мог глючить. Или видеодрайвер мог нормально работать, но система передачи изображений в память зависла, так что видеодрайверу ничего не дается. Или компоновщик картинки может работать нормально, но оболочка дала сбой, поэтому компоновщику нечего рендерить. Или оболочка могла быть запущена, но система не выдавала на экран нужную картинку из-за багов или ошибок и отображала черный фон.
Разработчики решили, что в этом случае им нужен вспомогательный экран, который бы отображался системой, если все остальные слои не работают и непонятно, почему возникла проблема. При штатной работе этот экран не виден — его слой всегда находится ниже остальных слоев.
На ранних отладочных сборках этот вспомогательный экран содержал ASCII-рисунки с кошками. Таким образом, если разработчики видели кошек, то знали, что попали в тот последний случай сбоя: оболочка работает, но забыла что-то вывести на экран.
Почему кошки? Чен предположил, что разработчик, создавший этот вспомогательный экран, просто любил кошек.
Как оказалось, этому разработчику так нравились кошки, что он создал серию картинок с кошками. При запуске системы они рисовали первое изображение с кошками на самом последнем слое. Каждый раз, когда показывался слой с кошками из-за ошибок в системе — их картинки перерисовались на новые, они циклически переходили к следующему изображению. Это было похоже на историю, которая рассказывалась по одному предложению за раз, причем каждое предложение раскрывалось в следующий раз, когда происходила ошибка на устройстве.
Чен раскрыл, что на практике все картинки подряд они никогда не видели, так как в ходе тестов разработчики никогда не проходили дальше даже первой картинки.
Если бы им не повезло и они все время видели ошибки, то слой с кошками запустился более девяти раз и там все пошло наоборот — они бы видели анимацию с кошками в обратном направлении — там всходила Луна.
У разработчиков даже сленг появился, когда они говорил об ошибках с планшетом — они говорили, что видели кошек и все понимали, что была ошибка.
Чен рассказал, что кошки не очень долго жили с разработчиками. В итоге команда по улучшению производительности системы попросила их убрать. Видите ли, в ASCII-графике используется моноширинный шрифт, а экран с кошками был единственной частью последовательности запуска, в которой использовался моноширинный шрифт. Отрисовка этого вспомогательного экрана каждый раз вынуждала растеризовать совершенно новый шрифт, на что тратилось системное время и память, чего не должно быть в рабочей системе.