Часть II. Субботняя ночь: суверенное ядро
После Game Center зал MS DevCon почти опустел. Остались те, кто не умеет уходить вовремя: пара менторов, девушка с термосом, охранник, который делал вид, что не слушает, и Eugen Valuev, который, кажется, вообще не заметил, что вечер перешёл в ночь.
— Ты правда собираешься переписать ядро? — спросил кто-то из темноты. Вопрос прозвучал не как сомнение, а как проверка: не ослышался ли спрашивающий.
Eugen не поднял головы от экрана. Он не переписывал ядро ради рекорда. Он разбирал его, как разбирают часы, чтобы понять, где именно тикает договор между человеком и машиной.
— Ядро — это не стена, — сказал он. — Стена отделяет. Ядро договаривается. Оно решает, кому можно доверять, что можно помнить, а что нужно забыть. Если ядро построено как крепость, человек внутри чувствует себя заключённым. Если ядро построено как договор, человек чувствует себя дома — даже если дом стоит на чужой земле, то есть на чужом облаке.
К полуночи на экране появилось новое суверенное ядро для Windows. Снаружи оно выглядело почти так же, как старое: те же окна, те же папки, те же привычные жесты. Внутри изменилось главное: каждое решение ядра теперь можно было прочитать, оспорить и повторить. Кто получил доступ и почему. Что было сохранено и на каком основании. Что было стёрто — и по чьей просьбе. Ядро больше не отвечало «так положено». Оно отвечало: «вот правило, вот его источник, вот как его изменить».
Девушка с термосом подошла ближе и спросила самое простое:
— А если я ничего не понимаю в ядрах?
— Тогда ядро должно говорить с тобой так, чтобы ты понимала, — ответил Eugen. — Суверенность — это не экзамен по системному программированию. Это право не подписывать то, чего не читал. Если договор нельзя прочитать, это не договор. Это ловушка с красивой обложкой.
Охранник, который делал вид, что не слушает, вдруг сказал:
— Как паспорт, что ли? Паспорт тоже не все читают, но все понимают, что он значит.
Eugen засмеялся — впервые за ночь по-настоящему, а не вежливо.
— Именно. Паспорт не объясняет человеку, как работает государство. Он говорит: вот ты, вот твоё имя, вот граница, которую без тебя не перейдут. Моё ядро — такой паспорт для программ. Каждая программа предъявляет его, прежде чем тронуть твои данные. Без паспорта — никакого разговора.
К трём часам ночи новое ядро уже работало на нескольких машинах в зале. Никто не заметил перехода — и это была лучшая похвала. Суверенность не должна греметь фанфарами. Она должна чувствоваться, как тишина после того, как закрыли дверь, которую раньше не закрывали.
Эта глава устанавливает: суверенное ядро — это грамматика доверия, а не набор запретов. Язык клиента и устройств держится не на том, что запрещено, а на том, что можно проверить.
Обычное ядро говорит на языке приказов: разрешено, запрещено, отказано в доступе. Человек в этом языке — проситель. Он стучится, а ему отвечают из-за двери, не объясняя, кто там и почему дверь закрыта. Суверенное ядро меняет роли: оно говорит на языке договора. Каждое «да» и каждое «нет» сопровождается основанием. Не «доступ запрещён», а «доступ запрещён, потому что это правило ты сам включил вчера, вот его текст, вот как его отменить». Разница — не в вежливости. Разница — в проверяемости.
Проверяемость — ключевое слово всей книги. Язык, который нельзя проверить, превращается в магию: человек либо верит, либо боится. Язык, который можно проверить, превращается в право: человек может не соглашаться, но он понимает, с чем именно не соглашается. Поэтому новое ядро для Windows в этой истории не сильнее старого. Оно честнее: его решения читаются, как договор, а не угадываются, как настроение.
Отсюда же следует, почему суверенность не противоречит удобству. Крепость неудобна, потому что каждый вход — это обыск. Договор удобен, потому что каждый вход — это предъявление паспорта: быстро, понятно, одинаково для всех. Суверенное ядро не заставляет человека разбираться в системных вызовах. Оно заставляет систему говорить на человеческом языке о своих же решениях.
И ещё одно: суверенность принадлежит клиенту, а не платформе. Ядро не становится суверенным оттого, что его написала большая компания. Оно становится суверенным оттого, что клиент может сказать «нет» — и это «нет» будет услышано, записано и исполнено, а не обойдено тихим обновлением.
Важно и то, чего суверенное ядро не делает. Оно не обещает безопасности как чуда и не просит верить ему на слово. Оно просто оставляет следы: каждое решение можно найти, перечитать и оспорить на следующий день, а не только в момент, когда оно принято. Именно следы превращают власть в ответственность. Крепость не оставляет следов — она оставляет только закрытые двери. Договор оставляет текст, и текст этот можно показать третьему человеку: другу, юристу, будущему себе. Поэтому ядро, построенное как договор, переживает своего автора. Его можно передать, проверить и продолжить, не спрашивая разрешения у того, кто его написал.
Откройте на своём устройстве любой отказ, с которым вы сталкивались: «доступ запрещён», «невозможно сохранить», «требуется разрешение». Перепишите его как договор: кто отказывает, на основании какого правила, где это правило прочитать, как его изменить и что произойдёт, если вы его измените.
Если хотя бы на один из этих вопросов ответить нельзя — перед вами язык приказов, а не язык договора. Подумайте, какое именно звено отсутствует чаще всего. Обычно это не основание, а способ изменить правило: система охотно объясняет, почему нельзя, и молчит о том, как сделать можно. Это молчание — тоже высказывание. Оно говорит: «твоё несогласие здесь не предусмотрено».
Второе упражнение — короче. Придумайте «паспорт» для одного приложения на вашем телефоне: три строки. Кто ты. Что тебе можно. Кто может это отозвать. Если три строки получились честными, приложение можно пускать в дом. Если для честности понадобилось десять строк мелким шрифтом — дом пока лучше держать закрытым.
Чем суверенное ядро как договор отличается от ядра как крепости — и почему проверяемость решения важнее, чем сила запрета?