- BrainTools - https://www.braintools.ru -

Возрождение классической игры для Unix: 20-летний процесс археологии ПО

Открытие: цифровая капсула времени из 1987 года

Представьте: на дворе 26 октября 1987 года. Ещё стоит берлинская стена, World Wide Web состоит из одного текста, а ПО распространяется через новостные группы USENET в текстовых файлах, разбитых на несколько постов. В этот день Эдвард Барлоу опубликовал на comp.sources.games нечто особенное:

«conquest – многопользовательская игра в средиземье, Part01/05»

Так Эд Барлоу впервые объявил о ней [1], но вскоре поменял название на Conquer.

Это была Conquer — сложная многопользовательская стратегия, повлиявшая на бесчисленное количество других. Игроки брали под своё командование народы Средиземья, управляли ресурсами, армиями, системами магии и дипломатическими отношениями. Примечательной игру делал не только геймплей, но и то, что она была создана и распространялась в эпоху, когда ещё даже не придумали понятие «open source».

Глава 0: Университетские дни

В середине 90-х мы с моими друзьями-студентами экспериментировали с терминалами в Computer Unix Labs [2], USENET, ссылками, новостями, сообщениями и, разумеется, с conquer. Эта игра была настоящим сокровищем: ты становился властителем страны; на карте, представленной в текстовом виде, каждый игрок мог управлять своим эльфийским королевством, империей орков или армиями людей в боях друг с другом, параллельно контролируя все экономические тонкости.

Но к 2006 году эта часть компьютерной истории оказалась в юридическом чистилище.

Глава 1: Начало квеста (2006 год)

Учась в испанском университете в начале 90-х, я столкнулся с Conquer в лабораториях Unix. Перенесёмся в 2006 год, когда я осознал, что эта игра-первопроходец оказалась под угрозой полного исчезновения. Её исходный код по-прежнему существовал и был разбросан по древним архивам USENET, но непонятны были условия её лицензии, что типично для ранней эпохи распространения через Интернет.

Я решил приступить к проекту, который сначала показался мне простым: получить разрешение от авторов оригинала сменить лицензию кода на GPL [3], чтобы его можно было сохранить и упаковать для современных дистрибутивов Linux.

Проще некуда, так ведь?

Глава 2: Работа цифрового детектива

Поиски Эдварда Барлоу и Адама Брайанта в 2006 году походили на археологические раскопки. Адреса электронной почты из 1980-х уже давно были неактивны. В постах USENET удавалось находить крохи информации. Я прошерстил старые университетские папки, гуглил фрагменты имён и выискивал данные на форумах, которые велись десятки лет назад.

Прорыв стал возможен только благодаря моему упорству и доле везения. Спустя месяцы поисков мне удалось связаться с Эдом Барлоу. Его ответ был успокаивающе неформальным: «Да, я делегировал всё это кучу лет назад Адаму. Я отношусь ко всему этому просто… Когда я писал игру, копилефта ещё не существовало, и делал я всё это для развлечения, так что…»

Но возникла небольшая проблема — мне нужно было получить разрешение и у Адама Брайанта, а он, казалось, растворился в цифровом эфире.

Глава 3: Долгое ожидание (2006-2011 годы)

Я документировал всё в списках рассылки Debian Legal, создал задачу GNU Savannah (#5945 [4]) и даже написал несколько постов, надеясь, что Адам их найдёт. Специалисты по юридическим вопросам дали чёткий ответ: мне нужно сформулированное письменное разрешение от обоих владельцев копирайта.

Годы шли, а проект стоял на месте.

Но 23 февраля 2011 года произошло нечто волшебное. Мой телефон завибрировал, получив сообщение:

«Я услышал новости о просьбе выпустить код. Даю разрешение выпустить код под лицензией GPL.» – Адам Брайант

Он нашёл одну из моих статей и решил сам связаться со мной.

Глава 4: Поворот сюжета – появляется Version 5 (2025 год)

Перенесёмся в 2025 год, когда мне написал Стивен Смуген, задав вопрос о моих трудах по смене лицензии в 2006 году; его особенно заинтересовала возможность возрождения игры: Conquer Version 5 – полностью переписанной Адамом версии с продвинутыми функциями наподобие автоматического преобразования данных, повышенной стабильности и инструментов для администрирования. Это было не простое обновление, а полное переосмысление игры.

Но у V5 была другая юридическая история. В 90-х по ней заключались коммерческие договоры. Согласится ли Адам выпустить и эту версию под GPL?

Его ответ был таким: «Совершенно не возражаю против новой лицензии GPL и для Version 5.»

Глава 5: Недостающая часть – магия PostScript

Только я решил, что истории подошёл конец, как обнаружил ещё одного участника: MaF (Мартина Форссена), создавшего PostScript-утилиты для генерации печатаемых игровых карт – критически важной функции в эпоху до появления GUI, когда игрокам для выстраивания стратегии требовались физические распечатки.

Выслеживая MaF в 2025 году, я нашёл его новую электронную почту. Его ответ был таким: «Ой, это ведь было давным-давно. Но да, это был я, и я не против лицензирования всего этого под GPL.»

Ричард Кэли: не просто юридическая сноска.

Не все мои поиски заканчивались нахождением ответа, некоторые завершались тишиной.

Пытаясь найти Ричарда Кэли, я пошёл по тому же цифровому следу. Путь привёл меня к Эдинбургскому университету, где он работал над синтезом речи. Я обнаружил его технические работы по FreeBSD. Но примерно в 2005 году след потерялся.

Позже я нашёл его: не в архиве USENET, а на главной странице его собственного веб-сайта, сохранённого на web.archive.org [5].

«Ричард Кэли умер от сердечного приступа 22 апреля 2005 года. Ему был всего 41 год, но он болел недиагностированным диабетом, вероятно, достаточно долгое время. Его веб-страницы остались точно такими, какими создал их он.»

Эти слова ощущались иначе, нежели историческая справка. Я как будто не вёл архивные поиски, а зашёл в дом давно умершего человека и нашёл на столе записку.

На странице также было написано следующее:

«Помимо обширных умений в компьютерах и программировании, Ричард обладал проницательным умом и знаниями в огромном спектре тем; и то, и другое он часто применял в онлайн-дискуссиях. Несмотря на его уникальный подход к праваписанию, его активный вклад в дебаты различных новостных групп помогал многим на протяжении долгих лет.»

Его юмор [6] был лаконичным, интеллектуальным и уникально британским. В технических дискуссиях он мог быть грубо педантичным.

Сохранение цифрового кабинета

Изучение его сохранённого веб-сайта походило на экскурсию по цифровому кабинету. Структура папок дала представление о его интересах: инструкции по FreeBSD, эксперименты с POVRAY, обои рабочего стола, технические проекты. Его самоуничижительный юмор проявился в разделе «Об авторе»:

«К счастью, я не могу нанести вам моральный ущерб своим портретом. Просто представьте Иман Боуи, а потом человека, выглядящего абсолютно противоположно во всех возможных смыслах. Вероятно, это объясняет, почему она жена Дэвида Боуи, а я нет.»

Он был гармоничным человеком — техническим директором Interactive Information Ltd, исследователем синтеза речи, поклонником FreeBSD, фанатом Кейт Буш и остроумным собеседником в бесчисленном количестве онлайн-дискуссий.

Юридическая реальность оказалась жестокой: лицензию вклада Ричарда в Conquer нельзя было изменить. Из-за защиты конфиденциальности университет не мог помочь мне найти его наследников.

Его друзья почтили его память [7] простым ASCII-посвящением в конце страницы:

      ^_^
     (O O) 
     _/@@
      \~~/ 
        ~~
               - RJC RIP

Исходя из проектной документации Conquer, Ричарда Кэли нельзя было назвать «источником проблем» или «автором кода, лицензию которого нельзя поменять». В ней отдаётся честь тому яркому человеку, которым он был.

Глава 6: Современный Ренессанс – на сцене появляются GitHub, CICD и новые дистрибутивы

GitHub Actions to publish Debian Packages and Alpine packages (with Melange)

И на этом история становится по-настоящему интересной. В процессе работы над сохранением этой классики Unix я решил изучить современные методики упаковки. Я решил реализовать для игр и APK (Alpine Linux), и пакет Debian.

Для пакетов APK я использовал Melange — сложную систему сборки, создающую воспроизводимые пакеты с отслеживанием происхождения для «undistro» Wolfi. Ирония заключается в том, что я обнаружил этот инструмент, когда один мой друг начал работать в разработавшей его компании.

Глава 7: Техническое путешествие — от USENET к современным CI/CD

Проект претерпел впечатляющую трансформацию:

Оригинал 1987 года:

  • Распространялся в виде разбитых на части постов USENET

  • Компилировался вручную при помощи Makefile конкретных систем

  • Не имел контроля версий и автоматизированного тестирования

Версия 2025 года:

# Современный CI/CD с GitHub Actions
- name: Build APK package
  run: melange build conquer.yaml
- name: Build Debian package  
  run: dpkg-buildpackage -b

Самое важное из нового:

  • Перелицензирование под GPLv3

  • Модернизация систем сборки

  • Кодовая база на C частично обновлена для поддержки спецификации ANSI C99

  • Упаковка пакетов Debian

  • Упаковка APK при помощи Melange

Всю трансформацию можно изучить в репозиториях:

  • Conquer v4 [8] – оригинальная классика

  • Conquer v5 [9] – переписанная версия

Оригинальный код Conquer v4, написанный Эдом Барлоу и Адамом Брайантом

Оригинальный код Conquer v4, написанный Эдом Барлоу и Адамом Брайантом

(Conquer работает в docker вместе с Apache, Curses с выводом в WebSockets благодаря ttyd [10]Теперь в него можно играть через веб!)

Conquer Version 5 – эволюция классического Conquer, написанная Адамом Брайантом

Conquer Version 5 – эволюция [11] классического Conquer, написанная Адамом Брайантом

Глава 8: Человеческий фактор — почему это важно

Дело не только в сохранении старых игр, но и в архивировании самой компьютерной истории. Эд Барлоу и Адам Брайант были первопроходцами, создавшими сложный многопользовательский проект ещё тогда, когда большинство людей и не слышало об Интернете. Они распространяли своё ПО через USENET, потому что так в то время поступали многие — просто делились чем-то хорошим с обществом.

PostScript-утилиты Мартина Форссена демонстрируют изобретательность разработчиков того времени, решавших задачи любыми имеющимися у них инструментами. Хочешь визуализировать состояние игры? Напиши PostScript-генератор!

Мой двадцатилетний проект по смене лицензии демонстрирует важный аспект опенсорса: главное в нём не код, а сообщество и преемственность. Каждый раз, когда кто-то становится мейнтейнером легаси-проекта, документирует его историю или находит давно потерянных контрибьюторов, он плетёт нити, связывающие прошлое компьютеров с их будущим.

Уроки для современных разработчиков

  1. Документируйте всё: обычные посты в USENET десятки лет спустя стали важными юридическими свидетельствами.

  2. Чётко указывайте лицензию: комментарий Эда «когда я писал игру, копилефта ещё не существовал» показывает, как изменилась ситуация с лицензированием.

  3. Сообщество важно: Адам нашёл мои статьи, потому что сообщество говорило о сохранении проекта

  4. Технический долг не вечен: то, что сегодня кажется легаси-технологиями, завтра может оказаться археологическим сокровищем.

  5. Современные инструменты способны возрождать древний код: Melange и современные CI/CD обеспечили возможность современного Ренессанса проекта 1987 года.

История продолжается

Обе игры Conquer сегодня имеют лицензию GPL v3 и доступны в виде современных пакетов. Они представляют собой не просто играбельное ПО, но и подробный пример программной археологии, юридических обоснований для сохранения кода и эволюцию практик разработки на протяжении четырёх десятков лет.

Какой будет следующая глава? Она посвящена обучению [12] этим классическим стратегическим играм нового поколения разработчиков и геймеров, демонстрируя при этом, что при наличии должной юридической подготовки и современного инструментария можно дать любому историческому ПО вторую жизнь.

Иногда лучший способ изучения современной технологии — это её применение для сохранения компьютерной истории.

Автор: PatientZero

Источник [13]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/31000

URLs in this post:

[1] объявил о ней: https://groups.google.com/g/comp.sources.games/c/188dE9OtKhg/m/6vJvv6V4SzIJ

[2] Computer Unix Labs: https://www.informatica.us.es/index.php/historia/la-facultad

[3] сменить лицензию кода на GPL: https://lists.debian.org/debian-legal/2006/10/msg00063.html

[4] #5945: http://https//savannah.nongnu.org/task/?5945

[5] web.archive.org: http://web.archive.org

[6] юмор: http://www.braintools.ru/article/3517

[7] память: http://www.braintools.ru/article/4140

[8] Conquer v4: https://github.com/vejeta/conquer

[9] Conquer v5: https://github.com/vejeta/conquerv5

[10] ttyd: http://https//github.com/tsl0922/ttyd

[11] эволюция: http://www.braintools.ru/article/7702

[12] обучению: http://www.braintools.ru/article/5125

[13] Источник: https://habr.com/ru/articles/977452/?utm_source=habrahabr&utm_medium=rss&utm_campaign=977452

www.BrainTools.ru

Rambler's Top100