Пекло версій SDK: чому розробники CAD перебудовують все щороку
Щорічний ритуал зламних змін, що коштує мільйони годин розробників. Катастрофи версіонування SDK на всіх CAD-платформах.
Перевірено: Твердження щодо сумісності версій тестуються за допомогою автоматизованих бенчмарків. Переглянути останні результати
Щорічний ритуал зламних змін, що коштує мільйони годин розробників
Ласкаво просимо до особливого пекла, зарезервованого для розробників CAD📐CADSoftware for creating technical drawings and 3D models.View in glossary API🔌APIInterface for software components to communicate.View in glossary, де ваш ідеально працюючий код минулого року гарантовано зламається цього року. Не тому, що ви зробили щось неправильно, а тому, що версіонування SDK🧰SDKLibrary for building applications on a platform.View in glossary у світі CAD дотримується філософії “ламаємо все щороку”.
SOLIDWORKS: чемпіон кошмарів interop DLL
SOLIDWORKS займає першість у катастрофах сумісності версій. Ось що чекає на розробників:
Щорічний ритуал зламних змін
- Кожна мажорна версія ламає interop DLL
- Надбудови мають бути перебудовані для кожного релізу
- Використовуєте кілька версій SOLIDWORKS? Готуйтесь до пекла управління шляхами
Реальні повідомлення про помилки, що переслідують розробників:
Error CS1705 Assembly 'AngelSix.SolidDna' uses
'SolidWorks.Interop.swpublished, Version=26.0.1.1'
which has a higher version than the referenced assembly
Апокаліпсис VBA 7.1 SOLIDWORKS 2021 SP2 представив VBA 7.1, миттєво зламавши кожен існуючий макрос:
- Попередні менеджери встановлення не розпізнають компоненти VBA 7.1
- Макроси, написані до 2021 року, просто перестають працювати
- Жодної зворотної сумісності
- Жодних інструментів міграції
PTC Creo: рулетка залежностей Visual Studio
Creo Toolkit додає свій особливий аромат пекла версій:
- Необхідна перекомпіляція для кожної версії Creo
- Бібліотеки Toolkit мають залежності від версії Visual Studio
- “Завжди сумісні вперед, але ніколи назад”
- Плагін GCRI для зворотної сумісності? Вилучений у Creo 7
Резюме одного розробника: “Якщо ви на Creo 8, ви не можете відкрити файли Creo 9. Крапка.”
Siemens NX: шестимісячний цикл зламних змін
Поки інші ламають щороку, NX інновує з шестимісячними функціональними релізами:
- “Функціональність NX Open може змінитися”
- “Можуть знадобитися нові передумови”
- Критичні баги вимагають патчів, що підтримуються спільнотою
- Існують GitHub-репозиторії спеціально для виправлення аварій SOA Teamcenter 12.2
Приховані витрати
Податок на час розробників
- 2-3 тижні щорічно на перебудову під нові версії
- Тестування на кількох версіях
- Підтримка окремих кодових баз
- Оновлення документації для версійних особливостей
Кошмари корпоративного розгортання
- Неможливо оновитись, поки всі надбудови не перебудовані
- Різні підрозділи на різних версіях
- Збої інтеграції між системами з невідповідними версіями
- Матриця тестування зростає експоненційно
Інтерфейс IModelDoc2: 700+ членів для плутанини
IModelDoc2 у SOLIDWORKS ідеально ілюструє проблему:
- Понад 700 членів, розподілених між об’єктами-розширеннями
- “Жодної реальної логіки у розподілі”
- Документація не згадує про розподіл
- Зміни версій випадково переміщують членів
Чому це валідує підхід RAPS
Архітектура RAPS🌼RAPSRust CLI for Autodesk Platform Services.View in glossary передбачає конфлікти версій:
- Крейти робочого простору дозволяють версійно-специфічні реалізації
- Система плагінів забезпечує версійно-специфічні обробники
- Абстракція CLI💻CLIText-based interface for running commands.View in glossary захищає користувачів від змін API
- Один бінарний файл працює з кількома версіями APS☁️APSAutodesk Platform Services - cloud APIs for CAD/BIM automation.View in glossary
Реальність ринку
| Платформа | Частота зламних змін | Вплив на розробників |
|---|---|---|
| SOLIDWORKS | Щорічно (100% зламних) | Перебудова всього |
| Creo | З кожною мажорною версією | Повна перекомпіляція |
| NX Open | 6 місяців | Безперервні оновлення |
| Revit🏠RevitAutodesk's BIM software for architecture and construction.View in glossary/APS | Щорічно (часткові) | Вибіркові оновлення |
Мільярдна можливість
Розглянемо математику:
- 100,000+ розробників CAD API по всьому світу
- 2-3 тижні щорічно на оновлення версій
- $150/годину — середня вартість розробника
- = $600 млн+ щорічних витрат на сумісність версій
Інструмент, що абстрагує версійні відмінності, міг би захопити значну частину цих марних витрат.
Конкурентна розвідка
Найгірші порушники:
- SOLIDWORKS — повні зламні зміни interop щороку
- NX Open — найшвидший цикл зламних змін (6 місяців)
- Creo — зворотна сумісність відсутня за дизайном
Найкращі (найменш погані):
- Onshape — REST API🌐RESTWeb service architecture style using HTTP.View in glossary забезпечує більшу стабільність
- Хмарні платформи — можуть версіонувати ендпоінти окремо
Припущення розрахунку вартості: 100,000+ розробників CAD API по всьому світу x 2.5 тижні середнього щорічного часу на оновлення x $150/годину середньої вартості розробника = $600 млн+ загальногалузевих щорічних витрат на сумісність версій. Індивідуальні витрати компаній варіюються залежно від складності надбудов та покриття платформ.
Шлях вперед
Інструменти сумісності версій повинні:
- Виявляти невідповідності SDK/interop до виконання
- Надавати матриці сумісності
- Пропонувати конкретні комбінації версій
- Абстрагувати зміни API за стабільними інтерфейсами
- Підтримувати шари зворотної сумісності
Що далі?
Наша наступна стаття занурюється у катастрофи документації — де розробники Windchill благають про приклади “Hello World”, а документація NX навіть не встановлюється за замовчуванням.
Частина серії “Больові точки крос-платформної розробки”. Бо коли у всіх одна й та сама проблема, це не баг — це ринкова можливість.