Ви можете використовувати програму GPLed зі своєї власної програми без вашої програми, на яку впливає GPL, але ви не можете пов’язати код GPLed зі своєю власною програмою, без вашої програми підпорядковується умовам GPL.
У прикладі, наведеному у запитанні, в якому ви написали обгортку GUI навколо існуючої програми командного рядка, ваш графічний інтерфейс не пов'язаний умовами GPL за умови, що це окрема програма, яка запускає програму GPLed у окремий процес і спілкується з ним тільки через існуючий інтерфейс (и) - наприклад, через командний рядок та / або через stdin / stdout.
Деякі відповідні біти FAQ GPL :
Де знаходиться лінія між двома окремими програмами та однією програмою з двома частинами? Це юридичне питання, яке в кінцевому підсумку вирішить судді. Ми вважаємо, що належний критерій залежить як від механізму комунікації (exec, pipe, rpc, виклики функцій у спільному адресному просторі тощо), так і семантики комунікації (які види інформації взаємозамінні).
Якщо модулі включені в один виконуваний файл, вони, безумовно, поєднуються в одній програмі. Якщо модулі розроблені так, щоб вони працювали між собою в спільному адресному просторі, це майже напевно означає їх об'єднання в одну програму.
Навпаки, труби, розетки та аргументи командного рядка - це механізми зв'язку, які зазвичай використовуються між двома окремими програмами. Отже, коли вони використовуються для зв'язку, модулі зазвичай є окремими програмами. Але якщо семантика комунікації є достатньо інтимною, обмінюючись складними внутрішніми структурами даних, це теж може бути основою для розгляду двох частин, об'єднаних у більшу програму.
Чи можу я випустити невільну програму, розроблену для завантаження плагіна, охопленого GPL?
Це залежить від того, як програма викликає свої плагіни. Наприклад, якщо програма використовує лише прості форк та exec для виклику та спілкування із плагінами, то плагіни - це окремі програми, тому ліцензія плагіна не пред'являє жодних вимог щодо основної програми.
Якщо програма динамічно пов'язує плагіни і вони здійснюють функціональні дзвінки один до одного та обмінюються структурами даних, ми вважаємо, що вони утворюють єдину програму, яка повинна розглядатися як розширення як основної програми, так і плагінів. Для використання плагінів, охоплених GPL, основна програма повинна бути випущена відповідно до GPL або ліцензії на безкоштовне програмне забезпечення, сумісна з GPL, і дотримуватися умов GPL, коли основна програма розповсюджується для використання з ними плагіни.
Якщо програма динамічно пов'язує плагіни, але зв'язок між ними обмежується викликом "основної" функції плагіна з деякими параметрами та очікування повернення, це є прикордонним випадком.
Зауважте, що GPL повністю застосовується до базової програми командного рядка в будь-якому випадку - якщо ви поширюєте її (на відміну від того, щоб користувачі отримували її з іншого джерела), ви несете відповідальність за надання копії GPL користувачам, виготовлення її зрозуміло їм, що програма командного рядка знаходиться під GPL (навіть якщо GUI-обгортка відсутня), і надає вихідний код програми командного рядка для них на запит. З питань FAQ GPL знову:
Якби люди розповсюджували програмне забезпечення, охоплене GPL, називаючи його "частиною" системи, яку користувачі знають, частково є власницею, користувачі можуть бути невідомими щодо своїх прав щодо програмного забезпечення, охопленого GPL. Але якщо вони знають, що те, що вони отримали, - це безкоштовна програма плюс інша програма, поруч, їх права будуть зрозумілі.
Стандартне відмови від відповідальності: я не юрист, і навіть якби я був юристом, я не ваш юрист. Якщо вам потрібна остаточна відповідь, проконсультуйтеся з відповідним юристом, який має ліцензію на практику у вашій юрисдикції.