LINUX.ORG.RU

Легален ли такой обход GPL?


0

1

Предположим есть некая программа под GPL, например, ядро Linux. Необходимо расширить функционал некоторой готовой подсистемы, например, добавить дополнительные вызовы функций при этом не раскрывая исходный код этих функций.

Функции выносятся в отдельный C файл, который после первой компиляции - дизассемблируется под целевую платформу. Дизасемблерный код слегка корректируется, чтобы он потом мог быть собран.

В итоге выкладывается под GPL именно этот ассемблерный код, а не C код.

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

Легален ли такой обход GPL?

P.S. столкнулся с таким способом изучая правки ядра от одной «жопошной» конторы.

★★★★

Легален. Хотя возможно в GPLv3 и добавили «защиту» от этого.

Sorcerer ★★★★★
()
Последнее исправление: Sorcerer (всего исправлений: 1)
1. Source Code.

The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

The Corresponding Source for a work in source code form is that same work.
geekless ★★
()

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

Ttt ☆☆☆☆☆
()

По духу лицензии - нелегален, однако доказать это невозможно.

То же самое с обфускацией, как в nv.

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

жирно. очевидно я имел в виду что жадины те кто обходят GPL

А еще те, кто продает хлеб из созревших на полях народной земли злаков.

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

Хм, а если авторы писали исходник на асме? А если прямо в машинных кодах?

Недавно была же новость про emacs, один в один такая ситуация, в поставке emacs был предоставлен только автосгенерированный код, а самого исходного кода из которого он генерировался не было. И это исправляли _потому что нарушало GPL_.

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

Недавно была же новость про emacs, один в один такая ситуация, в поставке emacs был предоставлен только автосгенерированный код, а самого исходного кода из которого он генерировался не было. И это исправляли _потому что нарушало GPL_.

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

staseg ★★★★★
()

ассемблерный код

изменять этот код под свои нужды, практически нереально

Вот и выросло поколение.

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

По духу лицензии - нелегален, однако доказать это невозможно.

следственный эксперимент докажет.

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

Ну так пусть докажет это. Тут, думаю, можно отличить. Скорее всего, комментариев нет, форматирования нет. Можно спросить у автора, что делает конкретная инструкция. Думаю, раз поднялся такой вопрос, то есть основания полагать, что в данном случае код написан не на ассемблере.

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

Молодой человек, тут речь идёт не о написанном вручную ассемблерном коде, а о сгенерированном из кода на языке высокого уровня. Это как бы две большие разницы. В любом случае такой код будет изменять сложнее, чем код на C, из которого он был сгенерирован. А GPL требует предоставить код, предпочтительный для изменений.

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

Ну так пусть докажет это.

А как же презумция невиновности? Хотя, наверное, сторона обвинения просто возьмет «эксперта», который докажет сгенерированность этого кода.

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

«Вот и выросло поколение.»

Я неплохо знаю ассемблер для x86, немного работал с ассемблером для ARM, но тут надо разбираться в MIPS, да еще и генерированным из С кода.

Суть в том, что одна из таких вот функций принимает на входе указатель на структуру, смещение до полей этой структуры захардкожено в ассемблерном коде.

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

Задача: в нескольких тысячах строк сгенерированного ассемблерного кода найти доступ ко всем элементам структуры и поменять смещение на верное.

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

Как правило, люди, прячущие разными способами изменения в ядре, и дрожащие над своими мелкими изменениями, боящиеся отдать их на публику, «иначе все украдут» не стоят внимания - это просто больные люди, они чего-то в жизни не догоняют. Обычно наоборот - трудно свое пропихнуть в ядро, чтобы оно таки работало в версии n+1 без лишних телодвижений.

Обход GPL на арме, кстати, будет скоро совершенно официальный - свой DT-блоб можно будет никому не показывать, и все. А исходники можно и отдать :)

Тут будут и волки целы и овцы сыты. Даже ядро можно будет обновлять.

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

Если это отдельный файл, то всё ок. Благо ничто не мешает ликовать асм с Си. Но если ты изменяешь уже существующий файл, то ты его должен изменять на Си, иначе же ты перепишешь его с нуля (дизассемблер? запрещено, нужно показывать самый первый исходник) и твой патч не примут (кому нужно переписывание целого модуля с Си на Асм?)

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

Недавно была же новость про emacs, один в один такая ситуация, в поставке emacs был предоставлен только автосгенерированный код, а самого исходного кода из которого он генерировался не было.

Насколько я понимаю, в данном случае поставка осуществляется узкому кругу лиц, в отличие от емакса

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

Задача: в нескольких тысячах строк сгенерированного ассемблерного кода найти доступ ко всем элементам структуры и поменять смещение на верное.

Решение: послать подальше эту контору или требовать сорсы (если существующие договоренности позволяют что-то требовать)

annulen ★★★★★
()

Нелегален. Обфускация кода запрещена GPL.

LongLiveUbuntu ★★★★★
()

обход GPL

легален

/0

Алсо, не все ограничивается судом, особенно в Рашке :)

Но в силу гибкости С можно, например, выработать стиль написания кода на нем такой, что многим будет лень разбираться. В качестве примера можете нагуглить исходники J и Kona (в которых такой стиль использован вовсе не для обфускации).

Другое дело, что у ядра есть собственный стиль и неплохо бы требовать, чтобы все модули ему соответствовали, но это мечты.

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

В итоге включения некоторых опций ядра

Слабо перенести элементы в структурах вниз?

vasily_pupkin ★★★★★
()

обход GPL

Расстрелял бы!

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