Часть II. Субботняя ночь: суверенное ядро
Ближе к утру в зале появился человек, которого на хакатонах боятся чуть больше, чем севшего аккумулятора: юрист. Не карикатурный, с папкой и строгим лицом, а настоящий — молодой, в худи, с ноутбуком, на котором было открыто столько вкладок, что браузер просил пощады.
— Я пришёл проверить, — сказал он без предисловий. — Game Center, ядро, сервисы. Красиво. Но красиво — не значит законно. Покажите мне, где вы нарушили User License Agreement. Все нарушают. Вопрос только в том, где именно.
Eugen не стал защищаться. Он открыл текст соглашения рядом со своим кодом — два окна, как два собеседника за одним столом.
— Смотрите, — сказал он. — Вот пункт о том, что нельзя обходить защиту. Мы не обходим. Вот пункт о том, что нельзя использовать чужие товарные знаки для введения в заблуждение. Мы не вводим. Вот пункт о рекламе внутри сервиса. Мы не обязаны её показывать — мы обязаны не выдавать чужой сервис за свой. А вот пункт, который все пропускают: пользователь вправе создавать собственные надстройки поверх сервиса, если они не нарушают работу других пользователей. Наши сервисы — надстройки. Они не ломают чужие. Они просто говорят с клиентом напрямую.
Юрист читал, сверялся, переспрашивал. Он нашёл три места, где Eugen, по его мнению, ходил по краю. Eugen не спорил ни с одним — он показывал, как именно край был пройден: вот тест, вот лог, вот случай, где система отказалась делать то, что просили, потому что просьба противоречила регламенту эпохи. Не потому, что «так решил Eugen». Потому, что так написано.
— А правительственные регламенты? — спросил юрист. — Хранение данных, трансграничная передача, всё это?
— Тоже здесь, — ответил Eugen и открыл второй документ. — Данные не пересекают границу без основания. Личное не становится общим без согласия. Удаление — это удаление, а не «скрытие из вида». Если регламент говорит «нельзя», мы не ищем синоним слова «можно». Мы ищем другой путь, который регламент разрешает. Иногда такого пути нет — и тогда мы не делаем. Это тоже результат. На хакатоне «не делаем» считается поражением. В договоре — честностью.
К рассвету юрист закрыл ноутбук. Он не сказал «всё законно» — юристы так не говорят, у них для этого есть сто оговорок. Он сказал другое, и это запомнилось всем, кто слышал:
— Я не нашёл ни одной нарушенной запятой. Ни одной. Это раздражает. Обычно хоть запятая да найдётся.
Eugen пожал плечами, как человек, которого похвалили за то, что он просто не врал.
— Запятая — это тоже договор, — сказал он. — Переставишь её — и смысл меняется. Я просто не переставлял.
Эта глава устанавливает самое контринтуитивное положение книги: User License Agreement и правительственные регламенты — это не клетка для языка клиента и устройств, а его грамматика.
Грамматика кажется ограничением только тому, кто хочет говорить как попало. На самом деле грамматика — это то, что делает речь понятной другому. Без грамматики нет диалога, есть шум. Лицензия работает так же: она описывает, кто кому что обещает, где проходят границы и что happens, если границу перейти. Читать лицензию как список запретов — всё равно что читать грамматику как список ошибок. Правильное чтение другое: лицензия — это карта местности, на которой можно строить.
Eugen в этой главе не «обхитрил» лицензию. Обхитрить договор — значит говорить на языке, который договор не понимает, и надеяться, что никто не заметит. Eugen говорил на языке договора буквально: он читал пункты как предложения, проверял каждое действие по тексту и останавливался там, где текст говорил «нет». Именно поэтому его работа выдержала проверку: она не пряталась от грамматики, она ею пользовалась.
Отсюда следует практическое правило для всей книги. Когда вам говорят «это нельзя, потому что лицензия», не верьте и не спорьте — попросите показать предложение. Какое именно? Где именно стоит запятая? Что именно запрещено: действие, способ или цель? Чаще всего запрет оказывается уже, чем его толкование. А когда запрет действительно широк, честный ответ — не искать лазейку, а построить рядом, поверх, иначе. Как в предыдущей главе: новое поверх существующего, а не вместо него и не вопреки ему.
И последнее. Соблюдение запятых — это не трусость и не бюрократия. Это уважение к собеседнику, который писал договор до вас и будет жить с его последствиями после вас. Язык, который не нарушает договор, — это язык, на котором можно договариваться дальше. Язык, который нарушает договор при первой возможности, — это язык, на котором дальше никто не станет разговаривать.
Возьмите любое пользовательское соглашение, которое вы когда-либо принимали не читая, — хотя бы его первую страницу. Найдите в нём одно предложение, которое вы понимаете, и одно, которое не понимаете. Перепишите непонятное предложение своими словами, не меняя его смысла, а только его длину: разбейте на два коротких.
Теперь проверьте себя: изменился ли смысл после переписывания? Если да — вы только что почувствовали, что такое запятая в договоре. Одно переставленное слово, и «вы можете» становится «вы обязаны», а «мы не продаём» — «мы не продаём, кроме случаев».
Второе упражнение — для смелых. Придумайте действие, которое вы хотели бы совершить со своим устройством, но боитесь, что «это запрещено». Найдите правило, которое это запрещает, и прочитайте его буквально, слово в слово. Запрещает ли оно само действие — или только один способ его совершить? Если только способ, опишите другой способ, который правило разрешает. Это и есть работа Eugen в миниатюре: не обход, а чтение.
Почему соблюдение User License Agreement в этой книге описывается как грамматика, а не как клетка — и что доказывает проверка, которая не нашла «ни одной нарушенной запятой»?