Что тормозит обеспечение поддержки DWG в свободных САПР?

Услышав очередной вопрос, как в свободном софте обстоят дела с чтением чертежей в формате DWG, редакция линуксграфикса решила обстоятельно изучить вопрос и стала глубже вникать в проблематику, где ей открылись бездны.

Как известно любому инженеру, DWG — собственный формат продуктов Autodesk с 1982 года. За минувшие десятилетия он стал чем-то вроде стандарта де-факто в высокотехнологичных и наукоёмких отраслях, в производстве, строительстве и т.д.

Blueprint view in FreeCAD

Несмотря на существование форматов типа STEP (ISO 10303), DWG остаётся частью слишком многих технологических процессов. В случае с ними всё очень просто и жёстко: либо вы можете открыть и сохранить DWG, либо вы не можете сделать свою работу. Соответственно, отсутствие поддержки DWG резко снижает пригодность свободных САПР для решения повседневных задач.

Ситуацию с DWG в целом здоровой тоже не назовёшь. Ещё не так давно ведущие разработчики САПР выясняли отношения по поводу прав на торговую марку DWG, и на текущий день они находятся, преимущественно, в двух лагерях.

Лагерь Autodesk не производит никакой публично доступной документации на формат. Лагерь Open Design Alliance публикует спецификацию. Ни одна из этих сторон не производит SDK, совместимый с лицензиями СПО, и это притормаживает работу некоторых разработчиков СПО.

(В качестве обратного примера достаточно вспомнить релицензирование компанией Adobe своего SDK для работы с метаданными XMP. Благодаря лицензии Apache фрагменты SDK мгновенно осели в проекте Exiv2, а через него — во всём мало-мальски пригодном для работы свободном фотософте.)

С появлением и мгновенным ростом популярности DraftSight, свободной двухмерной системы проектирования от Dassault Systems, положение вещей заметно улучшилось за счёт поддержки программой DWG и отсутствием у неё ценника. Тем не менее, мы говорим о закрытом софте, контролируемом одной компанией. Некоторых это очень волнует.

В 2008 году, за несколько лет до выхода DraftSight, Фонд СПО (Free Software Foundation, далее FSF) признал важность поддержки DWG в свободном софте и назначил решению этой задачи высокий приоритет. В 2009 году несколько бразильских программистов начали проект LibreDWG, основывающийся на коде libdwg — предыдущей, прекращённой попытки создать библиотеку для работы с файлами в формате DWG.

Проект взял достаточно резвый старт, но в начале 2011 года работа над ним была приостановлена и не возобновилась до сих пор. Единственное приложение, где библиотека сейчас используется — это GRASS. Мы решили выяснить, что случилось. Как оказалось, на то есть несколько причин. Кратко охарактеризуем их.

Неполная спецификация на формат DWG. Опубликованная Альянсом спецификация в течение долгого времени содержала огромное количество пробелов и документировала формат только до версии 2004. Больше того, в течение некоторого времени в публичном доступе находился повреждённый файл PDF.

Лицензия GPLv3. Для пользовательского софта это крайне неудачный выбор, поскольку свободные САПР обычно либо наследуют лицензию, либо используют третьесторонние компоненты, лицензия которых не позволяет обновить лицензию самого софта до более новой.

FSF является единственным правообладателем кода LibreDWG и до недавних пор резко возражал против релицензирования LibreDWG. Применительно к проекту FreeCAD и Йорику ван Хавре лично Ричард Столлман публично написал авторам LibreDWG ровно следующее:

«Вам не следует менять лицензию библиотеки. Лучше объясните ему [Йорику] условия её использования.»

Чтобы убедиться в актуальности собранных сведений, мы связались с разработчиками LibreDWG, а заодно попросили комментарии у заинтересованных авторов софта для конечных пользователей и у представителя Free Software Foundation.

Что говорят авторы LibreDWG

Мы связались с Фелипе Санчесом (Felipe Sanches) и Родриго Родригесом да Сильвой (Rodrigo Rodrigues da Silva), основными разработчиками LibreDWG, с целью установить положение дел в проекте и прояснить ситуацию с поддержкой DWG в СПО.

В 2009 всё ещё велось громкое судебное разбирательство между Autodesk и ODA касательно торговой марки DWG. Тем не менее, именно тогда вы и начали этот проект. Почему?

Фелипе: Задача проекта GNU LibreDWG — дать людям возможность читать файлы в формате DWG, не устанавливая проприетарное ПО. Нам не навится формат DWG, и мы не хотим поощрять его широкое применение, делая возможной поддержку формата где угодно.

Вместо этого мы хотим обеспечить поддержку DWG только в тех приложениях, где она действительно нужна. Главным образом речь идёт о свободных САПР, для которых это во многом определяет способность конкурировать с закрытыми продуктами вроде AutoCAD.

Много ли вам удалось сделать? В каких случаях пришлось прибегать к реверс-инжинерингу?

Мы реализовали почти всё, что описано в опубликованной Open Design Alliance спецификации. Похоже, что за прошлый год она обновилась, но до того в спецификации было много лакун, а сами файлы были по большей части повреждены. Что касается реверс-инжинеринга, мы занимались им очень мало и прибегали к нему лишь в тех случаях, когда в спецификации были ошибки, неточности, либо пробелы. Могу привести следующий пример.

Сложные трёхмерные объекты в DWG кодируются в ещё одном незадокументированном формате и блобом встраиваются внутрь файлов DWG. Нам удалось выяснить, что это делается закрытым трёхмерным ядром, скорее всего, лицензированным Autodesk (и другими компаниями) и встроенном в AutoCAD. Иногда это текст, а иногда это двоичные данные. Когда это текст, читать содержимое блоба очень просто. С достаточно большим количеством примеров можно было бы сравнительно просто выполнить реверс-инжинеринг.

FreeCAD

Мы декодировали 3D-объекты как текстовые блоки практически случайно. В спецификации на эту тему всё было как-то туманно, плюс вырисовавался дурацкий хак, делающий информацию на первый взгляд нечитаемой. Мы узнали об этом от одного украинского программиста. Понять его английский было нереально, но потом он просто прислал кусок кода на C… :)

Словом, сейчас LibreDWG декодирует файлы R13, R14 и DWG 2000. Поддержка DWG 2004 почти готова, но всё ещё нужно работать над версиями 2007 и 2010. Информация по ним появилась только в версии спецификации с номером 5.1 (текущая версия —5.2, прим. ред.). Поддержка записи DWG частично готова, но у чтения более высокий приоритет.

Судя по прошлогодней дискуссии в списке рассылки, вы никогда формально не контактировали с ODA. Иными словами, юридический статус вашей работы непонятен. Это так?

Родриго: Да, мы ни разу не контактировали с ODA. Они выложили спецификацию в публичный доступ, где она видна всем. Мы прочитали её и использовали полученную информацию. Полагаю, если бы они не хотели, чтобы спецификация использовалась, они бы её не опубликовали.

Похоже, что спустя три года ни одной версии LibreDWG так и не вышло. Почему?

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

Насколько я могу судить по публичному репозиторию Git, проект сейчас неактивен. Последние коммиты датируются январём 2011 года. Что случилось с проектом?

Фелипе: Нынешние условия лицензирования LibreDWG (GPLv3+) несовместимы с условиями большинства свободных САПР. Поэтому мы сейчас общаемся с FSF на тему оптимальной стратегии релицензирования библиотеки.

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

Кто принял исходное решение о лицензировании на условиях GPLv3?

Родриго: Выбор GPLv3 — наследие проекта libdwg.

И Free Software Foundation является владельцем авторских прав?

Родриго: Да.

Какую лицензию вы хотите для LibreDWG? LGPL?

Родриго: Не думаю, что LGPL была бы удачным выбором, потому что тогда библиотекой смогли бы воспользоваться создатели несвободного ПО. Поддержка DWG — довольно привлекательная функция, и мы не хотим делать её доступной для ПО, которое нарушает свободы пользователей.

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

Достаточно ли библиотека развита для использования в пользовательских приложениях?

Фелипе: Да. Если к ней возникнут претензии, мы всегда заинтересованы в отчётах и готовы оперативно исправить ошибки.

На ваш взгляд, есть ли у вас прочный контакт с разработчиками свободных САПР?

Фелипе: Скорее нет, чем да. Некоторые разработчики связывались с нами, но упёрлись в проблему с лицензированием и на этом остановились.

Какие шаги вы предприняли для решения этой проблемы?

Родриго: Несколько месяцев назад я связался с FSF, объяснив сложившуюся ситуацию. Они захотели получить более подробную информацию, чтобы передать рассмотрение решения Ричарду Столлману. У меня не было много времени на сбор запрошенной информации (например, что именно изменит смена лицензии, как много проектов лицензировано строго под GPLv2 и т.д.), поэтому всё немного затянулось. Несколько недель назад я наконец предоставил необходимую информацию и теперь жду их решения.

Что говорят разработчики свободных САПР

Свободных САПР, которые выиграли бы от поддержки DWG, не так уж и много. Тем не менее, есть три ключевых приложения, которым это необходимо: LibreCAD, FreeCAD и Blender. Для всех трёх проектов проблема несовместимости лицензий актуальна, и первые два из них напрямую контактировали с командой LibreDWG.

LibreCAD

LibreCAD является активно разрабатываемым форком свободной версии QCad. Лидер проекта Рис ван Твиск (Ries van Twisk) сказал нам следующее:

Лично я не понимаю нежелание FSF менять лицензию. Библиотекой практически никто не пользуется, и поэтому разработка проекта практически встала. Среди разработчиков LibreCAD есть толковые ребята, которые в случае необходимости внесут нужные исправления в LibreDWG. Но это будет возможно лишь в том случае, если библиотека сменит лицензию на GPLv2+.

FreeCAD

FreeCAD — самая активно развивающаяся, если не единственная САПР для твердотельного параметрического моделирования, которая весьма существенно выиграла бы от использования LibreDWG. Один из её разработчиков, Йорик ван Хавре (Yorik van Havre), отвечающий в проекте за архитектурный модуль и модуль двухмерного черчения, дал достаточно подробный ответ:

Я не настолько хорошо знаком с текущим положение дел в LibreDWG, так что моё мнение может быть не слишком актуальным — имейте это в виду. Я пересекался с двумя разработчиками LibreDWG, Родриго и Фелипе. Как и я, они живут в Сан-Паоло, так что пару раз мы с ними встречались.

В 2009 году я заинтересовался вопросом использования LibreDWG во FreeCAD. Тогда я как раз работал над модулем двухмерного черчения а-ля AutoCAD, и возможность открывать и сохранять DWG показалась мне достаточно привлекательной.

Затем в списке рассылки началась та самая дискуссия со Столлманом, когда он посоветовал не менять лицензию. Так что мы столкнулись с той же проблемой, с которой затем пришлось иметь дело проекту LibreCAD: лицензия GPLv3 обратно несовместима с GPLv2. При этом весь софт, а это FreeCAD, LibreCAD и LibreDWG, наследует свою лицензию от других проектов и не может просто так взять и всё поменять.

После этого я решил повнимательнее посмотреть в код LibreDWG и осознал пропасть, разделяющую то, что можно назвать полноценной реализацией поддержки DWG, и то, что проект LibreDWG лишь мог надеяться сделать.

Код LibreDWG основан, главным образом, на материале спецификации DWG, выпущенной Open Design Alliance. Этот документ чрезвычайно, просто ужасающе неполон. Последняя его версия выглядит существенно лучше предыдущих, но сходу сложно сказать, насколько именно.

Так или иначе, команда LibreDWG, как я помню, сравнительно быстро реализовала всё, что в нём было описано. После этого с помощью библиотеки можно было читать файлы DWG и извлекать простые объекты вроде линий, окружностей, слоёв, цветов, блоков и прочего. Кроме того, поддерживались версии DWG лишь вплоть до 2004, поскольку описания более новых версий формата в спецификации на тот момент не было.

Дальше начались серьёзные проблемы, поскольку Родриго и Фелипе начали заниматься реверс-инжинерингом. Это достаточно сложная работа; как я понимаю, далеко они не продвинулись. В результате оба они начали заниматься другими проектами, и времени на LibreDWG осталось совсем мало.

Попробуй оценить массив работы, необходимой для минимальной, но качественной поддержки формата, допустим, даже только 3D. Затем припомни, что пройдёт всего ничего, и Autodesk выпустит новые версии софта с изменённым форматом, так что изрядную часть работы придётся сделать заново. Сложи это вместе, и ты получишь представление о том, насколько фантастически огромную работу надо проделать, чтобы честно назвать результат совместимостью с DWG.

В сравнении с этим описание формата DXF было публично доступным и достаточным. К тому же, все программы, поддерживающие DWG, поддерживают и DXF. Поэтому я не колеблясь решил сконцентрироваться на DXF и не терять время на DWG.

Но всё упирается именно в лицензию. Если бы этой проблемы не было, даже в нынешнем скромном виде библиотека LibreDWG была бы полезна проекту FreeCAD. Возможно, она бы уже использовалась программой.

Остаётся Blender.

Что касается Blender, в программе нет никакого кода для чтения или записи файлов DWG, но авторы библиотеки Open Assets Library (Assimp для краткости) сейчас работают над поддержкой этого популярнейшего свободного пакета для 3D-моделирования. Поэтому мы поинтересовались мнением Александра Гесслера, одного из участников команды Assimp. Вот что он нам сказал:

Лично я крайне недоволен их выбором GPL, который препятствует использованию библиотеки в Assimp и многих других приложениях.

Мне не нравятся догматические идеологии, а навязывание свободы силой (как это делает GPL/GNU) не нравится особенно. Когда это касается пользовательских приложений, это ещё не страшно. Совсем другое дело, когда речь идёт о библиотеках, задача которых — быть максимально доступными.

В остальном, LibreDWG — отличный проект, а DWG я считаю важным форматом, поддержка которого в Assimp пришлась бы кстати.

Наконец, откликнулся Тон Роозендаал, председатель Blender Foundation, который ранее в частной переписке охарактеризовал DWG как «Святой Грааль форматов файлов для проекта Blender и СПО в целом»:

Blender также распространяется под GPLv2+, и менять лицензию на GPLv3 мы пока что не собираемся, поскольку не видим явных преимуществ. Проекту LibreDWG я могу посоветовать сделать лицензию более широко доступной (MIT, BSD или LGPL) — это было бы крайне позитивным выбором.

Таким образом разработчики ПО для конечных пользователей практически единодушно выступают за переход LibreDWG на более либеральную или даже пермиссивную лицензию.

Что говорит FSF

Мы попросили FSF прокомментировать ситуацию. На запрос, пусть и не сразу, откликнулся Бретт Смит, специалист по совместимости лицензий:

«Я беседовал со Скоттом Говардом [участник проекта LibreCAD — прим.ред.], и он сказал мне, что занимается переписыванием кода, лицензированного строго под GPLv2. Тем не менее, как я понял, они всё ещё заинтересованы в релицензировании LibreDWG.

Мы пока что обсуждаем с авторами LibreDWG политику релицензирования и готовы на изменения, которые удовлетворят требованиям LibreCAD. Тем не менее, в долгосрочной переспективе отказ от кода с лицензией строго GPLv2 был бы верным решением для проекта по целому ряду причин.»

Иными словами, Фонд СПО нехотя готов пойти на уступки или, как минимум, рассматривает такую возможность.

Разговор с Бреттом оставил у нас впечатление недосказанности. Специалист FSF не смог ответить на ряд уточняющих вопросов и, как оказалось, крайне мало контактировал с разработчиками непосредственно САПР. Это вызывает некоторые сомнения в том, сможет ли FSF принять решение, которое будет учитывать реальное положение дел.

Выводы

По итогам исследования можно сказать, что две ключевых проблемы проекта, неполнота спецификции на DWG и неудачное лицензирование LibreDWG, понемногу решаются.

Текущая версия (v5.2) спецификации на формат DWG содержит более полную информацию. Мы специально поинтересовались у разработчиков LibreDWG, насколько она соответствует их требованиям, но они пока не смогли полностью её изучить и от однозначного ответа воздержались. Это сохраняет вероятность того, что документация всё ещё неполна. Что касается второй проблемы, работа по её исправлению ведётся, но однозначных заявлений никто дать пока не в состоянии.

Таким образом будущее поддержки файлов DWG в свободных САПР пока что остаётся туманным и будет таковым как минимум до тех пор, пока FSF не примет окончательное решение касательно лицензирования LibreDWG.

Если библиотека сохранит лицензию GPLv3+, в части совместимости с многими существующими технологическими процессами свободные САПР останутся отсталыми. И если вы представляете себе объём работы по созданию новой библиотеки вроде LibreDWG, но с более либеральной лицензией, то понимаете, насколько мала вероятность успешного исхода подобного предприятия.

Неудачный выбор лицензии в мире СПО не является чем-то из ряда вон выходящим. Есть достаточно известные свободные проекты, которые сталкивались с аналогичными проблемами и были вынуждены отказаться от реализации полезного функционала из-за несовместимости лицензий GNU между собой.

К примеру, в нише DSP такой проблемной библиотекой является FFTW3. Из-за выбранной ею лицензии (также GPLv3) в поставку библиотеки GEGL, нового движка обработки графики для GIMP, не входят операции для работы в частотных диапазонах, написанные в 2008 году студентом, работавшим по программе GSoC.

С той же проблемой в своё время столкнулись разработчики Audacity, которые не смогли воспользоваться кодом программы Gnome Wave Cleaner, где FFTW3 используется для очистки аудиозаписей от шумов.

Возможность легального повторного использования исходного кода является одним из ключевых преимуществ СПО. Если это преимущество перестаёт работать, совершенно очевидно, что мы имеем дело с проблемой, укоренившейся на системном уровне. И решать её тоже нужно на системном уровне.

Тем временем, проведённое в декабре исследование, выявившее снижение популярности GPL в пользу пермиссивных лицензий, даёт дополнительную почву для размышлений.

Редакция linuxgraphics.ru будет пристально следить за развитием событий вокруг LibreDWG. Мы не предлагаем вам, как обычно, ждать новостей, но берёмся немедленно сообщить их.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*