LINUX.ORG.RU

GPL на реализацию общеизвестных алгоритмов и прочего общественного достояния

 , , , ,


1

4

Zmicier предложил привести пример заимствования кода одним открытым проектом из другого открытого проекта, причём в одном из них код GPLнут. Вот сейчас наткнулся на эпический пример надевания GPL на crc32, crc32c (VirtualBox) <-> crc32c.c (NetBSD), crc64, реализация которых, мне кажется, достойна ни то что BSD, а является уже общественным достоянием (public domain). Там у виртуалбокса и дальше идёт подобный код в common: https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Runtime/common/ Вот нужно было называть не public domain, а common code in public domain. Тогда было бы ещё очевидней.

Хотя бы в crc32.c Оракл признаётся, что код основан на:

 * This code is based on:
 *
 *  CRC32 code derived from work by Gary S. Brown.
 *
 *  COPYRIGHT (C) 1986 Gary S. Brown.  You may use this program, or
 *  code or tables extracted from it, as desired without restriction.
Но зачем на оригинальное «без ограничений» было накладывать лицензию, отличающуюся от public domain / unlicense?

Ещё пример: вы ищете в вашем коде расширение файла, но ваш код не GPL? Тогда Оракл придёт к вам:

/* $Id$ */
/** @file
 * IPRT - RTPathExt
 */

/*
 * Copyright (C) 2006-2016 Oracle Corporation
 *
 * This file is part of VirtualBox Open Source Edition (OSE), as
 * available from http://www.virtualbox.org. This file is free software;
 * you can redistribute it and/or modify it under the terms of the GNU
 * General Public License (GPL) as published by the Free Software
 * Foundation, in version 2 as it comes in the "COPYING" file of the
 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 *
 * The contents of this file may alternatively be used under the terms
 * of the Common Development and Distribution License Version 1.0
 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
 * VirtualBox OSE distribution, in which case the provisions of the
 * CDDL are applicable instead of those of the GPL.
 *
 * You may elect to license modified versions of this file under the
 * terms and conditions of either the GPL or the CDDL or both.
 */


/*********************************************************************************************************************************
*   Header Files                                                                                                                 *
*********************************************************************************************************************************/
#include "internal/iprt.h"
#include <iprt/path.h>


RTDECL(char *) RTPathSuffix(const char *pszPath)
{
    const char *psz = pszPath;
    const char *pszExt = NULL;

    for (;; psz++)
    {
        switch (*psz)
        {
            /* handle separators. */
#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2)
            case ':':
                pszExt = NULL;
                break;

            case '\\':
#endif
            case '/':
                pszExt = NULL;
                break;
            case '.':
                pszExt = psz;
                break;

            /* the end */
            case '\0':
                if (pszExt && pszExt != pszPath && pszExt[1])
                    return (char *)(void *)pszExt;
                return NULL;
        }
    }

    /* not reached */
}
Абсурдно, нет? Там есть и однострочники (но с длинной GPL, по крайней мере по сравнению с длиной «кода»).

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

Перемещено tailgunner из development

★★★★★

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

RazrFalcon ★★★★★ ()

Да они просто скриптом навесили на все исходники GPL. По факту да, crc можешь брать у них и использовать под BSD. А этот мелкий файл вряд ли можно защитить законом.

unC0Rr ★★★★★ ()

ЯННП.

Zmicier предложил привести пример заимствования кода одним открытым проектом из другого открытого проекта, причём в одном из них код GPLнут.

Нет, я не предлагал такого! Подобных примеров — вагон и маленькая тележка, чего их приводить?

Для тех, кто не пойдет по ссылке — товарищ gag утверждал, что «небольшая часть кода подпадает под fair use». На что я зело удивился — мне казалось, что в Штатах нет ситуаций, когда закон разрешает заимствовать программы для использования по прямому назначению без согласия хозяина.

Вот сейчас наткнулся на эпический пример надевания GPL на crc32, crc32c (VirtualBox) <-> crc32c.c (NetBSD)

«Эпический»? Что вас здесь так потрясло?

я предполагаю, что они подпадают под fair use

Да какой еще, к черту, fair use при заимствовании программ? Откуда вы это взяли?

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

Оракул вообще говнюки, все к чему притрагиваются, превращают в говно.

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

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

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

Оригинальный вопрос:

Я спрашивал не просто «примеры заимствования кода» (которых, разумеется, тьма), но примеры, когда это действие будет «fair use’ом».

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

Так на каком основании NetBSD повесило BSD лицензию на GPL-нутый код? С официальной точки зрения я вижу только fair use. Или код BSD, а на него повесили GPL, вот поди теперь разберись, кто был первый.

«Эпический»? Что вас здесь так потрясло?

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

Да какой еще ... fair use при заимствовании программ? Откуда вы это взяли?

Я про заимствование программ никогда не говорил, и, наверное, не заметил, где вы имели ввиду заимствование не кода, а целых программ.

gag ★★★★★ ()

Потому что ты бздун, а бздуны должны страдать.

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

Были бы бабосики и закон на твоей стороне, Java (правда не помню Oracle или Sun ещё) кажется за 1 строчку кода судились с гуглом.

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

Так на каком основании NetBSD повесило BSD лицензию на GPL-нутый код?

Пардон, я вероятно, что-то упустил. Где это?

Или код BSD, а на него повесили GPL, вот поди теперь разберись, кто был первый.

Ну если вы хотите продемонстрировать пример якобы имевшего места «fair use» применительно к заимствованиях в программах, то надо таки разобраться.

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

И что здесь не так? Или даже — что же по-вашему надо было сделать?

Я про заимствование программ никогда не говорил, и, наверное, не заметил, где вы имели ввиду заимствование не кода, а целых программ.

Вы говорили именно что о заимствовании программ — программного кода. Что такое «целая программа», что вы ее отделяете в авторском отношении от ее текстового представления?

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

Почему же псевдо? А если они впоследствии добавят ещё 10 уникальных строк? Можно хоть пустой файл выпускать под любой лицензией, если тебе хочется/удобно, это не поведёт за собой никаких правовых последствий.

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

GPL. По факту да, crc можешь брать у них и использовать под BSD.

Не правильнее ли в этом случаеиспользовать оригинал кода под лицензией BSD/public domain/unlicense?

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

Не правильнее ли в этом случае использовать оригинал кода под лицензией BSD/public domain/unlicense?

Я не вижу там ни лицензии BSD, ни указания на то, что программа в общественном достоянии, ни «Безлицензии». Они были в оригинале?

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

Да, добавление цитаты было не лишним — без нее я, разумеется, вас не вполне верно понял. Что не отменяет того, что я верно сказал, что там ничего из этого не указано.

P. S. А, я знаю на что мы попались! Говоря «использовать под BSD», товарищ unC0Rr и имеет в виду BSD! Разумеется, под ней можно использовать любую программу — и свободную и несвободную.

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

GPL. По факту да, crc можешь брать у них и использовать под BSD.

Не правильнее ли в этом случаеиспользовать оригинал кода под лицензией BSD/public domain/unlicense?

Не просто правильнее, а единственно правильный вариант. То что gpl-щики позволяют вынимать BSD-шные части это чисто их добрая воля отличающая их от проприетарщиков. Но вобще нет такой обязаности.

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

Если они брали код под BSD, то запись об этом должна остаться в файле, нельзя же просто так брать и менять лицензию у чужого кода. Если никаких изменений в файле нет, то можно смело его брать прямо из GPL-ного проекта.

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

Хмм, честно говоря, теперь сам не знаю. Видимо, померещилось из второго предложения поста.

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

Или код BSD, а на него повесили GPL, вот поди теперь разберись, кто был первый.

Ну если вы хотите продемонстрировать пример якобы имевшего места «fair use» применительно к заимствованиях в программах, то надо таки разобраться.

Ага.

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

И что здесь не так? Или даже — что же по-вашему надо было сделать?

Когда лицензия не имеет смысла / не действительна по закону, это сбивает с толку. Ведь куда проще: смотришь на лицензию и знаешь, это серьёзно. Вместо смотришь на лицензию и понимаешь, что предстоит каждый раз разбирательство, а законно или нет. Этот как подписал контракт. А в нём могли быть пункты, противоречащие действующему законодательству. И вот не смотря на то что подписал, всё равно эти пункты соблюдать не обязан.

А что делать? Если не уверен, ставить public domain / аналоги, а не лепить GPL / ... куда не следует.

Я про заимствование программ никогда не говорил, и, наверное, не заметил, где вы имели ввиду заимствование не кода, а целых программ.

Вы говорили именно что о заимствовании программ — программного кода. Что такое «целая программа», что вы ее отделяете в авторском отношении от ее текстового представления?

Программ? Ностальгия: давно не пользовался термином подпрограмма (функции, процедуры). Но даже этот термин намекает, что программа - это совокупность всего исходного текста. Я же всё время оперирую исключительно небольшими отрывками из этого текста. Т.е. не отделяю программу как код от текста.

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

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

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

Лицензию надо по факту ставить, менять. А не так, про запас. Если ставить лицензию, которая не действительна, то потом другие могут просто не заметить, что после очередного изменения кода она вот теперь уже точно стала действительна. И злоупотребление установкой сначала недействительной лицензии потом может стать аргументом в суде в пользу тех вот пользователей, которых умышленно вводили в заблуждение.

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

не заметить

Как это так?! Ты видишь файл под двумя лицензиями, из которых только одна тебе подходит. Ты обязан точно выяснить, можешь ли ты его использовать под нужной тебе лицензией и сможешь ли использовать его в дальнейшем, если там будут изменения и ты собираешься обновляться из этого источника.

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