Я рассматриваю возможность создания приложения с закрытым исходным кодом, которое динамически связывается с библиотеками Qt. Целевые платформы будут Linux и Windows. Чтобы выполнить обязательства LGPL:
«Пользователь вашего приложения должен иметь возможность повторно связать ваше приложение с другой или модифицированной версией библиотеки Qt» (Qt faq).
Я изо всех сил пытаюсь понять, что это технически необходимо сделать это возможным. Особенно без публикации исходного кода.
При каких условиях пользователь сможет просто заменить файлы .so / .dll, поставляемые вместе с приложением, на свои собственные модифицированные версии?
Это вообще возможно? Потому что по тому же вопросу libstdc ++ faq состояния:
LGPL требует, чтобы пользователи могли заменить код LGPL на измененную версию; это тривиально, если рассматриваемая библиотека является общей библиотекой C. Но нет никакого способа заставить это работать с C ++, где большая часть библиотеки состоит из встроенных функций и шаблонов, которые расширены внутри кода, который использует библиотеку. Таким образом, чтобы позволить людям заменить код библиотеки, кто-то, использующий библиотеку, должен будет распространять свой собственный источник, что делает LGPL эквивалентным GPL.
Спасибо!
Редактировать: Второй вопрос проясняется LGPL версия 3, Раздел 3. Полезная ссылка: из собственный FAQ обсуждают эту проблему и их переписка с ФСФ об этом.
На практике люди обычно ссылаются на общую библиотеку Qt; поэтому возможна небольшая модернизация Qt, пока остается какой-то общий API. Опытный пользователь может в принципе адаптировать библиотеку Qt (начиная с исходного кода используемой вами версии) под свои нужды (например, исправить непослушную ошибку, в частности, не касаясь какого-либо заголовочного файла Qt). Конечно, предоставьте все детали, чтобы помочь ему (по крайней мере, укажите точно версию Qt, с которой вы ссылаетесь).
В принципе, как вы заметили, этого может быть недостаточно. Только суд и судья могли действительно решить, так спроси своего адвоката.
Конечно, я не юрист.
Кстати, вы рассматривали вопрос о том, чтобы попросить своего менеджера или клиента (или юридически ответственного лица) выпустить ваш код как бесплатно программное обеспечение и опубликовать его (например, под GPLv3 + на GitHub)? По моему предвзятому мнению, это было бы лучшим решением!