Мы много рассказывали на Хабре, как запустить САПР КОМПАС на Linux с разными вариантами Wine (ссылка 1, ссылка 2). Сегодня впервые публикуем пост о разработке нативной Linux-версии. На связи Андрей Пилюгин, ведущий инженер-программист.
Наша команда отвечает за портирование бизнес-логики, а работы по интерфейсу и по API делают другие команды. Эти процессы идут параллельно.
Работы по портированию КОМПАСа велись не один год, над этим начинала работать совсем небольшая группа программистов, и за этот период вышло две версии под Windows. По этой причине мы не могли разломать весь каркас приложения и написать его заново, приходилось аккуратно трансформировать приложение, постепенно заменяя его составляющие на кроссплатформенные и поддерживая в работоспособном состоянии все остальные. В этом нас сильно выручала система автотестов.
Мы решили не пытаться переписать всё сразу, а разделили портирование на этапы. На первом этапе хотели получить некую заготовку, в которой будет только сильно урезанное 2D с возможностью открытия нескольких документов, их масштабирования и переключения вкладок: по сути viewer.
Для запуска заготовки КОМПАСа под Linux мы:
убрали MFC из каркаса приложения
переписали большое количество Windows-специфичного кода
провели глубокий рефакторинг кода и структуры проекта
отрезали второстепенные механизмы (API, диалоги, печать и т.д.)
выделили модули, составляющие базовую часть приложения
реализовали новый маршрутизатор событий
переработали ресурсы, работу со шрифтами, с файловой системой
добились компиляции заготовки под Linux
Эта заготовка постепенно начала (и продолжает) обрастать функционалом, превращаясь в полноценный КОМПАС-3D.
Прочие модули, составляющие приложение, мы тоже не пытаемся портировать «в лоб», а используем многопроходный подход и постепенно, механизм за механизмом переводим на кроссплатформенные рельсы.
А теперь подробности.
Проблемы и задачи в портировании
К моменту перехода на Linux у нас был большой запас неиспользуемого старого кода, который остался после перевода большей части интерфейса на WPF в 17-й версии КОМПАС-3D. Это Windows-специфичный код, и от него нужно было избавляться.
Каркас приложения (окна, рабочие области, маршрутизация событий) был реализован на MFC. Сохранение в растровый формат, печать, текстовый документ — на GDI. Ресурсы (строки, меню, иконки, диалоги) мы хранили как стандартные ресурсы MFC. А работу с файловой системой, строками, таймерами и прочим очень часто строили, используя методы Windows API. Также, использовали много MFC/Windows API-специфичных типов данных и классов (VARIANT, CString, Cfont). Структура проекта не была оптимальной. И были десятки прочих проблем различных уровней сложности.
Переработка кода
Что касается структуры кода, необходимо было определиться, как мы будем работать с тем кодом, который нужно менять. По-крупному, код, подлежащий переработке, можно разделить на три вида:
Код, который можно сделать кроссплатформенным сразу. К примеру, то, что можно переложить на стандартную библиотеку или boost. С этим всё просто - берём и делаем.
Код, который будет кроссплатформенным, но потом. «Потом» может быть по разным причинам. Где-то нужно провести исследование и выбрать библиотеку, но на данный момент мы не готовы это сделать. Где-то, нужно дождаться реализации другого функционала. Какой-то функционал не является первостепенным, реализовывать его долго, и мы не хотим сейчас тратить на него время. Для того, чтобы продолжить работать над модулем мы «заглушаем» подобный код.
Платформозависимый код. Этот код в любом случае останется, и каким-то образом придётся его разделять. Подход с разделением кода макросами мы решили не использовать, т.к. с ними код становится перегруженным и не читаемым, поэтому разделяем подобный код на различные ОС-специфичные реализации.
Подходы к переработке
Разделение платформозависимого кода: в целевой папке исходников создаём папку Impl, а в ней папки Windows и Linux. В папке Impl создаём заголовочный файл, в нём под namespace impl декларируем метод и реализуем его под Windows и Linux. Обращение к нему выглядит примерно так: impl::SetWaitCursor(). И программист сразу понимает, что работает с платформоспецифичной реализацией. Исходник в Cmake мы подключаем через переменную SYSDIR, которую, соответственно, меняем под целевую платформу в CompileOptions.cmake. В итоге всё выглядит очень просто и понятно:
CompileOptions.cmake
# System specific dir for implementation
if(WIN32)
set(SYSDIR "Windows")
else()
set(SYSDIR "Linux")
endif()
CmakeLists.txt
set(${this_target}_SRC_GROUP_IMPL
"../Sys/Impl/${SYSDIR}/FileUtils.cpp"
"../Sys/Impl/FileUtils.h"
)
Допустим, по каким-то причинам нам не требуется реализовывать метод под Linux прямо сейчас, или решение ещё не готово, но продолжать работу нужно. Тогда пишем заглушку с пустым методом, в который добавляем типизированный комментарий и ASSERT. Типизированный комментарий позволяет не потерять эту заглушку и реализовать её, когда необходимо. ASSERT под Linux у нас выводит стек вызовов.
namespace impl
{
//------------------------------------------------------------------------------
/**
*/
//---
void WaitCursor()
{
//TODO Linux : реализовать WaitCursor (курсор ожидания)
K3D_ASSERT(false);
}
}
Когда необходимо «глушить» не один метод, а крупный функционал, реализованный во множестве файлов, в том числе заголовочных, приходится поступать иначе. В структуре проекта создаём папку Stubs, в ней создаём папку для конкретного механизма, который нам сейчас мешает. Имя папки даём осмысленное, чтобы потом не запутаться. В неё выносим исходники с минимальной реализацией и пустыми методами — главное, чтобы компилировалось. Заводим переменную в CМake c таким же названием, как папка, и под неё ветвим исходники. Таким образом, все заглушки лежат в одном месте, мы их никогда не потеряем, всегда сможем вернуться к ним и реализовать. И при этом не упираться в определённый функционал, а продолжать компилировать то, что можем на данный момент.
if (WITH_WIDGETS)
set(${this_target}_SRC_GROUP_D3WINDOWS
${${this_target}_SRC_GROUP_D3WINDOWS}
"../K3dDoc/ManipulatorsForWindow3D.cpp"
…
…
)
else()
set(${this_target}_SRC_GROUP_D3WINDOWS
${${this_target}_SRC_GROUP_D3WINDOWS}
"${WIDGETS_STUBS_DIR}/ManipulatorsForWindow3D.cpp"
…
…
)
endif()
Всё это даёт возможность осуществить наш многопроходный подход, который, в свою очередь, позволяет не упираться в частности, а прогнозируемо получать готовый функционал в соответствии с теми приоритетами, которые нам важны.
Мы можем увидеть результат раньше, запуститься и начать отлаживать код под Linux’ом. Можно увидеть и избавиться от избыточных зависимостей и дублирования кода.
Этапы портирования
Какие этапы портирования мы прошли на данный момент и что делаем сейчас.
Первый этап — это выпиливание старого кода, который остался после 17-й версии. С неиспользуемым кодом всё просто - есть группа классов и методов, они нигде не создаются и нигде не вызываются, мы их находим и удаляем. Но была более сложная проблема — это «холостой» код, который по разным причинам, остался после перевода интерфейса на WPF. Например, старая панель параметров, которая, как выяснилось, создавалась, принимала события, как-то их обрабатывала, но на результат работы у пользователей это не влияло. Соответственно, нужно было найти такой код, убедиться, что он действительно холостой, и аккуратно удалить его. В итоге нам удалось выпилить несколько сотен тысяч строк Windows-специфичного кода.
Все внешние зависимости были перемещены в пакетный менеджер — Conan.
Далее нам было необходимо сформировать заготовку. Чтобы её получить, нам нужно было аккуратно, слой за слоем, срезать всё второстепенное, что на данный момент мешало и не интересовало. Сначала отрезали API. Раньше КОМПАС без API скомпилироваться не мог. Мы отрезали все диалоги, убрали второстепенный функционал вроде автосохранения, слежения за файлами, печати. В результате обнажилась базовая часть, составляющая ядро КОМПАСа. Из неё мы начали вытаскивать атомарные единицы, с которыми удобно работать. Для этого пришлось развязать очень много зависимостей, накопившихся за 30 лет. Удалось сформировать набор функциональных модулей, составляющих базовую часть. Так появился модуль, отвечающий за работу с потоком ввода/вывода, модуль настроек, отрисовщик и так далее. В это же время другая часть команды удаляла MFC из каркаса приложения. Убрали зависимость рабочих областей от MFC, реализовали шину данных.
Всё это время мы по сути набирали детали пазла. Когда их набралось достаточно, мы из этого пазла сложили заготовку, которая сперва запустилась только под Windows. Следующим шагом направили усилия на компиляцию этих модулей и получили заготовку под Linux.
Изначально это был простой 2D-viewer. Мы компилировали, срезая по максимуму все углы.
Запустили и начали потихоньку наращивать функционал: добавили работу с hot-точками, работу процессов редактирования и многое другое. Начали работы по текстовому редактору и 3D, также начиная с открытия файла и далее постепенно наращивая функционал и привлекая к этой работе большее количество программистов.
Сейчас мы находимся на этапе портирования текстового редактора и спецификации, занимаемся печатью, пишем новый отрисовщик для вторичных представлений. Когда решим эти задачи, сможем вернуться к 2D и 3D и добавить то, чего там не хватает. Постепенно КОМПАС под Linux из заготовки превратится в полноценную САПР.
Андрей Пилюгин, ведущий инженер-программист.
Комментарии (102)
AlexNixon
22.08.2023 08:51Какую-нибудь простенькую версию, чтобы быть альтернативой FreeCAD, например, не планируете ли выпустить? Я бы недорого купил, рисовать всякое несложное для 3Д печати.
kompas_3d Автор
22.08.2023 08:51+3AlexNixon
22.08.2023 08:51+1тоже для линукса, забыл написать
kompas_3d Автор
22.08.2023 08:51+5Когда появится коммерческая версия, то сможем сделать и некоммерческие версии тоже.
checkpoint
22.08.2023 08:51+3Я бы рекомендовал сделать строго наоборот - выпускать бесплатные бета-релизы как можно чаще, это позволит вам оперативно отладить ПО. А релизы уже делать платными. Иначе вы рискуете получить жуткий негатив от потребителя за сырой и глючный продукт, и попутно отбить желание у пользователя переходить на отечественные ОС (читай на Linux), которого и так не много!
alan008
22.08.2023 08:51+3Вот ведь линуксоиды до бесплатного охочи! Компас переводят на Линукс не ради того, чтобы Вася мог его бесплатно поюзать, а чтобы госорганы и прочие им сочувствующие, которым Виндоус запрещено использовать, продолжали заключать миллионные контакты на Компас. Just business, nothing personal.
checkpoint
22.08.2023 08:51+6Во-первых, я не линуксоид, а скорее фрюховод. :)
Во-вторых, у меня официально приобретенная лицензия на 18-ю версию КОМПАС-3D которую я вынужден гонять в Wine-е, что для меня большая боль и страдание. Я подумываю обновиться, но пока не появится отточена версия под Linux, денег мне совесть не позволит заплатить.
В третьих, условно-бесплатные бета версии это единственный действенный способ ускорить разработку и вычистить баги.
Что же касается госргнанов, там на Linux плотно забили (и на все запреты тоже), все сидят на ворованом софте и на винде, лицензии на которую все никак не заканчиваются и не заканчиваются. ;-)
PecarVacun
22.08.2023 08:51+1отлично!!
в далеком 2001-2005 году учился в инженерностроительном, и активно использовал КОМПАС без 3Д в своей учебной работе. Помню как замечательно работало приложение на очень слабом ноутбуке... но я мог это делать и в библиотеке и править на занятиях и прям с преподавателем без печати на А1 обсуждать какие либо детали... Очень теплое чувство от вашего продукта осталось спустя года. Отдельное спасибо за темплейты рамок для всех видов черчежей.PecarVacun
22.08.2023 08:51+2Кстати, а есть ли шанс, что и под MAC OS когда нибудь появится версия???
kompas_3d Автор
22.08.2023 08:51+1Портирование будет в первую очередь на отечественные ОС. Всё остальное возможно, если не потребует затрат или же потребует только самых минимальных затрат.
kspshnik
22.08.2023 08:51macOS она POSIX-compliant, соответствует UNIX’03, ЕМНИП
gudvinr
22.08.2023 08:51+4Оконные системы, ввод/вывод, 3D/2D рендеринг — он не POSIX-compliant, половину приложения точно так же придётся собирать под новые платформозависимые компоненты
POSIX совместимость имеет хоть какой-то смысл, когда пишутся консольные утилиты или серверы, а не GUI приложения со сложным взаимодействием между компонентами, системами плагинов и т.д.
kompas_3d Автор
22.08.2023 08:51Много ничегонезначащих аббревиатур) Значение имеют только требования правительства по переходу на отечественные ОС с 2025 года. Если решением правительства от наших пользователей потребуют работать хоть на компьютерах с марса - мы будем их поддерживать.
checkpoint
22.08.2023 08:51Товарищ gudvinr хочет сказать, что MacOS тоже операционная система и её пользователи так же хотя иметь в распоряжении нативный Компас.
Писать портабельные приложения не так сложно как кажется. Раз уж вы взялись за портирование по Linux, что по сути является переписыванием "с нуля", то стоит подойти к делу с умом и писать новый код так, чтобы его было не сложно переносить на другие ОС. А лучше сразу делать сборки под несколько ОС, ввести это положение в привычку для всей команды разработчиков.
13werwolf13
22.08.2023 08:51+2товарищ @kompas_3d хочет сказать что их собственные ошибки ничему не учат, и когда потребуется портировать под третью ОС они начнут с нуля в третий раз, и им прийдётся поддерживать уже три независимо развивающихся продукта вместо одного правильно сделанного.
DMGarikk
22.08.2023 08:51товарищ хочет сказать что они делают софт для госкомпаний, а обычные пользователи под ногами мешаются и сыпят "Много ничегонезначащих аббревиатур"
вообще честно говоря судя по комментам от компании веет таким застарелым нафталином древнего НИИ
kompas_3d Автор
22.08.2023 08:51+2Товарищ хочет сказать, что мы коммерческая структура и деньги зарабатываем, а деньги нам приносят пользователи, а не выбор технологий. Технология сегодня одна в моде, завтра другая. Наши основные пользователи - это крупные предприятия, которые либо государственные, либо под санкциями и им всем нужно переходить на отечественные ОС по решению правительства. А те, кому всё равно на решение правительства не будут использовать линукс, как не использовали его никогда раньше, - им на винде прекрасно живётся.
DMGarikk
22.08.2023 08:51Ну собственно вы мои слова и подтверждаете.
Наши основные пользователи — это крупные предприятия, которые либо государственные, либо под санкциями
но расширять рынок сбыта своего продукта вы не намерены, потому что и этих хватает? я ведь к этому клоню
Ведь есть как минимум компании дружественных стран.kompas_3d Автор
22.08.2023 08:51Ведь есть как минимум компании дружественных стран.
Вы считаете, что в условном Иране много предприятий, которые сидят на MacOS?
DMGarikk
22.08.2023 08:51У нас дружественные страны это только Иран? Бразилия, Аргентина, Индия, Саудовская Аравия, Эмираты, не?
Ну согласитесь что вы никогда не думали о международном рынке завязнув в госе по уши
DMGarikk
22.08.2023 08:51+1странный вопрос, я знаю много компаний которые используют и линукс и макос, и только ради какогото спец.софта ставят винду
грубо говоря я знаю компании которые ставят винду только для того чтобы там корел запускать, с КАД-ами я не сталкивался, но чувствую что вопрос аналогичный
Это не клиенты используют винду и вы под них подстраиваетесь, они используют винду в том числе потому что вы им это назязываете
kompas_3d Автор
22.08.2023 08:51я знаю компании которые ставят винду только для того чтобы там корел запускать
В Саудовской Аравии, Аргентине и Бразилии?
с КАД-ами я не сталкивался, но чувствую что вопрос аналогичный
Не аналогичный. Куча станков, которые работают только на винде. У многих самописный софт под винду, включая различные расчётные модули. Банальные плоттеры и старые принтеры для чертежей как без драйверов будут работать? У многих есть ещё импортные PLM-системы, в которых вся информация и архивы хранятся. Я уж молчу как бабушек и дедушек на что-то другое переучивать - они часто в том, чем пользуются до сих пор до конца не разобрались, а тут что-то новое с нуля учить.
13werwolf13
22.08.2023 08:51+1Куча станков, которые работают только на винде. У многих самописный софт под винду, включая различные расчётные модули. Банальные плоттеры и старые принтеры для чертежей как без драйверов будут работать? У многих есть ещё импортные PLM-системы, в которых вся информация и архивы хранятся.
1) какое это имеет отношение к рабочему месту конструктора работающего в компасе, к конструктору которому приходится терпеть винду только ради компаса (ну или солидворкса какого нибудь), у него к рабочему компьютеру не подключены ни станки ни плоттеры, да и PLM стоит не на его рабочем месте а не сервере
2) если сейчас всё так плохо разве это не повод сделать лучше?Я уж молчу как бабушек и дедушек на что-то другое переучивать - они часто в том, чем пользуются до сих пор до конца не разобрались, а тут что-то новое с нуля учить.
юзверям плевать какая у них ос, особенно бабушкам. я знаю что говорю ибо не одну контору и не одну сотню бабушек пересадил на линукс. дайте им похожий ui и они даже не заметят разницу.
red_cell
22.08.2023 08:51Сразу видно, что в теме инженерии вы профан.
Инженер, это не только конструктор, который в CAD работает. Могут быть инженеры-технологи, которые нужны CAPP системы, есть наладчики станков с ЧПУ (коим я работал 17 лет назад). Писали программы на ЧПУ либо в PEPS который под DOS, либо в UG под Win. И чтобы не бегать каждый раз с дискетой в цех, у нас все станки были в локальной сети, куда программы и сливали.
А PLM это клиентско - серверная среда. И там ой-ой-ой все как не просто с переносом на Linux.
И это я не качнулся софта для сварки, моделирования укладки деталей в тару, организации работы диспетчерский служб. И все это написано про Windows, и аналогов под linux нет и в ближайшие годы не предвидится.
Так что Аскон, конечно молодец, что портирует Компас на linux, только с остальным вы что будете делать?
13werwolf13
22.08.2023 08:51Инженер, это не только конструктор, который в CAD работает. Могут быть инженеры-технологи, которые нужны CAPP системы, есть наладчики станков с ЧПУ (коим я работал 17 лет назад).
это я знаю, но я говорил именно про конструкторов, какое отношение ваш спич имеет к ним? или они должны страдать потому что соседу приходится страдать?
А PLM это клиентско - серверная среда. И там ой-ой-ой все как не просто с переносом на Linux.
не просто по вашему означает ненужно? я правильно понял?
ваши возмущения интересны, но безполезны в данном контексте
kompas_3d Автор
22.08.2023 08:51да и PLM стоит не на его рабочем месте
Стоит в том числе и на его рабочем месте.
у него к рабочему компьютеру не подключены ни станки ни плоттеры
И как же он тогда будет печать, если они у него не подключены? Что каждый раз с флешкой ходить как в 90е?
юзверям плевать какая у них ос, особенно бабушкам.
Не нужно наших пользователей какими-то зверями называть!
13werwolf13
22.08.2023 08:51Стоит в том числе и на его рабочем месте.
в нормальном случае работа с серверной частью PLM задача самого CAD. но увы вы правы это не всегда возможно, ведь большинство проф софта пишется абы как.
И как же он тогда будет печать, если они у него не подключены? Что каждый раз с флешкой ходить как в 90е?
в аскон не слышали про сеть?
впрочем я работал на оборонке, там печатать ходят с флешкой, в закрытую комнату. вы пытались пошутить но шутка оказалась не шуткой.
kompas_3d Автор
22.08.2023 08:51не слышали про сеть?
Для работы принтера по сети всё равно нужны драйвера.
там печатать ходят с флешкой, в закрытую комнату
Не везде в оборонке такие параноидальные меры безопасности...
DMGarikk
22.08.2023 08:51В Саудовской Аравии, Аргентине и Бразилии?
там другой мир? все сидят на винде?
еще раз, я хочу указать на то что вы полностью замкнуты на госзаказчиках и крупных конторах, вам не нужны новые пользователи, вам интересны только крупняки. причем крупняки пойдут на любые требования под вас… вы же упомянули что переходите на российское по только потому что требует государство. а не потому что заказчик может захотел перейти на линукс (ведь ему проще поставить десяток машин на винде чем вас убеждать)
Банальные плоттеры и старые принтеры для чертежей как без драйверов будут работать?
Миграция на другую ОС это отдельный вопрос и крупный проект
но допустим мы взяли новый с нуля построенный завод, у нас там тоже дедушки с виндой?
kompas_3d Автор
22.08.2023 08:51там другой мир? все сидят на винде?
еще раз, я хочу указать на то что вы полностью замкнуты на госзаказчиках и крупных конторах
У вас только теория. А мы были во всех этих странах и пытались продавать. Нам говорили что угодно - что интерфейс непривычный, что какого-то функционала недостаточно, что местные стандарты плохо поддерживаем. Но нигде и никогда у нас не просили софт не под винду.
DMGarikk
22.08.2023 08:51Но нигде и никогда у нас не просили софт не под винду.
я прям чувствую что вы не спрашивали
когда я работал в РЖД, к нам притащили агрегат который работал 24/7 и требовал Windows 98 (в 2004 году), причем он был новой разработкой, я лично общался с инженерами-конструкторами
Я им говорил "ребят, давайте Win2000 хотябы!!! ну 98 это что? у меня уже раз пять оно в процессе работы падает в течении дня"… непонимание и "а зачем??? мы не будем ничего переписывать, ставтье 98 и точка!" (домен? какой домен? это не к нам, мы вам станок привезли, он свою операцию выполняет)
CptAFK
22.08.2023 08:51+2У вас нет притерзий что кад системы из европы(америки), чей рынок сильно больше российского, не работают ни на линукс ни на мак.
Но вы предлагаете аскону сделать еще и версию компаса под мак, для условных 0,3% пользователей, хотя они итак сейчас заняты крайне не триальной задачей, переноса компас на linux.
Мне одному кажется ваша предложение не логичным? Вы сами не считаете странным ваше предложение?
red_cell
22.08.2023 08:51+1Уже 20 лет работаю на промышленных предприятиях и с промышленными предприятия. Ни одного раза не видел, чтобы инженеры использовали Mac.
Опуститесь с небес на землю и пройдитесь по "условному" Автовазу.
DMGarikk
22.08.2023 08:51ну прицепились вы к маку, давайте за линукс чтоли… ведь если не события прошлого года то никто бы и не почесался
мак реально в этой сфере не нужен (тут согласен)
kompas_3d Автор
22.08.2023 08:51Вы пишете в ветке мака. В контексте экспорта кстати мак как раз спрашивали в США, там у них есть существенная доля рынка, но нам туда сейчас всё равно ничего не продать.
13werwolf13
22.08.2023 08:51позвольте я поясню в чём вы не правы по мнению большинства в этом топике:
вы наступаете на старые грабли путая причину со следствием. немного изменив названия, но не поменяв сути я лишь повторю стааарую фразу которая объясняет всю ситуацию в целом: не "дизайнеров нет на линуксе потому что там нет фотошопа", а "фотошопа нет на линукс потому что там нет дезайнеров".
софт появляется там где есть потребитель, и если потребитель будет просить компас на мак то компас появится на мак. проблема заключается в том что пользователь конечный даже если будет просить пойдёт на три всем известные буквы (да да, я видел как аскон посылает даже не дав договорить), аскон (как и большинство подобных контор) мольбы слушает только от бизнеса, а бизнесу плевать страдает инженер или нет, к тому же аскону очень удобно говорить не "сделаем потому что нас попросили полторы тысячи инженеров" а "да там только один жалкий алмазантей просил, зачем заморачиваться". вот вроде суть одна, но "тысяча инженеров" это повод, а "один юрик" это всего один..
hollycon
22.08.2023 08:51Портируете только ядро? А как же самое вкусное - библиотеки написанные сторонними разработчиками?
kompas_3d Автор
22.08.2023 08:51+2Ядро уже давно портировано. Сейчас портируется сам КОМПАС. Новая библиотека развёрток есть в 22й версии.
Kyushu
22.08.2023 08:51+1Наконец-то, появилось что-то, достойное внимания. Поздравляю всех!
Изложение хорошее, правда все равно, мало что понятно (пазл пишется с одной 'з'). Будем ждать конкретики и результатов. Вообще это здорово, когда под важную задачу можно сделать рефакторинг практически любого уровня.
Когда планируете бета-тестирование? Практика подсказывает, что можно начинать практически в любой момент.
shtirlitsus
22.08.2023 08:51почему выбрали debian?
kompas_3d Автор
22.08.2023 08:51+3Astralinux. Поддержка Альтлинукс тоже будет.
checkpoint
22.08.2023 08:51Астра распространена по большей части в гос структурах, в то время как Альт - в бизнесе и у физиков. Вы же собираетесь зарабатывать на продажах лицензий, а не на попилах (ну я так надеюсь) ? Тогда почему выбрана Астра ?
kompas_3d Автор
22.08.2023 08:51Оборонные предприятия - это и есть госструктуры) Именно ради них всё это и делается. Все остальные пользователи с успехом продолжают сидеть на винде.
13werwolf13
22.08.2023 08:51Все остальные пользователи с успехом продолжают сидеть на винде.
так стоп, вы или крестик снимите или трусы оденьте
1) "с успехом" и "на винде" расположены на разных полочках, но никак не в одном предложении
2) инженеры на десятках предприятий устали от приколов винды задолго до того как вышло уже названное требование правительства, я уж молчу про админов обслуживающих ПК этих инженеров
3) комментарий выше звучит как призыв к пиратству учитывая что честным путём винду сейчас не купить никому (и забавнее всего этот призыв звучит от ребят делающих проприетарное и платное ПО)
4) а можно узнать какой процент вашей прибыли составляют "оборонные предприятия" и "госструктуры" потому что пока что выглядит так словно вы работаете себе во вредно общий посыл я понял, видимо в аскон считают что для оборонки так уж и быть можно сделать худобеднотяпляп а простой пользователь пусть страдает с виртуалочкой с пиратской виндой (и видимо таким же пиратским компасом ибо раз уж начал пиратить то зачем останавливаться) ведь сделать хорошо не обещал никто.
kompas_3d Автор
22.08.2023 08:511) "с успехом" и "на винде" расположены на разных полочках, но никак не в одном предложении
Почему, если всех всё устраивает? Главное, что предприятия зарабатывают деньги, чтобы развиваться и платить зарплаты - это основной критерий успеха.
2) инженеры на десятках предприятий устали от приколов винды задолго до того
Ну потом устанут от приколов других ОС. Ничего принципиально не изменится.
4) а можно узнать какой процент вашей прибыли составляют "оборонные предприятия" и "госструктуры"
Более 30%
13werwolf13
22.08.2023 08:51Почему, если всех всё устраивает? Главное, что предприятия зарабатывают деньги, чтобы развиваться и платить зарплаты - это основной критерий успеха.
кого всех? тех двух с половиной землекопов которые не знают альтернатив?
Ну потом устанут от приколов других ОС. Ничего принципиально не изменится.
ну так по этому и говорю про универсальные фреймворки не прибитые гвоздями к одной конкретной платформе
Более 30%
30% это достаточно чтобы забить на потребности остальных 70%? в комментарии ниже вы пишете про то что разработка ориентирована на интересы БОЛЬШИНСТВА пользователей. это как так получается что 30% приносящих прибыль больше чем 70%? по весу чтоли?
kompas_3d Автор
22.08.2023 08:51остальные 70% на винде.
13werwolf13
22.08.2023 08:511) я не спрашивал какую ОС юзают 70%, вопрос был в другом
2) данное утверждение не верно как минимум потому что необходимость пользовать винду для работы некоторого софта никак не говорит о желании её пользовать, так ещё и не совпадает с "политикой партии"
3) откуда столько хамства у официального аккаунта казалось бы крупной конторы?kompas_3d Автор
22.08.2023 08:51Перечитайте мои ответы повнимательнее. Для 30% пользователей требуется поддержка отечественных ОС, остальным 70% нужно работать как раньше. Мы не работаем с желаниями, только с коммерческими запросами.
13werwolf13
22.08.2023 08:51перечитайте внимательно мои вопросы (особенно те которые так старательно игнорируются с самого начала треда) и тогда станет ясно что я спрашивал не об этом.
вы замечательно отвечаете (хотя и полную чушь) на дополнительные ремарки, но упорно игнорируете основную суть всего первоначального вопроса который сквозит тут сразу из нескольких ветвлений комментариев. неужели он настолько на больное давит? или NDA не даёт ответить? ну тогда стоит открыто об этом сказать.
DMGarikk
22.08.2023 08:51Оборонные предприятия — это и есть госструктуры) Именно ради них всё это и делается
крайне прискорбно что вся разработка ориентирована на госструктуры, и вам всёравно на остальных пользователей
kompas_3d Автор
22.08.2023 08:51Разработка ориентирована на запросы большинства наших пользователей.
xtraroman
22.08.2023 08:51Возможно, потому что отечественные линуксы не поставляют в виде докер образов. Вроде у Альт Линукс есть только инструкция как образ сделать. А дебиан - поставляют.
13werwolf13
22.08.2023 08:511) не одними докерами живём. alt есть в виде образа для lxd (причём как lxc так и qemu) что вполне себе является альтернативой docker для большинства задач включая и не ограничиваясь CD/CI.
2) у некоторых контор в документации прописано (сам видел) не использовать образа систем с чужих реджистри а по необходимости собирать и поддерживать свои (да да, которые зачастую вообще ничем не отличаются от официальных с докехаба), именно собирать а не копировать извнеUPD: в репе lxd у alt остались только lxc образа, qemu пропали.
пруф
xtraroman
22.08.2023 08:51Мне кажется, включить lxd образы в CI сложнее чем докер образы. Понятно, что любые сложности преодолимы, но почему не сделать удобно сразу? Официальные докер образы российских дистрибутивов линукс сэкономили бы время коллегам.
13werwolf13
22.08.2023 08:51как таковой технической сложности нет вообще. проблема в том что (на примере gitlab-ci) все отличные от docker ранеры в большинстве CD/CI инструментов это нелюбимое дитя, любые проблемы с ними решаются (если вообще решаются) в последнюю очередь. например ssh-executor в gitlab-ci висит в состоянии "ну мы потом посмотрим" уже много лет. так что вопрос не технический а скорее политический.
я кстати подозреваю что для своих внутренних нужд образа у них у всех есть, просто не публикуются потому что.. да фиг их знает почему..
checkpoint
22.08.2023 08:51Пожалуйста, не забывайте компилировать под другие ОС, например под FreeBSD. Заранее огромное спасибо!
kompas_3d Автор
22.08.2023 08:51Портирование будет в первую очередь на отечественные ОС. Всё остальное возможно, если не потребует затрат или же потребует только самых минимальных затрат.
checkpoint
22.08.2023 08:51+5Старайтесь писать так, что бы независеть от ОС и сможете покрыть сразу весь спектр open source операционных систем. Учитывая что у вас не системное и не сетевое приложение, то это совсем не сложно. В общем, поменьше стронних библиотек и все будет хорошо. :-)
PS: Готов потестировать ваш "прототип" Компаса на FreeBSD под Linuxulator-ом. Мою статейку про запуск Компаса на FreeBSD Вы, наверное, читали.
kompas_3d Автор
22.08.2023 08:51Читали)
Учитывая что у вас не системное и не сетевое приложение, то это совсем не сложно.
У нас очень много разнообразных функций + под компас много сторонних приложений, это сильно усложняет разработку и тестирование.
13werwolf13
22.08.2023 08:51+1Портирование будет в первую очередь на отечественные ОС.
ну Ульяновск.BSD вполне себе отечественная и импортозамещённая FreeBSD
13werwolf13
22.08.2023 08:51Сегодня впервые публикуем пост о разработке нативной Linux-версии.
всего то спустя сколько лет портирования? 8??
К моменту перехода на Linux у нас был большой запас неиспользуемого старого кода, который остался после перевода большей части интерфейса на WPF в 17-й версии КОМПАС-3D. Это Windows-специфичный код, и от него нужно было избавляться.
божественный Qt не привязанный к одной платформе такой: "ну да, ну да.. пошёл я на.." ©
wpf - "шикарный" выбор для разработки интерфейса, у него ведь целых 0 преимуществ.
gudvinr
22.08.2023 08:51божественный Qt
Дорогой для коммерческого использования и скорее всего лицензировать для аскон вообще невозможно
13werwolf13
22.08.2023 08:51+3я далеко не специалист в лицензировании, не юрист, не бюрократ. но насколько я помню базовые возможности Qt (а для создания окошка с кнопочками базовых более чем достаточно, ведь остальное у аскон уже есть) распространяются по принципу "бери и юзай" не требуя оплаты чего либо и отдельных договоров. поправьте меня если я ошибаюсь. ну и в конце концов для создания UI можно взять не голый Qt а например новомодный kirigami, ну или на худой конец gtk если уж совсем хочется через опу делать. и всё равно остаться с переносимой кодовой базой. однако в аскон зная заранее что линукс версия не за горами взяли за основу для интерфейса масдайный непереносимый фреймворк, а вместо ответа на вопрос "а почему собсна" поставили минус мне в карму (и мы все знаем почему именно так).
Uglevod
22.08.2023 08:51Интересно каков штат сотрудников делающих Linux версию.
И каков штат делающих компас под форточки ?
alan008
22.08.2023 08:51+3Уже 2 неотвеченных вопроса выше. Что ж, буду третьим.
Что используется для графического интерфейса (менюшки и кнопки) и непосредственно для рендеринга 2d/3d. Какие библиотеки/фреймворки/низкоуровневые прослойки? Skia?
kompas_3d Автор
22.08.2023 08:51+3Интерфейс - Qt. Рендеринг - ogl. Используем Skia. Библиотеки/фреймворки - boost, freetype и много других. Проект на CMake, внешние зависимости в Conan.
alan008
22.08.2023 08:51Спасибо за ответ!
Правильно ли я понимаю, что текущая Windows версия остается "нетронутой", а прототип на кросс платформенной основе развивается сам по себе?
Или в Windows версии уже сейчас интерфейс меняется на QT, несмотря на то, что реальная версия для Linux еще не вышла (и неизвестно когда выйдет)?
kompas_3d Автор
22.08.2023 08:51+1Windows-версия продолжает развиваться с минимальными изменениями в технологиях, на QT её не переводили.
13werwolf13
22.08.2023 08:51т.е. вы будете теперь поддерживать два продукта выполняющие одинаковые задачи и снабжённые одинаковым функционалом вместо того чтобы win и lin версию привести к одинаковому знаменателю?
наконец-то ответ..
именно это я вопрошал несколько часов назад, именно этот вопрос был проигнорирован.
tyuchkov
22.08.2023 08:51А какие-нибудь альтернативы для пользовательского интерфейса кроме Qt рассматривали? Интерфейс Linux версии я так понимаю будет сильно отличатся от Windows и будет больше походить на стиль office 2003, или нет? Или Qt как раз выбран за счет кроссплатформенности, т.е. в конечном итоге под оба варианта будет интерфейс на Qt? Интересно какие еще альтернативы по интерфейсу есть.
kompas_3d Автор
22.08.2023 08:51Интерфейс виден на скриншоте. Он не сильно отличается от стандартного. Просто часть элементов ещё не сделаны.
Panzerschrek
22.08.2023 08:51+1Возникает закономерный вопрос: а почему до недавнего времени проект был так сильно прибит гвоздями к Windows? Почему изначально не было изоляции платформозависмого кода? Почему не использовались кроссплатформенные фреймворки, вроде Qt?
Казалось бы, сильно бы это жизнь не усложнило но работу по адаптации к GNU/Linux это бы сильно облегчило.alan008
22.08.2023 08:51+1Да, это очень значительно усложняет разработку. Компас продукт из 90-х. Когда не меньше 95% десктопных машин (=твоих потенциальных клиентов) использует Windows, какой смысл думать про другие платформы. Это экономика. Никто не будет добавлять трудозатрат, когда они не окупятся.
kompas_3d Автор
22.08.2023 08:51+2Из 80х, не нужно нам возраст занижать)) КОМПАС ещё в советском союзе под DOS работал)
Panzerschrek
22.08.2023 08:51+1Древность продукта объясняет проблему с переносимостью.
Насколько я понимаю, в 90-х, а уж тем более ранее с этим всё очень плохо было. Банально стандартизация C++ (или даже Си) хромала и один и тот же код мог не работать корректно на разных платформах.
Ну и к тому же код тогда писали сильно ближе к железу - ибо не было хороших абстракций (в том же DOS даже графического API нету), что опять же не способствует переносимости.13werwolf13
22.08.2023 08:51+1на самом деле КМК не объясняет.
1) за столько лет разработка не раз упиралась в "даёпрст опять переписывать это легаси" по разным причинам
2) переезд dos>xp>7>10 (намерено пропустил много версий) каждый раз приводил к "а вот это нам опять переделывать"на одном из этапов думаю далеко не один разраб задумался о том что нужно с этим делать. уже во времена релиза win7 были все необходимые инструменты для того чтобы отвязаться от конкретной платформы отгородившись ещё одной абстракцией, но скорее всего кто-то прикинул что это выйдет дороже и/или дольше чем городить костыли, на том и порешили.
red_cell
22.08.2023 08:51+1потому что еще три года назад не было рынка пользователей Linux
его и сейчас нет, даже при учете работы из под палки правительства. Мне вот интересно, когда Аскон выпустит свой Компас под Linux, какая у него будет доля?! скорее всего, те же 2-3%. Остальные на Win
quarus
Радует, что начало положено...