От романтики прошлого к реальности
В декабре 2024 года на вечеринке в Сан-Франциско собрались люди с сильными позициями по поводу гипертекста. Событие — 50-летний юбилей манифеста Computer Lib/Dream Machines Теда Нельсона 1974 года и видения Project Xanadu, воплощение которого так и не состоялось в полной мере.
На вечеринке присутствовал один из программистов Xanadu из эры Autodesk (примерно 1988–1993). Рассказанные им истории напомнили, как жесткими были аппаратные ограничения того времени: компиляция кода из Smalltalk в C++ занимала неделю, а не минуты. Работа с C++ требовала непропорционального количества времени на борьбу с техническими сложностями.
Память о хранилище особенно показательна: средний ПК 1990 года имел жесткий диск в 50 МБ, а Gwern.net сегодня весит 221 ГБ. Это помогает понять, почему с точки зрения архитектуры многие решения того времени выглядели иначе — разработчикам приходилось вкладывать месяцы в оптимизацию того, что сегодня пишется за дни.
Первый взгляд на интерфейс
На вечеринке были рабочие компьютеры со старыми реализациями Xanadu. Когда посмотрели на демо с текстом Книги Бытия и его знаменитыми линиями, обозначающими трансклюзии и комментарии к отрывкам, стало очевидно:
«О Боже — это же совершенно нечитаемо.»
Линии создавали путаницу. Когда они пересекались, текст становился невозможно читать. На маленьком экране было невозможно видеть сидбары. При прокрутке в большинстве позиций линии мешали прочитать что-либо вообще.
Интерфейс был просто ужасен — он не мог работать. Даже на 4K мониторе такое не захочется использовать.
Решение в поисках проблемы
Вся концепция параллельных трансклюзий с указанием диапазонов — это решение в поисках проблемы.
Такой подход имел смысл для Книги Бытия, где есть детальные комментарии к каждой строке и библейская критика, разбирающаяся, как текст был переписан из противоречивых источников. Но когда начинаешь думать, как это использовать в реальном эссе на Gwern.net, понимаешь: нам это в основном не нужно.
Едва ли какой-то текст в мире действительно нуждается в том, чтобы быть «fisked» — иметь определенные строки или абзацы трансцендированными. Почти никто не делает многоуровневые талмудические комментарии. Большинство реальных цитирований — это ссылки на источник в целом. И даже с ними мы не захотели бы видеть 99% из них.
Примечательно, что в ни в Computer Lib/Dream Machines, ни в The Future of Information Нельсон не использовал трансклюзии на бумаге. Он мог бы — ничто не помешало бы расположить текст рядом, как хотелось. Но не сделал, потому что это просто не очень полезно для книг. Даже для своих.
От фильма к веб-интерфейсам
Даже в кино, где тривиально поставить два источника видео рядом, это редко делают. Вместо горизонтальной или вертикальной композиции фильм использует третье измерение — время, развивая богатый словарь монтажа и переходов. Пространственная композиция применяется редко и не по умолчанию.
Где основной ниш — прямые трансляции, где невозможно снять с разных углов и смонтировать согласованно. Тогда обычно показывают двух говорящих одновременно. Но когда это редактируют позже для повторного просмотра, часто превращают в последовательность монтажных кадров.
Стример не может легко переходить между источниками, потому что сам занят трансляцией, не имеет большого количества видео для выбора и нет профессиональной команды для монтажа. Но если бы делал «лучшие моменты», мог бы переаранжировать или приблизить. (Можно поспорить, что когда стримеры Hololive выступают на большом ежегодном концерте с инвестициями в десятки миллионов долларов, они не используют стриминговую композицию рядом, а выбирают традиционную концертную кинематографию — как на Miku Expo с вокалоидами.)
Где бюджеты очень высоки и качество критично — NBA-игры, NFL, Met HD оперные трансляции — с большим количеством камер и режиссером, они не выбирают статичное picture-in-picture. Вместо этого быстро переключаются между камерами, что позволяет «следить за действием», приказывать операторам двигаться, чтобы создать новый угол на лету, и пытаться создать значимый ритм на основе игрового потока.
Практический опыт Gwern.net
На Gwern.net специфическая функция трансклюзии в диапазонах была добавлена только около 2023 года — для анализа литературного произведения. До этого казалось, что это нужно делать, но когда доходит до практики, понимаешь: не нужно.
Gwern.net этого не требует. English Wikipedia не требует. Reddit не требует. Twitter не требует. ~100% персональных блогов не требует этого. Это просто не очень полезно — разве что для литературной критики или комментариев к тексту, что описывает примерно 0% Всемирной паутины (в 2025 году или в 1989-м). Все эти линии выглядят круто и футуристично, но когда начинаешь думать, как использовать их в реальном эссе на Gwern.net, начинает болеть голова.
Интерфейсы из научно-фантастических фильмов
Интерфейс Project Xanadu — это «интерфейс научной фантастики», как 3D-жестовые интерфейсы в фильме Minority Report или виртуальная реальность в Snow Crash. Все смотрят и восхищаются тем, как они выглядят круто, но они ужасная идея для использования — вызывают усталость рук и другие проблемы. Когда начинаешь использовать прототип, почти сразу понимаешь, что это не работает, и нужно выбросить идею полностью.
Это напоминает комментарий о Голливудском режиссере: Project Xanadu — это идея режиссера о том, какой должна быть Всемирная паутина. Поверить в нее можно только если никогда не пытался действительно её использовать для настоящего проекта. Если бы Нельсон был менее харизматичным или менее убедителен как писатель, это стало бы ясно раньше.
Как и Douglas Engelbart, Нельсон имеет честь быть живым воплощением закона Каннингема: ставшим одной из тех исторических фигур, чья важность в том, что они были настолько неправы в таком важном вопросе, что вдохновили других быть правыми.
Проблема авторского права
Что-то в Xanadu всегда казалось странным — его акцент на авторском праве. Сложно думать о какой-либо части современного мира более вредной для полезной системы гипертекста, чем нынешнее максималистское авторское право, но 17 принципов Xanadu тратят больше времени на защиту прав правообладателей, чем на такие «мелочи» как трансклюзии.
Они требуют поддержки микротранзакций на произвольных уровнях трансклюзии, предпочитают стандартные лицензии, отвергают Net Neutrality, разрешают беспрепятственные трансклюзии произвольных ресурсов и так далее:
17 принципов Xanadu (версия Wikipedia)
- Каждый сервер Xanadu уникально и безопасно идентифицируется.
- Каждый сервер Xanadu может работать независимо или в сети.
- Каждый пользователь уникально и безопасно идентифицируется.
- Каждый пользователь может искать, получать, создавать и хранить документы.
- Каждый документ может состоять из любого количества частей каждая из которых может быть любого типа данных.
- Каждый документ может содержать ссылки любого типа, включая виртуальные копии («трансклюзии») на любой другой документ в системе, доступный его владельцу.
- Ссылки видимы и могут быть прослеживаемы со всех конечных точек.
- Разрешение ссылаться на документ явно дается актом публикации.
- Каждый документ может содержать механизм роялти на любом желаемом уровне детализации для обеспечения платежа за любую часть доступа, включая виртуальные копии («трансклюзии») всего или части документа.
- Каждый документ уникально и безопасно идентифицируется.
- Каждый документ может иметь безопасные элементы управления доступом.
- Каждый документ можно быстро искать, хранить и получать без знания пользователем его физического местоположения.
- Каждый документ автоматически перемещается в физическое хранилище, соответствующее его частоте доступа из любого места.
- Каждый документ автоматически хранится избыточно для сохранения доступности даже в случае катастрофы.
- Каждый поставщик услуг Xanadu может взимать с пользователей любую плату, которую они выбирают, за хранение, получение и публикацию документов.
- Каждая транзакция безопасна и поддается проверке только участниками этой транзакции.
- Протокол взаимодействия клиента и сервера Xanadu — это открытый опубликованный стандарт. Разработка стороннего программного обеспечения и интеграция поощряются.
Всегда было непонятно, как кто-то мог поверить, что это возможно или желательно: конечно, правообладатели откажутся соответствовать этому и отвергнут Xanadu с ужасом, потому что это разрушает бесчисленные бизнес-модели и режимы интеллектуальной собственности. Система будет сразу заболочена трагедией антиобщин, упорствующими парами, примадоннами, контролирующими правообладателями.
Но если видишь себя Голливудским режиссером в сердце, у тебя были бы сильные чувства по поводу святости авторского права. Ты был бы яростно противником логики трансклюзии, ведущей к свободному ПО/open source (несмотря на последний принцип Xanadu, Нельсон, видимо, никогда не верил в FLOSS и настаивал на NDA). И ты верил бы в некую семантическую сеть, где ожидаешь… что-нибудь, чтобы работать.
В отличие от реальности того, что происходит, когда 8 миллиардов человек онлайн и большая часть мира работает через Интернет: кошмарный темный лес, где все, что может пойти не так, пойдет неправильно произвольное количество раз в день. Каждый инвариант, в который верил, оказывается нарушен где-то в мире. И каждая красивая особенность — как двусторонние ссылки trackback — будет беспощадно использована спамерами, глупцами, негодяями, национальными государствами, появляющимися ошибками и хакерами.
Большинство этих принципов имеют смысл только если никогда не пытаешься внедрять это в реальном мире, где обнаружишь, что многие из них — не просто вопросительные в ценности или яростно противостояны многими организациями, но прямо незаконны. (Одна из систем, которая наиболее воплощала принципы надежного децентрализованного хранилища файлов, перемещая их ближе к пользователям, запрашивающим их для эффективности — это Freenet, который сразу стал известен своей связью с детской порнографией.)
Прототипирование и дизайн
Project Xanadu — это пример того, почему дизайнеры должны создавать макеты и прототипы своих дизайнов перед тем, как инвестировать в них слишком много. Xanadu не был жертвой философии «worse is better» — это было просто решение в поисках проблемы.
Что-то похожее верно для Arbital: у него был один реальный пользователь, Eliezer Yudkowsky, который его видел, но не смог донести видение или создать четкий прототип и набор сценариев использования. И как Xanadu, это был четырехугольный колышек философии свободного ПО, воткнутый в круглую дыру стартапа.
Где были демо и сценарии использования Xanadu, выложенные на бумаге с ножницами и клеем, если необходимо? Почему они всегда просто совершенно нерепрезентативный сценарий, как «Книга Бытия»? Если бы сел и попытался превратить обычную техническую документацию или ближайший лежащий журнал в набор трансклюзий диапазонов… как хорошо это бы работало?
Если сделать это, ответ быстро становится: «Да, мне нужны гиперссылки — они чертовски полезны. Мне нужна возможность ссылаться на произвольные медиатипы: изображения, аудио, видео или конкретные страницы в книге. Мне нужны ссылки, которые не сломаются. Мне нужен язык скриптов (о котором Xanadu молчит). Но... мне на самом деле не нужна большая часть этих других вещей.»
Подход Gwern.net
На Gwern.net почти каждая функция вызвана сценарием использования (в основном потому, что автор ленив). С Said Achmiz подход был ждать нескольких сценариев использования, а затем реализовать их, включив все. Неизменно, когда Gwern.net становился больше и сложнее, обнаруживались граничные случаи и нужно было пересмотреть дизайн. Для многих изменений пришлось отказаться.
Для гипертекста, автор спрашивает себя: «Что мне нужно, чего не предоставляет базовая HTML-страница или страница English Wikipedia?» И ответ: «Мне не нужно трансцендировать просто кучу случайных абзацев с URL. Мне не нужна куча крошечных атомарных однострочных страниц, вложенных в Таблицу Содержания, которая длиннее, чем само содержание, как GNU Info поощряет писать. Мне нужно что-то вроде резюме или аннотации. Мне нужно, чтобы читатель мог просматривать как можно быстрее и без трения, и быстро просматривать ссылки или отслеживать интересные цитаты. Мне нужно что-то вроде Lupin's Wikipedia popups, которые позволяют ориентироваться в WP с самой случайной навигацией мышью, но стероидов.»
Дизайнер бы сказал, что недостаток интерфейса Xanadu был в обращении трансклюзии как «горизонтальной» и параллельной, предполагая, что все чтение/запись должно происходить на самом низком уровне текста (мотивируя «tumblers» и т.д.). Это должно было быть «вертикальным» с всплывающими окнами и «приближением» и «отдалением» на разных уровнях абстракции текста (icon ссылки → title → abstract → section и т.д.), что мотивирует совершенно иной набор проблем — возможность указать произвольные диапазоны становится намного менее важной, особенно если любые ключевые диапазоны можно просто поднять на более высокий уровень.
Когда у него есть всплывающие окна, предлагающие беспрепятственную навигацию, он фактически использует трансклюзию везде — просто внутри всплывающих окон. И как только вкладывается в идею предложения рефератов для всего, естественно обобщить: если у документа есть две версии — одна небольшая (реферат) и одна большая (весь документ), почему не быть «средней»?
Нет естественной точки остановки, так что можно просто принять иерархическое представление «семантического зума». Это приводит к многим элегантным паттернам дизайна UI/UX Gwern.net: например, раскрытия/закрытия для внутреннего приближения всего от разделов к предложениям в абзацах, или справочники тегов (которые сильно полагаются на трансцендирование рефератов вместо целой ссылки для создания «аннотированных библиографий»), или обратные ссылки, которые улучшают обратные ссылки Xanadu или English Wikipedia, делая «обратную» трансклюзию, чтобы показать контекст трансклюзии/ссылки на других страницах. И локальная система архивирования означает, что ссылки не только не ломаются, но можно «просмотреть» многие URL-адреса, поднимая и трансцендируя очищенную локальную версию архива.