Skyrails, воссозданный по скриншотам
Персонажи «Отверженных» в воссозданном Skyrails; в фокусе — КозеттаОколо 2007 года Йосе Виджая, тогда студент Университета Нового Южного Уэльса, создал Skyrails — удивительную программу для исследования сетей в трёх измерениях. Путешествовать можно было по самой сети, от узла к узлу, по светящимся рельсам, словно находишься внутри данных. Программа походила на видеоигру — в то время, когда большинство исследовательских инструментов были плоскими и серыми. За зрелищностью скрывалась настоящая глубина: у Skyrails был собственный скриптовый язык для оформления и анализа графов, и на этом же языке были написаны меню, так что пользоваться программой могли и те, кто не умел программировать. И всё это — работа одного-единственного студента. Много лет назад я увидел её демонстрацию на YouTube и с тех пор её не забыл.
Исчезнувшая программа
Skyrails никто никогда не поддерживал. Программа работала под Windows, её страница на сайте университета исчезла, а все ссылки, по которым я переходил, оказывались мёртвыми. Зато уцелели следы: альбом скриншотов на Flickr и несколько записей в блогах 2007 года — на FlowingData, в блоге Тима Ламберта Deltoid и в InfoVis Wiki.
Скриншоты оказываются на удивление красноречивыми. На них видно ночное синее небо, исчерченное облаками, рёбра в виде анимированных шевронов, узлы в виде значков или круговых диаграмм и радиальное меню, которое раскрывается вокруг узла, если зажать правую кнопку мыши. Видны на них и названия скриптов, управлявших каждой демонстрацией (labs.van, macaque.van, worldtrade.van), меню, которые эти скрипты создавали, и четыре темы — normal, desert, valley и openspace. А на одном даже сохранилась строчка самого скриптового языка, набранная в консоли вверху экрана:
with all nodes do nodeplane x 1 -1 end
Реконструкция по уликам
Опираясь на эти свидетельства, Claude за одну ночь воссоздал Skyrails. Новая версия работает в браузере на Three.js и в принципе должна запускаться и в шлеме виртуальной реальности. В ней повторены небо, шевронные рельсы, светящиеся узлы со значками, круговыми диаграммами и кольцами, крупная подпись узла под указателем, радиальное меню и четыре темы. Есть в ней и небольшой скриптовый язык, выстроенный вокруг той единственной строки, что сохранили скриншоты: конструкции with … do … end задают оформление графа и определяют меню.
Для проверки я загрузил три классических набора данных: сеть флорентийских семейств Джона Паджетта с их брачными и деловыми связями, клуб карате Уэйна Закари и составленную Дональдом Кнутом сеть персонажей «Отверженных», где два персонажа связаны, если они появляются в одной главе. Видео ниже проводит по последней из них — от Вальжана к Жаверу, Фантине, Козетте и Мариусу. Каждый рельс загорается, пока по нему движется камера.
Результат настолько походил на скриншоты, что я сразу заподозрил: при обучении модель впитала следы оригинального кода.
Оригинал отыскался
А потом сюжет сделал неожиданный поворот. Уже после реконструкции я нашёл оригинальную программу на GitHub. В 2015 году её выложил один исследователь — с разрешения Йосе Виджаи — вместе с кодом к докладу о визуализации данных на конференции по безопасности ShmooCon (RITHoneynet/DataVisualization, копия есть также в Light0617/3D_UIUX). В репозитории есть исполняемые файлы для Windows, данные, шейдеры и оригинальные скрипты, но нет исходного кода основного движка.
Так что мы смогли сравнить одно с другим. По облику и ощущению от работы реконструкция подошла к оригиналу близко, но её скриптовый язык и шейдеры сильно от него отличаются. Оригинальные скрипты выглядят так:
with all edges do (
if(#marriage == 1) then (
linkorigin <- marriage -> linktarget;
) end;
) end;
Подпрограммы в них задаются через sub, меню — через menudef и menulink, цвета — записью rgb: 130 0 0, а типы связей — стрелками. Ничего этого в реконструкции нет: с оригиналом её роднит только форма with … do … end, видная на скриншоте. Оригинальные шейдеры с названиями вроде BloomFX и RetinalBurnFX тоже не имеют ничего общего с новыми.
Вопроса о запоминании это не закрывает. Оригинальные скрипты общедоступны с 2015 года и вполне могли попасть в обучающие данные модели, а сказать наверняка, что именно она видела, не может никто, включая её саму. Но если бы модель запомнила Skyrails, я бы ожидал, что она воспроизвела бы хотя бы язык. Различия позволяют предположить, что Claude исходил из того, что видно на скриншотах.
Цифровая археология и долговечность программ
Я вижу в этом эксперименте своего рода цифровую археологию: восстановить утраченный предмет по оставленным им следам, а затем найти оригинал и измерить, насколько близко удалось подойти. Как всякая реконструкция, новый Skyrails — это интерпретация. Его облик и поведение опираются на свидетельства, а всё, что под ними, создано заново.
Это ещё и вопрос долговечности. Программы устаревают гораздо быстрее, чем данные, для чтения которых они создавались. Когда программа умирает, сделанные в ней файлы, скрипты и визуализации становится трудно открыть, даже если сами они уцелели. Многое из программного обеспечения 2000-х годов существует теперь лишь в виде скриншотов, видеозаписей и старых двоичных файлов, которые способно запустить всё меньше машин. Оригинальный Skyrails, возможно, ещё запустится на компьютере с Windows или в эмуляторе, но поддерживать, дорабатывать или переносить его на другие платформы уже нельзя: исходный код утрачен.
Как я и предсказывал несколько лет назад, ИИ становится практическим средством против такого устаревания. Он может восстановить утраченный инструмент по его следам и заново построить программы чтения, благодаря которым старые данные остаются пригодными к использованию. Очевидный следующий шаг для этого проекта — научить новый движок читать оригинальные скрипты .van и файлы данных, чтобы демонстрации, написанные Йосе Виджаей в 2007 году, снова заработали. Для всех, кому небезразлична долговечность данных — в науке, в архивах или в цифровых гуманитарных науках, — это заслуживает внимания.
Skyrails опередил своё время и почти двадцать лет спустя по-прежнему впечатляет. Все заслуги в замысле и дизайне принадлежат Йосе Виджае, и я надеюсь, что эти строки до него дойдут.
