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

37

Я думаю, что это на самом деле юридический вопрос, но это касается программного обеспечения. Я собираюсь включить плагин JS в проект. Комментарии включают в себя:

  • При повторном распространении исходного кода должно сохраняться указанное выше уведомление об авторском праве, этот список условий и следующий отказ от ответственности. * При повторном распространении в двоичной форме должно быть воспроизведено указанное выше уведомление об авторских правах, этот список условий и следующий отказ от ответственности в документации и / или других материалах, поставляемых при распространении.
  1. Использует ли это на моем веб-сайте "перераспределение?"
  2. Если я минимизирую это, чтобы сохранить пропускную способность, я предполагаю, что это удалит все комментарии. Если ответ на вопрос № 1 - да, разве это не означает, что мне по закону не разрешено минимизировать его?

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

Натан Лонг
источник
Это будет на стороне сервера или на стороне клиента? Клиентская сторона - это дистрибуция, а серверная - нет (как правило).
Дэвид Торнли
3
@DavidThornley - я согласен с вашей точкой зрения, но не могу придумать вескую причину, по которой вы все равно минимизируете JS на стороне сервера
Крис Долан

Ответы:

34

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

Например, из документации YUI Compressor :

  + C-style comments starting with /*! are preserved. This is useful with
    comments containing copyright/license information. For example:

    /*!
     * TERMS OF USE - EASING EQUATIONS
     * Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

    becomes:

    /*
     * TERMS OF USE - EASING EQUATIONS
     * Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

Google Closure Compiler сохранит любой блок JavaDoc, в котором есть тег @licenseили@preserve :

С @license:

    /* 
     * TERMS OF USE - EASING EQUATIONS
     * @license Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

    becomes:

    /* 
      TERMS OF USE - EASING EQUATIONS
      Open source under the BSD License.
      Copyright 2001 Robert Penner All rights reserved.
     */

С @preserve:

    /* @preserve
     * TERMS OF USE - EASING EQUATIONS
     * Open source under the BSD License.
     * Copyright 2001 Robert Penner All rights reserved.
     */

    becomes:

    /* 
      TERMS OF USE - EASING EQUATIONS
      Open source under the BSD License.
      Copyright 2001 Robert Penner All rights reserved.
     */
Orbling
источник
О, круто, приятно знать!
Натан Лонг
@ Натан Лонг: Это рекомендуемый подход людьми, которые делают минимизаторы.
Orbling
23

да

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

/** Notice 
  *
  * This file contains works from many authors under various (but compatible)
  * licenses. Please visit http://example.com/notices for more information.
  *
 **/
Джош К
источник
4

На самом деле, почему бы не сохранить уведомление как часть самого шага минификации?

Простейшим способом было бы сначала извлечь уведомление (вручную) и сохранить его где-нибудь. Тогда ваш сценарий минимизации может просто минимизировать JS и затем объединить неизмененное уведомление.

Я ожидаю, что он будет достаточно маленьким, конечно ... если он большой, то ответ Джоша К, вероятно, лучше.

Матье М.
источник
Проблема становится автоматически обнаружение уведомления при строительстве. Еще один момент, который вы затронули, заключается в том, что уведомления могут быть довольно большими и дорогостоящими для повторной загрузки.
Джош К
@ Джош К: я сказал, извлекая извещение вручную . Что касается больших уведомлений, я думаю, что я это тоже покрыл, и в этом случае я согласен, что лучше отделить их.
Матье М.
В частности, я думал о плагине JQuery Easing. если вы посмотрите на источник, то здесь почти вдвое меньше строк условий и положений, чем в коде: gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js Так что в этом случае, если я смогу удалить уведомление, это большая проблема для минимизации.
Натан Лонг
3

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

GPLv3:

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

Вы можете передать работу, основанную на Программе ... в форме исходного кода в соответствии с условиями [приведенного выше раздела].

Лицензия MIT:

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

Лицензии BSD:

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

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

Брайан Гордон
источник