LINUX.ORG.RU

лицензионные ограничения, которые наклаывает PyQt, по сравнению с PySide

 , , , ,


0

3

добрый вечер!

введение: как мы знаем PyQt (в отличии от PySide) распространяется под лицензией GPL (например GPL3).. здесь будем условно считать что под другими лицензиями PyQt — НЕ распространяется :)

введение #2: как мы знаем GPL3 запрещает нам линковать GPL3-программы (и смешивать исходники) с НЕ-GPL3-программами. а LGPL3 — разрешает линковать LGPL3-программы с НЕ-LGPL3-программами.

вопрос: если я буду делать проприетарную программу на Python (то есть буду выдавать на руки *.pyc-файлы БЕЗ *.py-файлов, по своим угнетающим условиям) с использованием графического пользовательского интерфейса запрограммированного через PyQt ---- буду ли я злостным нарушителем? и самое главное какой пункт лицензии GPL3 в этом случае я буду нарушу, относительно использования PyQt?

дополнительно обстоятельство: во время выдачи программы на руки — внутри диретории с программой — будут лежать все необходимые для работы программы файлы — в том числе бинарные файлы от PyQt.

примечание: бинарные файлы PyQt — НЕ модифицированны мною, и ни одна из частей файлов PyQt не слинкована ни с одним из моих файлов. а внутри файлов — *.pyс вообще нет ни одной частички от файлов PyQt, это же не какой-нибудь там C/C++!

дополнительный дисскуссионный вопрос: если мы вдруг выясним в этой теме что я ничего не нарушу — то на кой вообще тогда было делать PySide с лицензией LGPL3 ? какие лицензионные свободы дала бы LGPL3 по сравнению GPL3 — в случае использования pyc-файлов которые всё равно не линкуются?

спасибо! :)

Ответ на: комментарий от anonymous

При чём тут Development?

эээээ... ну ведь линковка, PyQt, и прочее... — разве это не программирование? :)

[я к тому что — разве осмыслевание лицензионных вопросов — это не является одной из составных частей процесса разработки ПО?]

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 1)

Код написанный с использованием кода под GPL становится кодом под GPL. Почему? Да потому, что у тебя получается линковка некосвенным образом. Бинарные коды от другого проекта тебя не спасут, даже немодифицированные.

Выход из ситуации: выложить код под GPL; отказаться или лучше отречься от кода под GPL навсегда.

Смысл есть всегда, где есть человек.

gh0stwizard ★★★★★
()
Ответ на: комментарий от fluorite

.pyc тебя не спасет, проприетарщик! Пиши на C++.

ды мне пофигу — будет кто декомпилировать или нет. я буду передавать проприетарщину — а кто как будет с ней гемороиться — уже мне не важно. смысл в теме вот именно такой.

https://github.com/gstarnberger/uncompyle

спорю что оно не работает...

[но даже если кто-то найдёт работающий декомпилятор — то это не важно для данной темы :)]

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от gh0stwizard

Да потому, что у тебя получается линковка некосвенным образом

вот если тут поподробнее рассмотреть...

...то во время чего будет происходить нарушение:

а) во время передачи (распространения) программы?

б) во время её использоваия [в этом случае нарушителем будет тот кто использует, а не тот кто распространяет?].

с) во время разработки [этот пункт я просто так привёл — так как очевидно что во время разработки я ничего не нарушаю].

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от fluorite

я искренне прошу прощения!

я моей стороны было как-то не вежлево говорить слово «спорим», но при этом не выдать материалов спора. :)

вот например программа сделанная на Python -- http://ompldr.org/vaTcyaA/fetch-yandex-news-gui--binary-2013-03-02-02-04.7z

её можно попробовать подекомпилировать (но правда вот именно в этой программе не используется PyQt)...

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

...то во время чего будет происходить нарушение:
а) во время передачи (распространения) программы?

Да.

б) во время её использоваия [в этом случае нарушителем будет тот кто использует, а не тот кто распространяет?].

Нет. Дома у себя можно даже ту самую выращивать.

с) во время разработки [этот пункт я просто так привёл — так как очевидно что во время разработки я ничего не нарушаю].

Нет. Опять же для себя Столлман разрешает делать все что угодно.


Вывод: нарушение определяется третьим лицом, а не исполнителем. У тебя могут на законных основаниях попросить код раз, во-вторых, по-хорошему сменить лицензию. У тебя есть еще шанс разрулить вопрос с автором PyQT, если он даст тебе письменное согласие - всем пофиг.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

с этими пунктами (а,б,с) — ясно!

спасибо!

* * * * *

а можно ещё спросить — если рассмотреть тот же пнукт [а] (распространение)..

нарушение всё также будет — если я вообще не буду распространять PyQt-файлы?

тоесть буду распространять проприетарщину, которая НЕ будет способна запускаться, в случае если на компьютере пользователя нехватает PyQt-файлов (или/и нет ещё каких-либо файлов)?

в вопросе "будет ли нарушение, в случае если я не буду распространять файлы от PyQt" — меня смущает факт того что как я могу нарушать чей-то договор, если я его не ни с кем не заключаю.

в частности — я не залючаю ни каких договоров с производителями PyQt, если не распространяю PyQt..

У тебя есть еще шанс разрулить вопрос с автором PyQT, если он даст тебе письменное согласие - всем пофиг.

я думаю в данной теме форума для ясности смысла — лучше уж мы будем предерживаться условности что PyQt распространяется якобы только под GPL (GPL3) :-)

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

нарушение всё также будет — если я вообще не буду распространять PyQt-файлы?

Да. По сути «import PyQt» (или как там правильно) уже является использованием чужого кода. С учетом того, что скрипты на питоне/перле и др. скриптовых языках зависят только от лицензий тех модулей чьи используют, то твой код также попадает под это правило.

тоесть буду распространять проприетарщину, которая НЕ будет способна запускаться, в случае если на компьютере пользователя нехватает PyQt-файлов (или/и нет ещё каких-либо файлов)?

Да. Более того, некоторые лицензии ограничивают распространение бинарных сборок. В случае GPL - это можно.

как я могу нарушать чей-то договор, если я его не ни с кем не заключаю.

Использование кода под GPL (запуск, кодинг и т.п.) это уже согласие с договором.

Рекомендую почитывать http://www.gnu.org/licenses/gpl-faq.html когда есть вопросы.

P.S. Все же в перле все проще, Artistic License рулит :)

gh0stwizard ★★★★★
()
Ответ на: комментарий от user_id_68054

как я могу нарушать чей-то договор, если я его не ни с кем не заключаю.

я не залючаю ни каких договоров с производителями PyQt, если не распространяю PyQt..

Я думаю, что разработчики GPL предусмотрели подобную хитрожопость - в лицензии есть термин «work based on the Program» и ограничения, которым должна подчиняться эта work. Твоя программа - как раз такая work.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Я думаю, что разработчики GPL предусмотрели подобную хитрожопость - в лицензии есть термин «work based on the Program» и ограничения, которым должна подчиняться эта work. Твоя программа - как раз такая work.

да. в лицензии GPL3 — есть такая фразу внутри раздела «0. Definitions.»...

но КАК — каким образом я становлюсь нарушителем лицензии GPL3 в случае если я не стану иметь дела с GPL3-кодом?

может быть чтобы решить этот вопрос — нужно отвлечья от GPL и перекинуться на подобные практики? есть такие какиенибудь? я к сожелению не силён в юриспреденции..

ведь GPL это всеголишь соглашение, а не конституция... если я не «подписываю» (условно говоря) GPL — то значит оно и не распространяется на меня?

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от gh0stwizard

По сути «import PyQt» (или как там правильно) уже является использованием чужого кода.

в Python в отличии от C/C++ ---- внутри Python-программы можно написать:

import PyQt

и затем успешно скомпилировать её! :)

при этом самой билиотеки PyQt на компьютере может даже и не существовать. всё равно компиляция пройдёт успешно. но просто программа не запуститься :)

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

каким образом я становлюсь нарушителем лицензии GPL3 в случае если я не стану иметь дела с GPL3-кодом?

«Не станешь иметь дела» - это как? Не будешь использовать PyQt4?

ведь GPL это всеголишь соглашение, а не конституция... если я не «подписываю» (условно говоря) GPL — то значит оно и не распространяется на меня?

Уголовный Кодекс (да и Гражданский) ты тоже не подписываешь.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Не будешь использовать PyQt4?

я — нет не буду. а что в этом странного? :)

мои пользователи будут иметь дело с PyQt, а я даже руками её трогать не буду.

всё равно буду нарушителем?

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Уголовный Кодекс (да и Гражданский) ты тоже не подписываешь.

вот вот! вот и я про тоже самое!

уголовный кодекс я не подписываю — но он всё равно распространяется на меня!

даже если я не прочитаю уголовный кодекс (я его кстате и не читал :)) — то он всё равно распространяется на меня...

..а разве GPL-лицензия распространяется на меня в случае если я не имею дела с GPL-программами?

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Кого ты пытаешься обмануть?

qt_api = None

try:
    import PySide as qt_api # это только примерный код импорта :)
except IpmortError as e:
    try:
        import PyQt as qt_api # это только примерный код импорта :)
    except:
        raise e # сообщение об ошибке PySide

вот таким образом у меня на компьютере не будет PyQt ... но оно будет у моих пользователей

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от user_id_68054

Твоя логика уровня «Лицензия X недействительна, значит я могу делать всё, что захочу», хотя на самом деле ты можешь ничего.

anonymous
()
Ответ на: комментарий от anonymous

Твоя логика уровня «Лицензия X недействительна, значит я могу делать всё, что захочу», ...

ну да... в этом случае — я могу делать всё что за хочу, кроме тех действий которые в явном виде запрещены законом...

разве не так?

если лицензия GPL3 на меня не распространяется — разве это не обозначает что я могу дома расхаживать без трусов и напевать «никому не отдам исходники! ни кому не отдам исходники!!»? :)

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Попробуй сказать то, что ты хочешь сказать, на русском языке, а не на Питоне.

программа во время своего старта — пытается подключить библиотеку PySide (которая возможно установленны в операционной системе)

если подключить библиотеку PySide не получается — то программа пытается подключить библиотеку PyQt (которая возможно установленна в операционной системе)

в случае опять ошибки — выводится то сообщение-об-ошибке, которое было получае после неудачной попытки подключения PySide.

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

Спасибо, я знаю Питон и понимаю, что делает программа - это не нужно объяснять. Можешь начать с того, причем здесь вообще PySide.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Можешь начать с того, причем здесь вообще PySide.

она играет чисто декоративную роль.. для того чтобы доказать что я не использую PyQt даже во время разработки программы.. то есть не использую на своём компьютере PyQt вообще :-)

(на самом деле я даже не начал ничего разрабатывать, как вы уже поняли поналичию ошибок в Python-коде... но преположим что я начал :))

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

она играет чисто декоративную роль.. для того чтобы доказать что я не использую PyQt даже во время разработки программы..

Ну то есть ты пытаешься кого-то обмануть и спрашиваешь, не поймают ли тебя. Этого я не знаю, но надеюсь, что таки поймают.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

нет. на самом деле я хочу чтобы Вы написали нечто вроде:

"ну в таком случае — да, ты не нарушаешь GPL3 лицензию..."

а потом в случае судебных разбирательствах — я сошлюсь на некого пользователя Вас :) ..круто я придумал? :)

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

Лицензии не могут запрещать тебе, вообще в принципе, ходить дома как ты хочешь. Аналогия некорректна.

anonymous
()
Ответ на: комментарий от anonymous

Лицензии не могут запрещать тебе, вообще в принципе, ходить дома как ты хочешь. Аналогия некорректна.

мне кажется могут.

например так:

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

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от user_id_68054

в случае использования этой программы Вы обязуетесь не ходить дома голышём

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

anonymous
()

По лицензии GPL любой компонент, который вы используете в вашем продукте, обязывает вас выпустить её под GPL. Только под GPL. И никак иначе. Вы можете включить в ваш продукт компоненты, написанные под совместимыми с GPL лицензиями(MIT, Apache), но результирующая программа автоматически наследует вирусную лицензию GPL. Умные люди выпускают свой код под двойной лицензией(GPL и EULA(или любая пермиссивная лицензия)), или под пермиссивными лицензиями, вроде MIT? Другое дело лицензия LGPL. Если код опубликованный под LGPL вы включите в свой продукт в виде динамической библиотеки(статическая линковка с кодом под несовместимыми с GPL компонентами не допустима), вы можете компоновать его с компонентами под любой лицензией(но если вы модифицируете код, опубликованный под LGPL - вы должны будете опубликовать все изменения под этой же лицензией). Так-что будьте осторожны в выборе лицензии. И читайте весь текст лицензии, а не только начало и конец.

lucentcode ★★★★★
()
Ответ на: комментарий от user_id_68054

Это никому ещё не помогло. Незнание закона не освобождает от ответственности.

lucentcode ★★★★★
()
Ответ на: комментарий от user_id_68054

Распаковываешь свой .exe как обычный zip, и видишь кучку .pyc-файлов. Выясняешь, что питон 3.3, ссылку я давал для 2.7. Но специально для тебя: __main__.py

import re
from lib_fetch_yandex_news_2013_01_24.gui.main_gui import main
if __name__ == '__main__':
    main()

main_gui.py
import tkinter
from . import main_window
def main():
    main_window.MainWindow()
    tkinter.mainloop()

main_gui.py
import threading
import tkinter
from tkinter import ttk, scrolledtext, filedialog
from . import tk_mt, tk_async
from .. import read_list, fetch_news
DEFAULT_MAIN_WINDOW_WIDTH = 700
DEFAULT_MAIN_WINDOW_HEIGHT = 500
class MainWindow:
    def __init__(self):
        self._root=tkinter.Tk()
        self._tk_mt=tk_mt.TkMt(self._root)
        self._root.protocol('WM_DELETE_WINDOW', self._close_cmd)        
        self._root.title(string='fetch-yandex-news-gui')
        self._root.geometry('{}x{}'.format(    DEFAULT_MAIN_WINDOW_WIDTH, DEFAULT_MAIN_WINDOW_HEIGHT))        
        self._menubar=tkinter.Menu(master=self._root)
        self._program_menu=tkinter.Menu(master=self._menubar)
etc.

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

ну в принцепе — похвально!

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

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 1)

tailgunner, так как я смотрю что ты самый разбирающийся в теме, я тут придумал кой-какую аналогию и хотел бы узнать что ты о ней думашь! :-)

предположим существует бригада, которая устанавливает Окна (Окна в квартире, а не компьютерные окна :)).. будем её называть — «Оконная Бригада»!

в договоре этой «Оконной Бригады» написанно (помимо других пунктов) --

... ... ...
Вы (клиент) соглашаетесь на установку у Вас в квартире Окон и на эти условия.

... ... ...

в случае если в будущем кто-то будет устанавливать на эти окна Жалюзи,
то тот кто будет устанавливать Жалюзи -- должен ОБЯЗАТЕЛЬНО после этой работы -- отчитаться перед нами.

но лично Вы сами можете не отчитываться перед нами, даже если будете устанавливать Жалюзи собственноручно.
... ... ...

некий Вася — договорился с «Оконной Бригадой» и ему установили окна (Вася подписал договор, выше упомянутый).

затем Вася нанимает «Бригаду Жалюзе-устанавливателей».

«Бригада Жалюзестрителей» установила Жалюзи, но ни кто не отчитался перед «Оконной Бригадой» о том что были установленны Жалюзи.

«Бригада Жалюзе-устанавливателей» не заключала ни каких договоров с «Оконной Бригадой» — и разве она является нарушителем?

очевидно же предположить что виноват только лишь Вася (виноват перед «Оконной Бригадой»), так как нанял такую бригаду, которая не собиралась отчитываться...? а «Бригада Жалюзе-устанавливателей» — ребята молодцы! :)

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от fluorite

ни как не могу понять — почему между ``.format(`` и ``DEFAULT_MAIN_WINDOW_WIDTH,`` — находятся эти 4 пробела.. есть ли какие-нибудь мысли на эту тему? %)

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

Я разбираюсь в вопросе не больше, чем средний ЛОР-эксперт, но могу объяснить тебе ситуацию без строительных аналогий: нарушение GPL, если оно есть, делается тем, кто распространяет программу (т.е. свалить ответственность на пользователя тебе не удастся); в любом случае ты имеешь полное право распространять PyQt4 со своей программой.

О том, нарушаешь ли ты GPL (ахтунг! это только мое понимание вопроса):

1) если ты используешь при разработке своей программы PyQt4 и твоя программа работает только с ней, то твоя программа становится «work, based on the Program» и ты обязан предоставлять ее исходники.

2) если твоя программа одинаково хорошо работает и с PyQt4, и с PySide, то она «can be reasonably considered independent and separate work» , и ты не обязан предоставлять исходники

Правда, я затрудняюсь ответить, что будет, если твоя программа отлично работает с PyQt4 и хреново - с PySide; вероятно, твой комп изымут для проверки, что же ты реально использовал :D

Насчет того, что ты ничего не подписывал:

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License

Вкратце: если ты распространяешь «work, based on the Program», ты тем самым принял лицензию; правда, законы страны пребывания могут иметь другое мнение (а могут и то же самое).

tailgunner ★★★★★
()
Ответ на: комментарий от user_id_68054

Где он умер, если даже в креаторе появилась ради него примитивная поддержка питона.

Gorthauer ★★★★★
()
Ответ на: комментарий от tailgunner

ды эт так.. чисто моё очень субъективное мнение. :)

мнение, основанное всего лишь на том что — всякие новые программы которые выходят — почему-то используют PyQt (вот недавние новости, опять же! :)).

а что касается дистрибутивов операционных систем — то зачастую даже нет PySide в репозиториях [в Убунте например оно есть, а вот в Федоре нет, при чём в Федоре нет даже в планах на будущие релизы Федоры].

по сути ведь — PySide это очень хорошее начинание! но как же так вышло что PySide осталься уделом маргиналов?

я так думаю что причины две:

1. PyQt УЖЕ популярен. и держится за счёт своей популярности.

2. если разрабатывается GPL-софт — то PySide врятли имеет какое-то приемущество перед PyQt.. [хотя на самом деле PySide ИМЕЕТ приемущество в том что можно было бы выпускать софт по двойной лицензии, а вот PyQt как мы тут выяснили в этой теме не пзволит выпускать по двойной лицензии! :)]

но опять же повторюсь — всё это очень субъективно (на мой взгляд). и если PySide как-то оживёт — то думаю будет здорово :)

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

зачастую даже нет PySide в репозиториях

В Wheezy есть, остальное не нужно %)

а вот PyQt как мы тут выяснили в этой теме не пзволит выпускать по двойной лицензии! :)]

М? Ничего такого мы даже не пытались выяснить. Более того - у PyQt4 есть лицензия для проприетарщиков. Платная, вероятно.

если PySide как-то оживёт — то думаю будет здорово :)

Мне кажется, он еще не умирал.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

М? Ничего такого мы даже не пытались выяснить.

ну я же не стал поднимать вопрос на тему того, разрешается ли выпускать GPL-софт использующий GPL-ную PyQt :) ..

по-моему это очевидно что разрешается :) ...

..таким образом, я сразу поднял тему проприетарной проблемы (то есть вторая лицензия, из набора из двух лицензий :))

может я просто его немного не так задал? :)

надо было задать --- «как мне сделать программу, распространяемую под двойной лицензией, с использованием PyQt?»? :-)

Более того - у PyQt4 есть лицензия для проприетарщиков. Платная, вероятно.

это пахнет огромной возней с бюракратией :-) ..

В Wheezy есть

верно! пакет «python3-pyside» — живёт там в здравии :)

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

надо было задать --- «как мне сделать программу, распространяемую под двойной лицензией, с использованием PyQt?»? :-)

«Как мне на PyQt4 сделать программу, которую можно распространять как под GPL, так и под closed-source лицензией».

пакет «python3-pyside» — живёт там в здравии :)

http://packages.debian.org/wheezy/python-pyside.qtcore - python 2.[67]

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

зря я так записсимистичил по поводу отсутствия PySide в части дистрибутивов...

оказывается набор библиотек «python3-pyside» — довольно не сложно собрать на любом дистрибутиве, используя https://github.com/PySide/pyside-setup ...

правда как-то долго всё это дело компилируется...

а вот для Microsoft Windows даже есть готовые 64-битные сборки (это чудесно!)

* * * * *

но — почему такая низкая популярность PySide ?.. почему с использованием его — ничего не создают? %) %)

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: удаленный комментарий

Ну так и свали на винфак - чего ты здесь забыл?

и что — там разве лучше (чем здесь) разбираются в вопросах связанных с PyQt и PySide ?

если да, по почему бы и нет... какой URL? :)

но вообще-то я сомниваюсь

user_id_68054 ★★★★★
() автор топика
Ответ на: удаленный комментарий

когда я гуглю слово «винфак» — мне Гугл в выдаче выдаёт первым делом страницы linux.org.ru ... забавно :)

user_id_68054 ★★★★★
() автор топика

вопрос: если я буду делать проприетарную программу на Python

Со всех уголков зала раздается громкий смех

то есть буду выдавать на руки *.pyc-файлы БЕЗ *.py-файлов, по своим угнетающим условиям

Смех перерастает в истерику

Siado ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.