Posso reduzir o Javascript que requer aviso de direitos autorais?

37

Eu acho que essa é realmente uma questão legal, mas está relacionada ao software. Estou prestes a incluir um plugin JS em um projeto. Os comentários incluem:

  • As redistribuições do código-fonte devem manter o aviso de direitos autorais acima, esta lista de condições e o aviso de isenção de responsabilidade a seguir. * As redistribuições em formato binário devem reproduzir o aviso de direitos autorais acima, esta lista de condições e o aviso de isenção de responsabilidade a seguir na documentação e / ou outros materiais fornecidos com a distribuição.
  1. O uso no meu site é "redistribuição"?
  2. Se eu minificar isso para economizar largura de banda, presumo que ele removerá todos os comentários. Se a resposta ao número 1 for sim, isso não implica que eu não tenha permissão legal para reduzi-la?

(Isso fedia, pois eu estava planejando minificar automaticamente todas as JS como parte do processo de implantação.)

Nathan Long
fonte
Isso será do lado do servidor ou do cliente? O lado do cliente é a distribuição, o lado do servidor não (como regra geral).
David Thornley
3
@ DavidThornley - Concordo com o seu ponto de vista, mas não consigo pensar em uma boa razão pela qual você reduziria o JS do lado do servidor de qualquer maneira.
Chris Dolan

Respostas:

34

A maioria dos softwares de minificação possui algum método para deixar um comentário in situ para esse propósito exato.

Por exemplo, na documentação do 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.
     */

O Google Closure Compiler preservará qualquer bloco JavaDoc que contenha @licensea @preservetag ou a tag :

Com @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.
     */

Com @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
fonte
Oh legal, bom saber!
Nathan Long
@ Nathan Long: Esta é a abordagem recomendada pelas pessoas que fazem os minimizadores.
Orbling
23

sim

Com uma ressalva. Você teria que colocar o aviso em outro lugar do site. Normalmente, na página Termos e condições ou Avisos. Você pode fazer isso simplesmente anexando o seguinte ao topo de cada parte do JS que você reduziu (ou simplesmente no topo do único arquivo JS):

/** Notice 
  *
  * This file contains works from many authors under various (but compatible)
  * licenses. Please visit http://example.com/notices for more information.
  *
 **/
Josh K
fonte
4

Na verdade, por que não preservar o aviso como parte da etapa de minificação?

A maneira mais simples seria primeiro extrair o aviso (manualmente) e salvá-lo em algum lugar. Em seguida, seu script de minificação pode apenas minificar o JS e concatenar o aviso inalterado.

Espero que seja pequeno o suficiente, é claro ... se for grande, a resposta de Josh K provavelmente será melhor.

Matthieu M.
fonte
O problema passa a detectar automaticamente o aviso ao criar. Outro ponto em que você tocou é que os avisos podem ser bastante grandes e caros para serem baixados novamente.
Josh K
@ Josh K: eu disse extraindo manualmente o aviso. Quanto aos avisos grandes, acho que também cobri isso; nesse caso, concordo que é melhor separá-lo.
Matthieu M.
Especificamente, eu estava pensando no jQuery Easing Plugin. se você olhar para a fonte, há quase metade das linhas de termos e condições do código: gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js Portanto, nesse caso, se eu puder ' Não remova o aviso, esse é um grande problema para minificação.
Nathan Long
3

Pela minha leitura das licenças, acredito que, para estar totalmente seguro, você precisa incluir o texto completo da licença com qualquer distribuição do software ou de seus trabalhos derivados (incluindo JS minificado). Das principais licenças de código aberto:

GPLv3:

Você pode transmitir cópias textuais do código-fonte do Programa à medida que o recebe, em qualquer meio, desde que você ... forneça a todos os destinatários uma cópia desta Licença junto com o Programa. ...

Você pode transmitir um trabalho baseado no Programa ... na forma de código-fonte sob os termos da [seção acima].

Licença MIT:

O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software.

Licenças BSD:

As redistribuições do código-fonte devem manter o aviso de direitos autorais acima, esta lista de condições e o aviso de isenção de responsabilidade a seguir.

Parece que essa abordagem não está sendo adotada pela maioria das pessoas. Até o Bootstrap oficial e minificado do Twitter contém apenas um pequeno aviso de direitos autorais, portanto você violaria a licença do MIT se a enviasse a seus usuários.

Brian Gordon
fonte