Что это
С годами критически важное для бизнеса ПО оказывается на платформе, которой больше не существует. Поставщик закрыл компанию или прекратил поддержку. Исходный код есть, но он написан под старый компилятор, ядро или версию языка — и просто не собирается на новой операционной системе.
Полный переход на «современный аналог» — длительная и рискованная история, особенно если речь о специализированной задаче, для которой готовых замен на рынке нет. Чаще всего достаточно вернуть программу в рабочее состояние на актуальной платформе, не меняя того, как с ней работают люди.
Мы переписываем устаревшие компоненты под современные API, сохраняя поведение и интерфейсы. Программа продолжает работать, как работала, — но уже на актуальной операционной системе, в современной цепочке сборки и без зависимостей с истёкшим сроком поддержки.
Что входит
- Драйверы и модули ядра — миграция с устаревших API на актуальные. Поддерживаются современные версии ядер Linux, не теряется функциональность устройства.
- Пользовательские приложения и библиотеки — приведение к современным стандартам языка, исправление несовместимостей с текущими компиляторами.
- Современная сборочная система — переход с устаревших Makefile или скриптов на актуальные инструменты, поддержка пакетных менеджеров целевой ОС, упаковка для удобного распространения.
- Документация и передача знаний — описываем что и зачем поменяли. При следующем обновлении ОС задача решается без новых раскопок исходников.
- Тестовый прогон — проверяем что обновлённая версия ведёт себя так же, как оригинальная, прежде чем передавать в эксплуатацию.
Когда нужно
- Критически важное приложение перестало собираться при переходе на новую версию ОС или ядра.
- Поставщик ПО исчез или прекратил поддержку, но в распоряжении остался исходный код.
- На рынке нет продукта-аналога, который покрыл бы ту же узкую задачу — переписывание с нуля экономически нецелесообразно.
- Программа работает, но требует устаревших версий компонентов, для которых уже не выпускаются обновления безопасности.
- Внутри инфраструктуры есть «зоопарк» из старых утилит, которые невозможно убрать, но опасно оставлять без присмотра.
Опыт
Работаем как с пользовательскими приложениями, так и с системными компонентами — драйверами, модулями ядра Linux, низкоуровневыми библиотеками. У нас есть успешные проекты по восстановлению кода, написанного 10–15 лет назад под старые версии ядер, до полностью рабочего состояния на современных дистрибутивах.
Подход
Не переписываем заново то, что уже работает. Минимально вмешиваемся в логику, фокусируемся на совместимости с актуальной платформой. Изменения документируются построчно — это даёт клиенту возможность понять, что именно сделано, и облегчает дальнейшее сопровождение.