ОценкаЧто сломается в вашем стеке
Сроки и цена портирования определяются одной вещью — тем, на чём написано приложение. Последняя колонка — про ожидания, которые чаще всего приходится разбивать на первом созвоне.
На чём написано
Что обычно ломается
Насколько это работа
Чего ждать не стоит
На чём написано.NET FrameworkWinForms, WPF, COM
Что обычно ломаетсяWindows-only API, реестр Windows, WPF под Linux не работает вовсе
Насколько это работаТяжело: интерфейс переписывается, а не переносится
Чего ждать не стоитЧто «просто пересоберём под Mono». Mono закрывает не всё, а WPF — не закрывает совсем
На чём написано.NET 6 и новееASP.NET Core, консольные службы
Что обычно ломаетсяПути и регистр в именах файлов, службы Windows, шрифты, кодировки
Насколько это работаСредне: код в основном едет, переделывается окружение и упаковка
Чего ждать не стоитЧто интеграции с Windows-инфраструктурой поедут как есть
На чём написаноC и C++Win32 API, MSVC
Что обычно ломаетсяСистемные вызовы, сборка, зависимости от студийного окружения
Насколько это работаТяжело, если Win32 размазан по коду; средне, если он изолирован в слое
Чего ждать не стоитБыстрого результата без слоя совместимости или его переписывания
На чём написаноJavaSpring, Swing, JavaFX
Что обычно ломаетсяОбычно едет. Спотыкается на путях, шрифтах, отрисовке и нативных библиотеках
Насколько это работаЛегко или средне: чаще работа в упаковке, а не в коде
Чего ждать не стоитЧто упаковка достанется бесплатно — пакет и зависимости это тоже работа
На чём написаноPythonсервисы и утилиты
Что обычно ломаетсяПакетов из PyPI нет в репозиториях целевой ОС, интерпретатор старше нужного
Насколько это работаСредне: пересборка зависимостей или поставка их в комплекте
Чего ждать не стоитЧто pip install сработает в закрытом контуре без интернета
На чём написаноElectron и веб-клиентдесктоп на вебе
Что обычно ломаетсяСама Electron, кодеки, песочница, подпись под замкнутой средой
Насколько это работаСредне: спотыкается на упаковке и запуске чаще, чем на коде
Чего ждать не стоитЧто расход памяти и размер после портирования уменьшатся