Jshint: Пожалуйста, измените лицензию jshint.js, удалите плохое или злое

Созданный на 14 авг. 2013  ·  84Комментарии  ·  Источник: jshint/jshint

Привет,
не могли бы вы изменить лицензию jshint.js на настоящую лицензию MIT?

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

Спасибо

Оливье

P2 Proposal

Самый полезный комментарий

@lying-Sheep Я прочитал ветку. Извините за спам.

Все 84 Комментарий

Я не знаю, может ли это когда-нибудь случиться, поскольку лицензия "плохая или злая" - это исходная лицензия на программное обеспечение для JSLint.

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

Возьмем в качестве примера эту очень печальную ветку репортера ошибок debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=673727.

Это невозможно без удаления всего кода Крокфорда из JSHINT. Хотя это определенно может случиться.

Мне нужен кто-то, кто разбирается в праве. (Я не)

Я почти уверен, что @goatslacker прав. Вы можете попросить Крокфорда сменить лицензию :)

@goatslacker, где я могу найти ссылку на весь код, написанный Crockford в этом репозитории?

@hellais, вы можете запустить сравнение с первой фиксацией в jshint (которая должна была быть там, где начался форк), с текущим HEAD

Git говорит мне следующее:

web/jshint - [master] » git log --author="Douglas Crockford" --oneline --shortstat
40e3f73 It
 1 file changed, 1 insertion(+), 1 deletion(-)
7c327bf Tolerate stupid blockless blocks.
 1 file changed, 21 insertions(+), 13 deletions(-)
8d1c4eb clarification
40e3f73 It
 1 file changed, 1 insertion(+), 1 deletion(-)
7c327bf Tolerate stupid blockless blocks.
 1 file changed, 21 insertions(+), 13 deletions(-)
8d1c4eb clarification
 1 file changed, 3 insertions(+), 3 deletions(-)
5675d2c http://tech.groups.yahoo.com/group/jslint_com/message/1730
 5 files changed, 2752 insertions(+), 2847 deletions(-)
73c2fe3 indent
 1 file changed, 4 insertions(+), 3 deletions(-)
d41c211 http://tech.groups.yahoo.com/group/jslint_com/
 1 file changed, 2 insertions(+)
d7896b2 step_in step_out
 1 file changed, 18 insertions(+), 5 deletions(-)
85c95ac for var
 1 file changed, 4 insertions(+), 5 deletions(-)
caa8885 use strict
 2 files changed, 5 insertions(+), 4 deletions(-)
1da55dd http://www.yuiblog.com/blog/2010/12/14/strict-mode-is-coming-to-town/
 2 files changed, 7 insertions(+), 8 deletions(-)
b6d8b25 use strict
 4 files changed, 25 insertions(+), 25 deletions(-)
dc4a013 JSON escape v
 1 file changed, 5 insertions(+), 2 deletions(-)
80a2252 JSON escape single quote
 1 file changed, 5 insertions(+), 1 deletion(-)
bdd3576 k
 4 files changed, 8 insertions(+), 6 deletions(-)
6735394 Cleanup.
 2 files changed, 159 insertions(+), 167 deletions(-)
00d8d1f option.predef
 1 file changed, 2 insertions(+), 2 deletions(-)
6af839a option.predef
 2 files changed, 91 insertions(+), 66 deletions(-)
c933206 Warn on new Array(NUMBER)
 1 file changed, 2 insertions(+), 17 deletions(-)
f73d206 Add fullinit_ui.js, an ADsafe widget
 3 files changed, 159 insertions(+), 5 deletions(-)
523956b Removing rhino.js and wsh.js. Other projects are providing better alternatives.
 4 files changed, 4 insertions(+), 67 deletions(-)
d98f753 dangerous comments
 1 file changed, 1 insertion(+), 1 deletion(-)
35ec4a5 groove
 5 files changed, 95 insertions(+), 203 deletions(-)
d4a0702 More css colors
 1 file changed, 99 insertions(+), 64 deletions(-)
eb939e7 Use charAt instead of [] in line 1786.
 2 files changed, 0 insertions(+), 0 deletions(-)
7800939 Add README
 1 file changed, 20 insertions(+)
ca120a7 first commit
 6 files changed, 7011 insertions(+)

Не должно быть так много ...

Что сказал @dcramer . Однако это будет не очень полезно, так как я переключался с пробелов на табуляцию по пути. Итак, вам нужно будет сделать что-то вроде этого:

  1. Оформить первую фиксацию JSHint. Преобразуйте его во вкладки.
  2. Оформить последний коммит JSHint.
  3. Diff (1) и (2) с помощью обычного инструмента сравнения.

Лексер был полностью переписан, синтаксический анализатор был существенно изменен, и, честно говоря, я не думаю, что @douglascrockford будет подавать на меня в суд, если я изменю лицензию. Но, тем не менее, я не хочу быть болваном. :-)

@antonkovalyov Я думаю, что обычный diff тоже не будет работать, потому что структура кода кардинально изменилась. Я ищу возможный способ определить, какие части кода принадлежат первоначальному автору.

Изучение возможностей, таких как обезьяна или стиль проверки http://checkstyle.sourceforge.net/config_duplicates.html.

После извлечения всего JS-кода из этой головы: 40e3f73 (последняя фиксация git log --author="Douglas Crockford" ) и сравнения его со всеми js из корня src / *. Js текущего мастера.

Пропускаем их через следующий анализатор сходства:

Similarity Analyser 2.3.34 - http://www.harukizaemon.com/simian
Copyright (c) 2003-2013 Simon Harris.  All rights reserved.
Simian is not free unless used solely for non-commercial or evaluation purposes.

И извлекая строки кода, которые, по-видимому, присутствуют как в 40e3f73, так и в текущем мастере, кажется, что это единственные строки кода, оставшиеся в этом репозитории, которые были написаны Дугласом Крокфордом:

                lbp: p,
                value: s
            };
        }
        return x;
    }

    function delim(s) {
        return symbol(s, 0);
    }


----------------------
----------------------
        identifier: true,
        nud: function () {
            var v = this.value,
                s = scope[v],
                f;

            if (typeof s === "function") {

----------------------
----------------------
        member = {};
        membersOnly = null;
        implied = {};
        inblock = false;
        lookahead = [];
        warnings = 0;
        unuseds = [];

----------------------
----------------------
    confirm: false,
    console: false,
    Debug  : false,
    opera  : false,
    prompt : false
};


----------------------
----------------------
        }

        if (!a) {
            a = [line];
            implied[name] = a;
        } else if (a[a.length - 1] !== line) {
            a.push(line);
        }
    }

----------------------
----------------------
                char = this.peek(index);
                if (!isDecimalDigit(char)) {
                    break;
                }
                value += char;
                index += 1;
            }
        }

----------------------
----------------------
    }

    function warningAt(m, l, ch, a, b, c, d) {
        return warning(m, {
            line: l,
            from: ch
        }, a, b, c, d);
    }

    function error(m, t, a, b, c, d) {
        warning(m, t, a, b, c, d);
    }

----------------------
----------------------
        };
        return x;
    }

    function type(s, f) {
        var x = delim(s);
        x.type = s;
        x.nud = f;
        return x;
    }


----------------------
----------------------
                                    case '<':
                                        if (xmode === 'script') {
                                            c = s.charAt(l);
                                            if (c === '!' || c === '/') {
                                                warningAt(
"HTML confusion in regular expression '<{a}'.", line, from + l, c);
                                            }
                                        }

----------------------
----------------------
            Object              : false,
            parseInt            : false,
            parseFloat          : false,
            RangeError          : false,
            ReferenceError      : false,
            RegExp              : false,
            String              : false,
            SyntaxError         : false,

----------------------
----------------------
            Function            : false,
            hasOwnProperty      : false,
            isFinite            : false,
            isNaN               : false,
            JSON                : false,
            Math                : false,
            Number              : false,
            Object              : false,

----------------------
----------------------
    Boolean            : false,
    Date               : false,
    decodeURI          : false,
    decodeURIComponent : false,
    encodeURI          : false,
    encodeURIComponent : false,
    Error              : false,
    "eval"             : false,
    EvalError          : false,

----------------------
----------------------
            onbeforeunload  : true,
            onblur          : true,
            onerror         : true,
            onfocus         : true,
            onload          : true,
            onresize        : true,
            onunload        : true,
            open            : false,
            opener          : false,
            Option          : false,

----------------------
----------------------
        }
    }

    // We need a peek function. If it has an argument, it peeks that much farther
    // ahead. It is used to distinguish
    //     for ( var i in ...
    // from
    //     for ( var i = ...

    function peek(p) {
        var i = p || 0, j = 0, t;

        while (j <= i) {
            t = lookahead[j];
            if (!t) {
                t = lookahead[j] = lex.token();
            }
            j += 1;
        }
        return t;
    }

    // Produce the next token. It looks for programming errors.

    function advance(id, t) {
        switch (state.tokens.curr.id) {
        case "(number)":

----------------------
----------------------
            Option          : false,
            parent          : false,
            print           : false,
            removeEventListener: false,
            resizeBy        : false,
            resizeTo        : false,
            screen          : false,
            scroll          : false,
            scrollBy        : false,
            scrollTo        : false,
            setInterval     : false,
            setTimeout      : false,

----------------------
----------------------
            loadClass   : false,
            print       : false,
            quit        : false,
            readFile    : false,
            readUrl     : false,
            runCommand  : false,
            seal        : false,
            serialize   : false,
            spawn       : false,
            sync        : false,
            toint32     : false,
            version     : false
        },


----------------------
----------------------
                    name: n,
                    line: implied[n]
                });
            }
        }

        if (implieds.length > 0) {
            data.implieds = implieds;
        }

        if (urls.length > 0) {
            data.urls = urls;
        }

        globals = Object.keys(scope);
        if (globals.length > 0) {
            data.globals = globals;
        }

        for (i = 1; i < functions.length; i += 1) {
            f = functions[i];
            fu = {};

            for (j = 0; j < functionicity.length; j += 1) {
                fu[functionicity[j]] = [];
            }


----------------------

Это довольно банальная величина.

Я не знаю, как лучше поступить здесь. Думаю, стоит обратиться за помощью к профессиональному юристу.

Кстати, это 195 строк кода в проекте, который содержит более 9000 строк кода.

Возможно, я понятия не имею, что здесь происходит, но я не могу представить, чтобы jshint переписал 8800 строк jslint.

Я повторно запустил обезьяну с порогом 2 (это означает, что также будут отображаться блоки с меньшим количеством похожих строк), и я получил 708 повторяющихся строк.

@dcramer, что бы вы посоветовали сделать по поводу рефакторинга кода Крокфорда из jshint или изменения лицензии?

@hellais Я бы посоветовал поговорить с юристом, так как думаю, что все остальное, скорее всего, направит пистолет прямо в несколько футов.

Легкий ответ на этот вопрос состоит в том, что нам нужно перейти от парсера pratt к esprima.

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

Это было бы значительно проще и привело бы к нулевому риску для
кодовая база. Попытка провести рефакторинг кода из-за маленькой глупой фразы в
лицензия кажется немного завышенной.
22 августа 2013 г. в 19:01 «Джош Перес» [email protected] написал:

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

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/jshint/jshint/issues/1234#issuecomment -23135309
.

Я почти уверен, что Дугласа уже спрашивали об этом раньше, и он отказался повторно лицензировать его. Заглянув в него, я обнаружил, что он шутит о том, как он получает письма от юристов о подобном пункте в лицензии JSON http://dev.hasenj.org/post/3272592502/ibm-and-its-minions. Похоже, что кто-то из юридического отдела Debian отправил ему электронное письмо с вопросом об этом, и он ответил, что если вам не нравится лицензия, не используйте ее: http://www.mail-archive.com/debian-legal%40lists. debian.org/msg40718.html

Для вас это просто «маленькая глупая фраза», но эта маленькая глупая фраза может быть определяющим фактором, можно ли использовать программу или нет. Лицензии являются юридически обязательными документами, и, учитывая, что нет юридического определения того, что является злом, а что нет, это практически означает, что невозможно узнать, разрешено ли какое-либо конкретное использование кода в соответствии с лицензией. Потому что вы не можете знать, можно ли использовать код, поскольку лицензированные компании (и такие организации, как Debian) просто откажутся от его использования.

К сожалению, это обычная проблема, и это очень плохо, потому что я думаю, что
люди, желающие творить зло, не заботятся о лицензии ....

Однако иногда автор соглашается изменить свое мнение, в основном, если мы объясним
ему это блокирует многие другие программы, использующие его программное обеспечение.

Последний запрос, кажется, был несколько лет назад, может быть, это повторная попытка и
опять таки....

23.08.2013 Дональд Стаффт [email protected]

Я почти уверен, что Дугласа уже спрашивали об этом раньше, и он
отказался переоформлять лицензию. Глядя на это, я обнаружил, что он шутит о том, как он
получает письма от юристов о подобном пункте в лицензии JSON
http://dev.hasenj.org/post/3272592502/ibm-and-its-minions. Кажется
также кто-то из юридического отдела Debian написал ему по электронной почте, чтобы спросить об этом и его
ответ был, если вам не нравится лицензия, не используйте ее:
http://www.mail-archive.com/debian-legal%40lists.debian.org/msg40718.html

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

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/jshint/jshint/issues/1234#issuecomment -23143534
.

Идентификатор ключа gpg: 4096R / 326D8438 (keyring.debian.org)

Отпечаток ключа = 5FB4 6F83 D3B9 5204 6335 D26D 78DC 68DB 326D 8438

О, старый добро / зло ... IANAL, но для меня это имеет смысл -> http://www.mail-archive.com/debian-legal%40lists.debian.org/msg40728.html

Вы не можете спорить о добре / зле ни в каком суде, если термины не определены.

@douglascrockford, почему бы вместо этого не включить последний бит в лицензию; «... это программное обеспечение не может быть использовано для расследования, пыток и убийств патриотов, осмеливающихся сопротивляться тиранам». <- из общего http: //good/considered_evil.txt
: +1: сформируйте меня!

@douglascrockford: Вы когда-нибудь пытались подать в суд на кого-то, кто использовал ваше программное обеспечение для зла?

Бьюсь об заклад, АНБ использует JSHINT для своих проектов javascript, и я думаю, что они делают довольно много зла. Похоже, ваша лицензия не очень эффективно помешала им сделать это ...

Легкий ответ на этот вопрос состоит в том, что нам нужно перейти от парсера pratt к esprima.

На данный момент JSHint охватывает больше JavaScript (стабильные части ES6, расширения, специфичные для Mozilla) и более отказоустойчив, чем Esprima, поэтому в ближайшем будущем переход не произойдет.

Бьюсь об заклад, АНБ использует JSHINT для своих проектов javascript.

:-)

@hellais Вы читали его ссылку?

Это совсем не эффективно, но, по крайней мере, заявляет о моем намерении.

ха-ха

В любом случае, я отправил электронное письмо на адрес @douglascrockford с просьбой дать явное разрешение на удаление этого предложения из JSHint. Если он даст, я уберу его. Если он этого не сделает, сотрудникам Debian придется установить JSHint через NPM или найти другой обходной путь.

Честно говоря, я устаю от этих разговоров с неправдивым открытым исходным кодом. Из всего, что мне нужно делать с JSHint, эта проблема, вероятно, наименее важна.

@OscarGodson Ссылка кажется намеренно недоступной публично. Я получаю страницу с ошибкой Google+ («Не удалось найти этот пост»), что приблизительно соответствует 404.

Дело закрыто, лицензия остается прежней:

Антон, есть другие способы обойти эту проблему, которые позволят Debian иметь пакет, содержащий JSHint, без дополнительных усилий для вас. Другие разработчики также могут добровольно помочь выполнить эту работу для вашего проекта.

В качестве примера, если вы хотите, вы можете запросить Google Summer of Code (студент GSoC0 в 2014 году, и студент может реорганизовать этот код чистым способом. Debian и другие крупные проекты имеют большой опыт работы со схемами, такими как GSoC, и ваш project хорош для всего остального нашего JavaScript, у вас будут очень веские основания для этого.

Первое, что необходимо прояснить, - сколько кода действительно общего между JSHint и JSLint? Например, при рефакторинге вы копировали и вставляли целые фрагменты кода из JSLint в другие исходные файлы? Или другие исходные файлы были разработаны независимо без использования функции вырезания и вставки? Если вы действительно использовали подход «вырезать и вставить», то вам необходимо включить «без зла» термины @douglascrockford в текст лицензии для всех этих файлов, и все они должны будут соавтора .

Если это только JSHint.js, то другие люди могут переписать разделы файла. Как минимум, вы можете избежать внесения каких-либо дополнительных изменений в этот файл и сделать любой новый код в отдельном файле, чтобы новый код не был испорчен предложением "без зла", и для некоторых это будет проще. добровольно поработайте над этим в будущем, так как им будет меньше «никакого злого» кода для рефакторинга.

Суть в том, что @douglascrockford должен решить, действительно ли для него важно, чтобы его работа была признана, и чтобы такие проекты, как Debian и JSHint, распространяли его обоснованные опасения по поводу стиля программирования. Альтернатива состоит в том, что люди просто действуют так, как будто его проекта не существует, и в конечном итоге появится что-то, что полностью заменит его, и его идеи исчезнут (это, безусловно, случилось с более крупными проектами, просто подумайте о том, как быстро исчезли WordPerfect или Lotus 123).

@dpocock > Первое, что нужно прояснить, - сколько кода действительно общего между JSHint и JSLint?

https://github.com/jshint/jshint/issues/1234#issuecomment -23129904

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

@antonkovalyov , очевидно, знает лучше, но в целом я очень сомневаюсь, что это большая проблема для проекта. Из 1244 вопросов мне кажется, что я нашел только этот билет, в котором говорится, что это проблема.

26.08.13, 18:28 Оскар Годсон написал:

@dpocock > Первое, что нужно прояснить, - сколько кода действительно общего между JSHint и JSLint?

https://github.com/jshint/jshint/issues/1234#issuecomment -23129904

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

@antonkovalyov , очевидно, знает лучше, но в целом я очень сомневаюсь, что это большая проблема для проекта. Из 1244 вопросов мне кажется, что я нашел только этот билет, в котором говорится, что это проблема.

Широко известно, что лицензии «без зла» не считаются бесплатными:

http://www.gnu.org/licenses/license-list.html#JSON

Тот факт, что есть только один билет об этом, просто означает, что
те из нас, кого это беспокоит, не настолько глупы, чтобы спамить вам
со 100 билетами примерно такого же выпуска

Это отразится на остальной части вашего проекта:

а) если он не упакован, он подвергается меньшему воздействию. Если он упакован в
Debian и Fedora, он становится более заметным, чем конкурирующие
решения. Это может привлечь больше участников в ваш проект и помочь
вы решите некоторые из этих 1244 проблем.

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

c) более крупные проекты (например, кто-то делает универсальную IDE или что-то в этом роде)
не могут безопасно включать ваш код, если они не скопируют эти условия лицензии в
их общая лицензия на продукт. Эти потенциальные пользователи также могут быть
потенциальные участники: но они вполне могут вложить свои усилия в аналогичные
проекты с более стандартными лицензиями (или даже изобретение колеса заново),
так что есть больше дублирования и фрагментации

Я начал петицию, чтобы попросить Крокфорда сменить лицензию, пожалуйста, подпишите ее: https://www.change.org/petitions/douglas-crockford-remove-the-not-evil-clause-from-your-license-because- это-зло-само по себе

ветка master (3.x), похоже, имеет переписанный jshint.js, поэтому можем ли мы сказать, что это больше не производная работа?

В проекте Eclipse Orion используется копия jslint, где Дуг дал нам разрешение на использование лицензии, в которой нет надписи «Программное обеспечение должно использоваться во благо, а не во зло». пункт.

У нас есть снимки состояния jslint за 2010-04-06, 2010-12-14 и 2011-12-21.

Глядя на историю использования jshint - 2011-01-09, может быть хорошая возможность найти то, что вы хотите.

https://github.com/eclipse/orion.client/tree/master/lib/jslint

Спасибо @skaegi!

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

25.09.14 в 22:03 Саймон Кэги написал:

В проекте Eclipse Orion использовалась копия jslint, где у Дуга
дали нам разрешение на использование лицензии, которая не имеет
Программное обеспечение должно использоваться во благо, а не во зло ».

У нас есть снимки состояния jslint для 2010-04-06, 2010-12-14 и
2011-12-21.

Если посмотреть на историю использования jshint - 09.01.2011, возможно,
быть хорошей возможностью найти то, что вы хотите.

https://github.com/eclipse/orion.client/tree/master/lib/jslint

Не могли бы вы переслать копию электронного письма Дуга, дающего это разрешение?
или зарегистрируйте его в своем репозитории?

Спасибо @dpocock - Да, я пытаюсь убедиться, что мы все делаем правильно, так что это может занять некоторое время. Я считаю, что оно того стоит, поскольку эта проблема стоила мне много потраченных впустую часов. (см. http://www.youtube.com/watch?v=-C-JoyNuQJs&feature=player_detailpage#t=2480s)

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

26.09.14 в 20:05 Саймон Кэги написал:

Спасибо @dpocock https://github.com/dpocock - Да, я пытаюсь сделать
уверен, что мы здесь все делаем правильно, так что это может занять немного времени
времени. Я считаю, что оно того стоит, поскольку эта проблема стоила мне
лично много потраченных впустую часов. (видеть
http://www.youtube.com/watch?v=-C-JoyNuQJs&feature=player_detailpage#t=2480s
)

Я не уверен, чем могу поделиться, но проверю с помощью Eclipse
Адвокаты Фонда по интеллектуальной собственности, чтобы убедиться, что все в порядке и
доложить.

В идеале это была бы ссылка на сообщение в списке рассылки или копия
прямое электронное письмо от мистера Крокфорда со всеми заголовками и т. д.

В проекте Eclipse Orion используется копия jslint, где Дуг дал нам разрешение на использование лицензии, в которой нет надписи «Программное обеспечение должно использоваться во благо, а не во зло». пункт.

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

@ летучая овца, да, это план

Обновление - Фонд Eclipse одобрил мой проект по распространению JSLint 2011-01-09 - (См. Https://github.com/eclipse/orion.client/blob/master/lib/jslint/jslint-2011-01-09 .js)

Соглашение между Дугом и фондом Eclipse является частным, поэтому я не имею к нему доступа или могу поделиться. Тем не менее, я работал напрямую с командой Eclipse Foundation IP для этого утверждения, описывая то, что я пытался сделать, и снова попросил повторного подтверждения того, что дистрибутив Eclipse может вносить поправки в лицензию, удалив следующую фразу - «Программное обеспечение
должны использоваться во благо, а не во зло ". Запрос был рассмотрен и одобрен. Я надеюсь, что фонд провел здесь должную осмотрительность. (Подробнее здесь https://www.eclipse.org/org/#IP%20Management)

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

@skaegi еще раз спасибо за вашу работу над этим :)

Блин, @skaegi,: muscle:

@skaegi Если Eclipse Foundation публикует копию исходного файла jslint.js с подлинным текстом лицензии с открытым исходным кодом в верхней части файла (либо чистая лицензия MIT, либо текст лицензии Eclipse), тогда никому не нужно знать условия По соглашению между @douglascrockford и Eclipse Foundation, люди могут просто взять этот файл, распространяемый Eclipse, и распространить его в своих проектах, не отравляя собственные лицензии.

Люди, распространяющие его таким образом, вероятно, должны включить комментарий в файл с URL-адресом, с которого они его получили, на сайте Eclipse.

Просто указать на одобренный Eclipse проект, содержащий копию файла, - это не то же самое - вполне возможно, что он был просто пропущен из виду по ошибке. То же самое время от времени происходило в Debian, Ubuntu и Fedora, а затем вредоносный пакет удалялся, как только кто-то его заметил.

Спасибо @dpocock , это хороший отзыв. Описанная вами ошибка произошла и в Eclipse, и с ней сложно справиться.

Если разработчики хотят, чтобы URL-адрес Eclipse Foundation был включен в комментарий, чтобы было понятно, откуда взялась эта копия, они могут использовать:
http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/tree/lib/jslint/jslint-2011-01-09.js

Этот URL-адрес должен быть стабильным, поскольку файл представляет собой снимок того, что было одобрено. Я бы предпочел, чтобы люди использовали этот первый URL, а не http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/tree/lib/jslint/jslint-2011-01-09.js? id = bfe8b59bd463de6bc330d797f0fbf29856178364, который является ссылкой на конкретный коммит, но это также возможно.

Чтобы избежать опасений по поводу того, что это было ошибкой или упущенным из виду, следует ссылаться на Eclipse CQ 8747 (где CQ - это вопросник для участия), где записывается запрос на распространение и обсуждение с командой Eclipse IP. Поскольку некоторые из запросов CQ могут содержать «плохие» IP-адреса, они становятся видимыми только для коммиттеров Eclipse, однако связанный URL для этого конкретного запроса - http://dev.eclipse.org/ipzilla/show_bug.cgi?id=8747, а окончательный статус утвержден. Помимо этого, любые опасения по поводу достоверности распределения и процесса IP, вероятно, лучше всего решать с командой Eclipse Foundation по IP.

Это покрывает ваши точки зрения? Вы можете придумать что-нибудь еще?

@skaegi URL-адрес https://dev.eclipse.org/ipzilla/show_bug.cgi?id=8747 находится за логином

человек. уууу. это круто.

@rwaldron да, к сожалению, вам нужно быть коммитером Eclipse, чтобы получить доступ к этой ссылке (это то, что я пытался сказать в комментарии выше). Возможно, поделиться этой ссылкой было не очень полезно, извините.

CQ не вызвал споров - я попросил разрешения на использование конкретного снимка jslint и приложил код, объяснил, почему мне нужна эта версия, а также попросил еще раз подтвердить, что нам разрешено вносить поправки в лицензию. Чтобы быть уверенным вдвойне, я также поговорил с командой Eclipse IP, чтобы убедиться, что все в порядке, что также задокументировано в CQ. Через несколько дней запрос был одобрен.

@skaegi Я просто пытался перебазировать нашу кодовую базу на версию бесплатного программного обеспечения, которой вы поделились, но я думаю, что обнаружил проблему. Антон изначально разветвил JSHint из версии JSLint, опубликованной 09.01.2011 (см. Коммит здесь ). После внесения некоторых изменений он повторно применил изменения к версии JSLint, опубликованной 16 декабря 2010 г. (см. Коммит здесь ). Это означает, что нам действительно нужно начать с бесплатной версии кода, опубликованной 16 декабря. У вас есть такая версия, которой вы можете поделиться?

У нас нет 2010-12-16, но есть 2010-12-14.
Затмение - http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/tree/lib/jslint/jslint-2010-12-14.js
Github (зеркало) - https://github.com/eclipse/orion.client/blob/master/lib/jslint/jslint-2010-12-14.js

Здесь отсутствует одна фиксация, показанная здесь - https://github.com/douglascrockford/JSLint/commit/caa8885a37afd6895e522409f7889d9333ff6dec

Было бы хорошо знать, актуальна ли эта логика вообще, как будто это не так, тогда я бы предложил пересмотреть основу на 2010-12-14 и покончить с этим.

У нас также есть дистрибутив 2011-01-09 (упомянутый выше), который имеет вышеупомянутую логику.
https://github.com/eclipse/orion.client/blob/master/lib/jslint/jslint-2011-01-09.js#L2711
https://github.com/eclipse/orion.client/blob/master/lib/jslint/jslint-2011-01-09.js#L2712

Итак, вы можете создать законную производную, которая будет использовать обе версии в качестве источников, но в этот момент создается впечатление, что мы играем в игры. Я могу вернуться и попросить одобрения на 16 декабря 2010 г., но это, вероятно, займет немного больше времени, чем в прошлый раз. Я действительно думаю, что оно того стоит, если это то, что нам нужно.

Итак, @jugglinmike , пожалуйста, попробуйте 2010 года , но если это просто не сработает, я начну процесс на стороне Eclipse, чтобы получить дистрибутив на 2010 года.


Просто добавьте URL-адрес стабильной ветки на github с исходным кодом, указанным выше, поскольку мы теперь не используем jslint в текущем выпуске и удаляем его из мастера.

https://github.com/eclipse/orion.client/tree/stable_20150803/lib/jslint

Хорошо, я выполнил перебазирование; он доступен в ветке master-free моего форка .

Беседуя с @skaegi , я узнал, что Eclipse ведет динамический журнал интеллектуальной собственности по этому URL-адресу: https://www.eclipse.org/projects/ip_log.php?projectid=eclipse.orion

Это показывает состояние указанных CQ: CQ 4745 [JSLint 2010-12-15] и CQ 8747 [JSLint 2011-01-09].

Проект Orion выпустит версию 7.0 в среду, 29 октября. Саймон предложил опубликовать статический документ для этого выпуска. Мои вопросы к сопровождающим : ждать ли публикации этого документа? Если да, не хотите ли вы, чтобы я снова перебазировал в это время, чтобы ссылаться на статический URL-адрес журнала IP из соответствующих коммитов?

Обзор

Я вставил три коммита в историю JSHint :

Наконечник каждой ветки отличается только лицензией:

$ git diff master
diff --git a/src/jshint.js b/src/jshint.js
index d31a2b1..53f49f1 100644
--- a/src/jshint.js
+++ b/src/jshint.js
@@ -1,8 +1,9 @@
 /*!
  * JSHint, by JSHint Community.
  *
- * This file (and this file only) is licensed under the same slightly modified
- * MIT license that JSLint is. It stops evil-doers everywhere:
+ * Licensed under the MIT license.
+ *
+ * JSHint is a derivative work of JSLint:
  *
  *   Copyright (c) 2002 Douglas Crockford  (www.JSLint.com)
  *
@@ -16,8 +17,6 @@
  *   The above copyright notice and this permission notice shall be included
  *   in all copies or substantial portions of the Software.
  *
- *   The Software shall be used for Good, not Evil.
- *
  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

... и (конечно) все тесты проходят:

$ npm test

(reporter output intentionally omitted)

OK: 648 assertions (8769ms)

Детали процесса

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

Антон включил код из JSLint два раза после начальной вилки - эти коммиты применяются непосредственно перед тем, как он это сделал в последний раз. Фиксация в ветке master сегодня называется «Кодовая база JSLint возвращена в редакцию 2010-12-16 и повторно применены мои изменения». В своей вилке я модифицировал эту фиксацию, чтобы включить _только_ повторное применение специфичных для JSHint изменений, и соответственно обновил строку темы .

Таким образом, соответствующая история в master выглядит так:

28c5235 2011-01-23 21:23:34 -0800 Anton Kovalyov Reverted JSLint codebase to the 2010-12-16 edition and re-applied my changes
026aaf8 2011-01-23 18:51:20 -0800 Anton Kovalyov Added JSHint Community to the license block

... противопоставил соответствующую историю в master-free :

dc95c3b 2011-01-23 21:23:34 -0800 Anton Kovalyov Re-applied my changes
945e169 2014-10-21 11:15:49 -0400 Mike Pennisi   Incorporate upstream change
e10eef6 2014-10-21 10:55:41 -0400 Mike Pennisi   Substitute JSHint for Free Software version
707b0d8 2014-10-21 10:54:25 -0400 Mike Pennisi   Revert codebase to JSHint 2010-12-14 version
026aaf8 2011-01-23 18:51:20 -0800 Anton Kovalyov Added JSHint Community to the license block

Конфликты слияния действительно возникали в коммитах, которые изменили представление лицензии. Это включает:

  • "Добавить лицензию в README"
    master
    master-free ,
  • «Добавлена ​​ЛИЦЕНЗИЯ и ВНЕДРЕНИЕ. Обновлен README»
    master
    master-free
  • «Преобразуйте все пробелы в табуляции».
    master
    master-free
  • «Нет проблем: табуляция на пробелы»
    master
    master-free

Это было достигнуто путем "обучения" инструмента git rerere с помощью сценария rerere-train.sh и выполнения следующей команды:

$ git rebase --keep-empty --preserve-merges newbase

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

: бум:

Вот ссылка на Orion 7.0 Review и IP Log - увлекательное чтение.
https://projects.eclipse.org/projects/eclipse.orion/releases/7.0/review
https://projects.eclipse.org/sites/default/files/eclipse.orion-7.0-iplog_0.html

Он показывает, что CQ 4745 [JSLint 2010-12-15] и CQ 8747 [JSLint 2011-01-09] являются утвержденной частью нашего выпуска, которая, надеюсь, замыкает цикл.

Есть какие-нибудь движения по поводу этого слияния?

@dragorosson Это больше, чем техническая проблема; обеспечение того, чтобы все было честно, занимает некоторое время. Спасибо за интерес.

Большое спасибо за работу над этой проблемой, я хочу получить это в Fedora. Что еще нужно сделать?

Лучший способ подтвердить, что мы все еще работаем над этим, - это проверить мою ветку master-free - я бы точно не стал синхронизировать ее, если бы не собирался ее использовать!

@ piotr1212 В настоящее время нам нужно подтвердить изменение с некоторыми из предыдущих участников. Похоже, вы сопровождаете RPM - это правильно?

Спасибо за обновление. Я просто буду мучительно ждать;)
И да, я сопровождаю пакет для Fedora / EPEL, есть много модулей nodejs, которые зависят от jshint и не могут быть упакованы сейчас ...

Я использую @ piotr1212 - это заблокировало некоторые инструменты в Debian, которые я хочу увидеть. давайте удалим это несвободное предложение!

Я хотел бы продвигать эту проблему и призвать всех участников не забывать наших государственных служащих в АНБ или GCHQ, которые поддерживают части всеобъемлющей системы наблюдения, написанные на JavaScript. Чистый код для всех!

Я подписал CLA и призываю других сделать то же самое.

Как любопытство, однажды у меня была возможность попросить Говарда Зинна дать определение злу. Он, однако, огрызнулся мне, заявив, что если бы я не знал, что такое зло в моем возрасте, то, конечно, никогда не узнал бы. После долгих лет размышлений над этим утверждением Зинн, конечно, был прав - и быть ошибочно хорошим - это лучшее, на что я могу надеяться.

Будет ли обновлена ​​и эта лицензия? https://github.com/jshint/jshint/blob/master/src/jshint.js#L19

@thejameskyle Это единственная лицензия, которую нужно изменить. Мы обязательно обновим его, как только сможем

Только что нашел старую копию jshint.js, которая вошла в проект Drupal. У меня проблемы с отслеживанием этой проблемы. Убирается ли пункт «Добро, а не зло»? Действия в https://github.com/webjars/webjars/issues/1127 заставляют меня думать, что этот пункт останется.

Лучший способ подтвердить, что мы все еще работаем над этим, - это проверить мою ветку master-free - я бы точно не стал синхронизировать ее, если бы не собирался ее использовать!

@jugglinmike Я прочитал этот ответ в первый раз, когда вы разместили его в ответ на @ piotr1212 еще в январе, но я не искал, почему кто-то будет работать над тем, чтобы оператор AND работал должным образом в POM, если вы объединяете это ... так что Я спросил. Я очень надеялся на> обновление и <snark.

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

ТАК ЧТО СПАСИБО ТЕБЕ! Такие неисполнимые, нестандартные положения о лицензировании невероятно непродуктивны.

Хотя я виноват в своей доле подобных ответов, вы должны знать, насколько неприятно это откладывать для тех, кто не знаком с вашим проектом.

Поскольку в README.md ветки нет ничего, описания, открытого PR с комментариями или в этом выпуске, указывающего, что еще нужно сделать, люди будут продолжать периодически спрашивать, пока это не будет объединено.

Если вы собираетесь использовать шаблонный ответ на любой вопрос, я бы предложил некоторые изменения. "Я не собирался его использовать!" is! = "мы не собирались его объединять". Было бы не так сложно сказать что-то вроде ...

_Если https://github.com/jugglinmike/jshint/tree/master-free обновляется, мы активно работаем над решением этой проблемы. Ограниченные ресурсы не позволяют нам публиковать обновления статуса так часто, как нам хотелось бы, но эта проблема будет оставаться открытой до тех пор, пока не будет удалено условие «Хорошо, а не зло».

Этот файл не был существенным для проекта Drupal, поэтому он был удален, но эта проблема становится отличным примером того, как может быть изменена действительно открытая и проверенная лицензия. Дайте мне знать, если я могу что-нибудь сделать, чтобы решить эту проблему.

Я не собирался быть пассивно-агрессивным. Я интерпретировал «У меня проблемы с отслеживанием этого вопроса» как «Я пропустил ваш ответ среди всех других обсуждений». Я ценю ваше предложение для более полного объяснения и согласен с тем, что это улучшение. Я дам более заметный комментарий, посвященный этому сообщению.

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

Проверка статуса этого усилия

Если https://github.com/jugglinmike/jshint/tree/master-free обновляется, мы активно работаем над решением этой проблемы. Ограниченные ресурсы не позволяют нам публиковать обновления статуса так часто, как нам хотелось бы, но эта проблема будет оставаться открытой до тех пор, пока не будет удалено условие «Хорошо, а не зло».

@jugglinmike, прошло около 11 месяцев с момента последнего комментария. Я хотел бы знать текущий статус этой проблемы.

Шутки в сторону? Еще одно «Добро, а не зло». лицензия? Какой в ​​этом смысл? Пожалуйста, выберите настоящую лицензию, одобренную FSF или OSI.

@andreicristianpetcu : вы излишне враждебны, потому что не информированы.

вы знаете, какой jshint был разветвлен? как только вы это сделаете, внимательно прочтите эту ветку, а затем извинитесь за предыдущий комментарий.

@lying-Sheep Я прочитал ветку. Извините за спам.

Есть ли прогресс по этому вопросу? Это мешает нам включить его в Fedora.

Спасибо за проявленный интерес, @eclipseo. Я бы хотел, чтобы JSHint был включен в Fedora! Прямо сейчас мы пытаемся переписать несколько целевых разделов кодовой базы. Я не могу внести свой вклад напрямую, так как знаком с несвободным кодом. То же самое и со многими из наших предыдущих участников, поэтому я искал новых людей, увлеченных бесплатными программами и склонных к JavaScript. Если вы (или кто-либо другой, кто следит за вами) знаете кого-либо, кто отвечает вашим требованиям, пожалуйста, попросите его связаться со мной (либо в этой ветке, либо через мой личный адрес электронной почты).

Ну .... если написано с нуля, неважно, кто это пишет. Это вопрос авторского права, а не патента.

В настоящее время мы не пытаемся переписать с нуля. В своем предыдущем ответе я попытался передать это фразой «несколько целевых разделов кодовой базы».

Каков текущий статус?

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

Только что столкнулся с этой проблемой - вам все еще нужна помощь?

@ajakaja Я! Не могли бы вы написать по адресу [email protected] ?

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

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

Хорошая работа @douglascrockford и сопровождающие проекта.

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

Хорошие новости всем! Мы только что опубликовали JSHint 2.12.0, первую версию, которая полностью лицензируется по лицензии MIT Expact. Подробности о процессе доступны на сайте проекта.

Если кто-то все еще заинтересован в упаковке JSHint для репозитория программного обеспечения, я буду рад помочь!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги